Вложенные условия
В блоке может быть любой код, в том числе другая инструкция if. if внутри блока другого if называется вложенным условием. Оно удобно, когда один вопрос имеет смысл только после другого. В кинотеатре, например, мы сначала проверяем, есть ли у посетителя билет, и только потом — сколько ему лет:
bool has_ticket = true;
int age = 15;
if (has_ticket) {
if (age >= 18) {
printf("Приятного просмотра\n");
} else {
printf("Извините, этот фильм только для взрослых\n");
}
} else {
printf("Сначала купите билет\n");
}Программа выведет:
Извините, этот фильм только для взрослыхВнутренняя инструкция if выполняется, только когда has_ticket истинно. Каждый else относится к тому if, блок которого заканчивается скобкой } прямо перед ним: первый — к if (age >= 18), второй — к if (has_ticket). Отступы показывают это с первого взгляда: внутренние блоки сдвинуты ещё на 4 пробела, всего на 8, а каждый else сдвинут так же, как его if.
Вложенные условия часто можно переписать с помощью && и else if. С теми же переменными этот код делает то же самое:
if (has_ticket && age >= 18) {
printf("Приятного просмотра\n");
} else if (has_ticket) {
printf("Извините, этот фильм только для взрослых\n");
} else {
printf("Сначала купите билет\n");
}Программа доходит до else if (has_ticket), только когда первое условие ложно. Если билет есть, это значит, что посетителю нет 18. Ни один способ не ошибочен: выбирайте тот, который легче читается.
Если ни у одной из двух инструкций if нет else, одна инструкция if с && почти всегда понятнее. Эти два условия:
if (has_ticket) {
if (age >= 18) {
printf("Приятного просмотра\n");
}
}делают то же самое, что одно условие с отступом на один уровень меньше:
if (has_ticket && age >= 18) {
printf("Приятного просмотра\n");
}Задание
- 1
Чтобы прокатиться на американских горках, нужно быть не младше 10 лет и ростом не меньше 140 см. Внутри блока
if, под егоprintf, добавьте вложенную инструкциюif: еслиheightне меньше140, выведитеПриятной поездки!, иначе выведитеНужен рост не меньше 140 см. Программа выводит:Возраст: 12, рост: 135 см Возраст подходит Нужен рост не меньше 140 см - 2
Измените
heightна150и запустите программу. Теперь оба условия истинны, поэтому программа выводитВозраст подходитиПриятной поездки!.