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