Конструкция ветвления

Программа не всегда выполняет один и тот же набор команд. Если число больше порога — вывести одно сообщение, иначе — другое. Для такого выбора в C++ используют if и else.
if проверяет условие. Если условие истинно, выполняется первый блок. Если условие ложно и есть else, выполняется второй блок.
Первый if
#include <iostream>
using namespace std;
int main() {
int dist = 15;
if (dist < 20) {
cout << "stop" << endl;
}
return 0;
}
Условие dist < 20 означает «расстояние меньше 20». Если это правда, программа выводит stop.
if и else
#include <iostream>
using namespace std;
int main() {
int dist = 30;
if (dist < 20) {
cout << "stop" << endl;
} else {
cout << "go" << endl;
}
return 0;
}
Здесь выполнится только один из двух блоков.
Сравнения
| Запись | Смысл |
|---|---|
a == b | равно |
a != b | не равно |
a < b | меньше |
a > b | больше |
a <= b | меньше или равно |
a >= b | больше или равно |
Не путайте = и ==. Один знак = присваивает значение, два знака == сравнивают.
Логические переменные
Логическая переменная имеет тип bool и хранит true или false.
Сначала можно писать условие явно:
#include <iostream>
using namespace std;
int main() {
bool ready = true;
if (ready == true) {
cout << "ready" << endl;
}
return 0;
}
Позже эту запись сокращают:
if (ready) {
cout << "ready" << endl;
}
Обе записи означают одно и то же, но первая понятнее при первом знакомстве.
Несколько вариантов
#include <iostream>
using namespace std;
int main() {
int mode = 2;
if (mode == 1) {
cout << "slow" << endl;
} else if (mode == 2) {
cout << "normal" << endl;
} else {
cout << "unknown" << endl;
}
return 0;
}
Проверки идут сверху вниз. Как только найден подходящий вариант, остальные блоки этой цепочки не выполняются.
Несколько условий
#include <iostream>
using namespace std;
int main() {
int dist = 25;
int speed = 40;
if (dist > 20 && speed < 60) {
cout << "safe" << endl;
} else {
cout << "check" << endl;
}
return 0;
}
&& означает «и»: оба условия должны быть истинны.
if (dist < 10 || speed > 90) {
cout << "alarm" << endl;
}
|| означает «или»: достаточно одного истинного условия.
Блоки и область видимости
Переменная, созданная внутри фигурных скобок, доступна только там.
#include <iostream>
using namespace std;
int main() {
int x = 5;
if (x > 0) {
int y = 10;
cout << y << endl;
}
cout << x << endl;
return 0;
}
После закрывающей скобки переменной y уже нет.
Практика
- Проверьте число
speed: если оно больше100, выведитеtoo fast. - Напишите программу с
ifиelseдля расстоянияdist. - Проверьте переменную
readyсначала черезready == true, затем через короткую записьready. - Сделайте три режима:
slow,normal,fast. - Проверьте два условия через
&&.
Проверьте себя
- Что делает
if? - Когда выполняется блок
else? - Чем
=отличается от==? - Что хранит тип
bool? - Что означает
&&? - Что означает
||?
Сначала ответьте без подсказки. Ответ можно считать полным, если вы:
- формулируете основную мысль своими словами;
- называете важные условия, ограничения или меры безопасности;
- для схемы, кода или расчёта показываете ход решения и ожидаемый результат.
Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.
Словарь статьи
| Термин | Значение |
|---|---|
| ветвление | выбор одной ветви программы |
| условие | выражение, которое даёт true или false |
if | проверка условия |
else | ветвь для ложного условия |
| сравнение | проверка отношения между значениями |
| логический оператор | оператор для объединения условий |
Связанные темы
- Ввод и вывод — ввод значений для проверки.
- Циклы — повторение действий с условиями.
- Функции — условия внутри подпрограмм.
Источники
- C++ Working Draft. Selection statements: https://eel.is/c++draft/stmt.select
- Microsoft Learn. Selection statements: https://learn.microsoft.com/en-us/cpp/cpp/selection-statements-cpp