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");
}Jak psát:
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 cmZměň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
10/12