If-else, do-while, switch, operátory Řídící struktury If-else, do-while, switch, operátory
Booleovské výrazy Relační operátory použití: !(a > b) && a != 0 == rovnost != nerovnost && and || or ! not < menší <= menší nebo rovno > větší >= větší nebo rovno použití: !(a > b) && a != 0 Nulová hodnota výrazu znamená FALSE, cokoliv jiného TRUE i jiné výrazy mohou být použity jako booleovské výrazy (i=1), (i++) apod… Jaromír Gloc, GPJP
Operátory Aritmetické operátory a operátory porovnání mají vyšší prioritu, než logické Správně: c >= ’A’ && c <= ’Z’ Možno používat závorky pro změnu priority Zkrácené vyhodnocování zleva: y != 0 && x / y < z je správný výraz /nikdy nedělíme nulou/ x / y < z && y != 0 je špatný výraz /mohli bychomdělít nulou/ Jaromír Gloc, GPJP
Podmíněný výraz – ternární operátor Syntaxe: výraz_podm ? výraz_1 : výraz_2 vyhodnotí se podmínka, je-li splněna vyhodnotí se výraz_1 a vrátí se jeho hodnota, není-li podmínka splněna, vyhodnotí a vrátí se výraz_2 Př: a = (x>y) ? x : y; do a se přiřadí větší z čísel x, y Př: chyba = (x==0) ? “dělíme nulou“ : ““; funguje podobně jako if(výraz_podm) výraz_1 else výraz_2; Jaromír Gloc, GPJP
Příkaz if umožňuje větvení běhu programu některé příkazy se provedou jen když se je splněna určitá podmínka syntaxe: if (výraz_podm) příkaz; jestliže je výraz_podm nenulový, prověď příkaz příkazem může být další příkaz if Př: if (a != 0) if (b != 0) c = 2 / (a *b); Jaromír Gloc, GPJP
Příkaz if – else umožňuje běh programu rozdělit na 2 separátní větve if (výraz_podm) příkaz1; else příkaz2; místo jednotlivých příkazů je možné použít složený příkaz – tj. více příkazů zapsaných do složených závorek {} Jaromír Gloc, GPJP
if – else příklad Př: if (D<0) { printf(”nelze resit”); getchar(); } else { x1 = (-b + sqrt(D))/(2*a); x2 = (-b - sqrt(D))/(2*a); Jaromír Gloc, GPJP
Cyklus kód programu, který se stále opakuje, dokud není splněna nějaká podmínka for cyklus používáme, když přesně víme počet opakování daného kódu do-while cyklus, while cyklus dopředu nelze říci kolikrát se bude muset opakovat break v jakémkoliv okamžiku ukončí cyklus continue kdykoliv ukončí provádění cyklu a jde na nové opakování (vyhodnocení podmínky) Jaromír Gloc, GPJP
Cyklus FOR for (inicializace; podmínka; iterační_výraz) tělo cyklu ; na začátku proběhne inicializace pak se vyhodnotí podmínka, je-li splněna, provede se tělo cyklu. na závěr se provede iterační výraz a opět se vyhodnotí podmínka… nemusí vůbec proběhnout inicializace, podmínka ani iterační_výraz nejsou povinné – nekonečný cyklus Jaromír Gloc, GPJP
Cyklus FOR – příklady for (x = 1; x < 10; x++) { if ((x % 2) != 0) continue; printf("Sude cislo: %i\n", x); } for (;;) { if (x >= 10) break; if ((x % 2) == 0) printf("Sude cislo: %i\n", x); x++; Jaromír Gloc, GPJP
Cyklus DO-WHILE do tělo_cyklu while ( podminka ); na konci vyhodnotí podmínku, je-li splněna, ukončí provádění cyklu, pokud ne, opakuje znovu tělo cyklu proběhne minimálně jednou Jaromír Gloc, GPJP
Cyklus WHILE while ( podminka ) tělo_cyklu; nejprve se vyhodnotí podmínka, je-li splněna provede se tělo cyklu. pak se proces opakuje nemusí proběhnout ani jednou Př: while (1); - nekonečný cyklus Př: int i=0; while (i<10) printf("%i",i++); Jaromír Gloc, GPJP