Инструкция if
До сих пор ваши программы выполняли все инструкции одну за другой, сверху вниз. Но часто программе нужно решать, что делать: показать предупреждение, только если пароль слишком короткий, или дать скидку, только если покупатель — студент. Мы принимаем такие решения постоянно: если пойдёт дождь, я возьму зонт.
В C решение записывается с помощью инструкции if:
int temperature = 30;
if (temperature > 25) {
printf("Жарко, наденьте кепку\n");
}
printf("Хорошего дня\n");Программа выведет:
Жарко, наденьте кепку
Хорошего дняВ инструкции if три части:
- ключевое слово
if. Ключевое слово — это слово с особым смыслом в C, поэтому его нельзя использовать как имя переменной; - условие в круглых скобках:
(temperature > 25). Условие — это вопрос, на который можно ответить только «да» (истина) или «нет» (ложь): температура больше 25? Скобки вокруг условия обязательны; - блок кода в фигурных скобках
{ }. Блок выполняется, только если условие истинно.
После блока программа продолжает работу как обычно, поэтому Хорошего дня выводится в любом случае. Если бы temperature было равно 10, условие было бы ложным: программа пропустила бы блок и вывела бы только Хорошего дня.
В условии можно сравнивать с помощью > (больше) и < (меньше), как в математике. Остальные операторы сравнения вы скоро узнаете.
Фигурные скобки обязательны, если в блоке больше одной инструкции. В этом курсе мы пишем их всегда, даже вокруг одной инструкции. Почему, вы увидите в следующем упражнении.
Точки с запятой после ) и после } нет. Если забыть скобки вокруг условия, компилятор сообщит error: expected '(' after 'if'. Куда коварнее точка с запятой после условия:
int temperature = 10;
if (temperature > 25); {
printf("Жарко, наденьте кепку\n");
}Программа выведет:
Жарко, наденьте кепкуА ведь на улице всего 10 градусов. Точка с запятой после скобки завершает всю инструкцию if, и к условию относится только пустая инструкция. Блок в фигурных скобках никак не связан с условием и выполняется всегда. Компилятор лишь выдаёт предупреждение, а предупреждения на этом сайте не показываются. Поэтому, если блок выполняется, хотя не должен, первым делом поищите точку с запятой после условия.
Задание
- 1
Вместо комментария напишите инструкцию
ifс условиемmonitor_price < 4000. В её блоке выведитеКуплю монитор. - 2
Под блоком напишите вторую инструкцию
ifс условиемmonitor_price > 4000, которая выводитСлишком дорого. Запустите программу: она по-прежнему выводит толькоМонитор стоит 3000иКуплю монитор, потому что 3000 не больше 4000, и второй блок пропускается.