V lekcii č. 4 sme hovorili o tom, ako vytvárať podmienky a ako ich jazyk C vyhodnocuje. V lekcii č. 5 si ukážeme niektoré spôsoby, ako sa to, či nejaká podmienka je alebo nie je splnená dá použiť a zneužiť pre naše účely.
Ak chceme nejaký kus kódu vykonať iba vtedy, keď je splnená podmienka, používa sa na to príkaz if (po slovensky "ak"). Tento príkaz má dve varianty. Jednoduchšia funguje napríklad takto:0.9
char c; printf("Zadaj na vstup pismenko A: "); c = getchar(); if (c != 'A') { printf("Vravel som A !!!\n"); }Za príkazom if nasleduje podmienka uzavretá v zátvorkách. (Pozor! Častá začiatočnícka chyba je, že sa na tie zátvorky okolo podmienky zabudne.) Potom nasleduje kus kódu v kučeravých zátvorkách, ktorý sa vykoná len vtedy, keď je podmienka splnená.0.10
Náš program najprv vypíše výzvu, aby sa zadalo písmenko. Potom sa zavolá funkcia getchar(). Je to prvá funkcia, ktorá dáva nejaký výsledok, s ktorou sme sa zatiaľ stretli. Výsledkom funkcie getchar() je jeden načítaný znak z terminálu. Ten sa vloží do premennej c. Za príkazom if je podmienka, ktorá je splnená vtedy, keď v premennej c nie je 'A'. Takže ak tam človek nedá A, tak mu program vynadá.
Druhá zložitejšia varianta je kombinácia príkazov if -- else ("ak -- inak"). Zase ukážka:
int i; printf("Zadaj cislo: "); scanf("%d", &i); if (i % 2 == 0) printf("%d je parne cislo\n", i); else { printf("%d je neparne\n", i); printf("cislo.\n"); }Na začiatku sa po výzve načíta jedno celé číslo. Za príkazom if je podmienka, ktorá je splnená vtedy, keď je číslo v premennej i párne. (Zvyšok po delení dvoma (i % 2) je rovný nule.) V prípade, že tá podmienka splnená je, vykoná sa kus kódu, ktorý nasleduje tesne po podmienke. (Keďže je to len jeden príkaz, mohli sme vynechať { a }.) V prípade, že podmienka splnená nie je, vykoná sa kód za príkazom else. Keďže sú tam až dva príkazy, sú kučeravé zátvorky nutné!!! Keby ste ich tam nedali, jazyk C by za súčasť príkazu else pokladal iba prvý z nasledujúcich príkazov a druhý by vykonal vždy.)
Úloha č.1 Napíšte program podľa druhej ukážky. Vyskúšajte ako funguje.
Vynechajte kučeravé zátvorky za else, znovu skompilujte a vyskúšajte.
Úloha č.2 Napíšte program, ktorý sa vás spýta, či máte radi programovanie, a podľa vašej odpovede (A alebo N) vám povie niečo duchaplné.
Úloha č.3 Vylepšite program z úlohy č.2 tak, aby v prípade, že neodpoviete ani A ani N oznámil, že dostal neočakávanú odpoveď.
Úloha č.4 S pomocou príkazu if - else napíšte program, ktorý načíta
celé číslo. Ak je toto číslo kladné, tak ho vypíše a inak vypíše nulu.
Riešenie úlohy č.4 sa dá uľahčiť s pomocou podmienených výrazov. Podmienený výraz vyzerá napríklad takto: i > 0 ? i : 0 Na jeho začiatku je podmienka, potom je otáznik, prvá možnosť, dvojbodka a druhá možnosť. Hodnota výrazu sa zistí jednoducho -- pozrie sa, či je podmienka splnená, ak je, vezme sa prvá možnosť a ak nie je, vezme sa druhá. Takže ak je v premennej i kladné číslo, hodnota uvedeného výrazu je i. A ak je v premennej i záporné číslo alebo nula, hodnota výrazu je 0. Úloha č.4 sa teda dá riešiť takto:
int i; scanf("%d",&i); printf("%d\n", i > 0 ? i : 0 );
Úloha č.5 Napíšte program, ktorý načíta dve čísla a vypíše to väčšie z nich. Skúste to spraviť s pomocou podmienených výrazov. (Nepovinná varianta pre frajerov a guruov, môže ostať aj na domácu úlohu: Napíšte program, ktorý načíta tri čísla a vypíše ich od najväčšieho po najmenšie.)
Anino Belan 2003-10-26