5.0 Booleovské výrazy
    Booleovské výrazy jsou výrazy, které vracejí 1, pokud jsou pravdivé, jinak 0.
    Zde je uvedeno pár základních :


5.1.0 Používání výrazů
    Booleovské výrazy se v C, i C++ používají jako všude jinde
    (skoro, není tam žádný then oproti paskalu / basicu), tedy :


if(bool_vyraz) {
    provadene_prikazy; // provede se pokud bool_vyraz je 1
} else {
    jinak; // provede se vždy jindy
}
A pár zkrácení a rad : 5.1.1 Ternární operátor To je taky specialita c-čka, je to jednoduchá rozhodovací struktura, kterou použijete místo if (v určitých případech) - vypadá zhruba takhle : Syntaxe : (bool_výraz)? pravda: nepravda; Udělá to samý jako : if(bool_výraz) pravda; else nepravda; A zhruba použití :

int i, j = 1, k = 2;

i = (j > k)? j : k; // podle bool. výrazu (v závorce) vybere hodnotu
// v i bude největší z obou čísel ("pokud je j větší, než k, pak j, jinak k")
5.1.2 Příkaz Switch Příkaz switch slouží k rozpoznání více možností Syntaxe je následující :

switch (výraz) {
case hodnota_1 :
    prikazy_pro_hodnotu_1;
    break; // vyskočení za znak } (není povinný)
case hodnota_2 :
    prikazy_pro_hodnotu_2;
    break; // vyskočení za znak }
default : // jako else, nepovinný
    prikazy_pro_ostatni_hodnoty;
    break; // vyskočení za znak }
}
Tohle prostě vezme výraz a porovnává ho se zadanýma hodnotama. Pokud žádnou nenajde, skočí na default nebo na konec pokud tam default není. Příkaz break skočí taky na konec. Příklad :

char c;

c = getchar();
switch(c) {
case ' ':
    printf("Mezera \n");
case 'A':
    printf("Acko \n");
    break;
case 'B':
    printf("Bcko \n");
    break;
case 'C':
    printf("Ccko \n");
    break;
default:
    printf("Neco \n");
}
Výstup bude : - pro zadané "A" : "Acko" - pro zadané "B" : "Bcko" - pro zadané "C" : "Ccko" - pro zadané " " : "Mezera" "Acko" - pro cokoli jiného : "Neco" (důvod proč pro mezero vytiskne ještě Acko je, že u mezery chybí break) 5.2 Zkrácené vyhodnocování výrazů Toto je něco, co např. Paskal (alias kozí dech) nebo basic nemá. Znamená to, že když musí platit víc výrazů najednou a nějaký neplatí, další už se netestují. Naopak pokud musí platit aspoň jeden výraz, zase hned jak se najde první co platí, další už se netestují. To hodně urychlí program. Zápis :

if(delitel != 0 && delenec / delitel < konstanta)
    i ++; // nebo cokoli..
Je naprosto správný, protože první výraz delitel != 0 ukončí vyhodnocování dřív, než se začne dělit nulou ... Cvičení : 1) - Napište pomocí ternárního operátoru program, který rozhodne které ze tří zadaných čísel je největší. 2) - Napište program, který seřadí tři zadaná čísla vzestupně. 3) - Napište program, který zjistí zda je zadané číslo liché (použijte modulo %) 4) - Napište program, který vytiskne "+" / "-" pokud je zadané číslo sudé nebo liché. 5) - Napište program, který zjistí zda zadané číslo je 1 nebo 3 nebo 5 a vypíše "A", nebo zda je 2 nebo 4 nebo 6 a vypíše "B" nebo vypíše "nevím" (použijete case) 6) - Napište program, který se zeptá na počet chyb a vypíše : - pokud počet piv je nula - "Nic si nepil" - větší než nula a menší (rovno) než tři - "Pohodička" - větší než tři a menší (rovno) než pět - "V náladě" - větší než pět a menší nebo deset - "Pod stůl" - větší než deset - "Jako puma !" No, to by mohlo stačit. Tak zas příště. -tHE SWINe-
Zpátky