Vnořené podmínky

Blok kódu může obsahovat jakýkoli kód, i další příkaz if. Příkazu if v bloku jiného příkazu if se říká vnořená podmínka. Hodí se, když jedna otázka dává smysl až po jiné. V kině třeba nejdřív zjišťujeme, jestli má návštěvník vstupenku, a teprve potom, kolik mu je let:

bool ma_vstupenku = true;
int vek = 15;

if (ma_vstupenku) {
    if (vek >= 18) {
        printf("Příjemnou zábavu\n");
    } else {
        printf("Promiňte, film je jen pro dospělé\n");
    }
} else {
    printf("Nejdřív si kupte vstupenku\n");
}

Tento kód vypíše:

Promiňte, film je jen pro dospělé

Vnitřní příkaz if se provede, jen když je ma_vstupenku pravda. Každé else patří k příkazu if, jehož blok končí závorkou } těsně před ním: první k if (vek >= 18), druhé k if (ma_vstupenku). Odsazení to ukazuje na první pohled: vnitřní bloky jsou odsazené o další 4 mezery, celkem o 8, a každé else je odsazené stejně jako jeho if.

Vnořené podmínky se často dají přepsat pomocí && a else if. Se stejnými proměnnými dělá totéž tento kód:

if (ma_vstupenku && vek >= 18) {
    printf("Příjemnou zábavu\n");
} else if (ma_vstupenku) {
    printf("Promiňte, film je jen pro dospělé\n");
} else {
    printf("Nejdřív si kupte vstupenku\n");
}

K else if (ma_vstupenku) se program dostane, jen když je první podmínka nepravdivá. Se vstupenkou to znamená, že návštěvníkovi ještě není 18. Ani jeden způsob není špatný: vyberte ten, který se čte lépe.

Když ani jeden ze dvou příkazů if nemá else, je jediný if s && skoro vždy přehlednější. Tyto dvě podmínky:

if (ma_vstupenku) {
    if (vek >= 18) {
        printf("Příjemnou zábavu\n");
    }
}

dělají totéž co jediná podmínka, která má o úroveň odsazení méně:

if (ma_vstupenku && vek >= 18) {
    printf("Příjemnou zábavu\n");
}

Pokyny

Na horskou dráhu smí jen ten, komu je aspoň 10 let a kdo zároveň měří aspoň 140 cm. Do bloku příkazu if pod jeho printf přidejte vnořený příkaz if: pokud je vyska aspoň 140, vypište Užijte si jízdu!, jinak vypište Musíte měřit aspoň 140 cm. Program vypíše:

Věk: 12, výška: 135 cm
Věk je v pořádku
Musíte měřit aspoň 140 cm

Změňte vyska na 150 a spusťte program. Teď jsou pravdivé obě podmínky, a tak program vypíše Věk je v pořádku a Užijte si jízdu!.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

10/12