Перейти к основному содержимому

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

Условие направляет сигнал к одному из вариантов поведения робота

Программа не всегда выполняет один и тот же набор команд. Если число больше порога — вывести одно сообщение, иначе — другое. Для такого выбора в 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 уже нет.

Практика

  1. Проверьте число speed: если оно больше 100, выведите too fast.
  2. Напишите программу с if и else для расстояния dist.
  3. Проверьте переменную ready сначала через ready == true, затем через короткую запись ready.
  4. Сделайте три режима: slow, normal, fast.
  5. Проверьте два условия через &&.

Проверьте себя

  1. Что делает if?
  2. Когда выполняется блок else?
  3. Чем = отличается от ==?
  4. Что хранит тип bool?
  5. Что означает &&?
  6. Что означает ||?
Ориентиры для самопроверки

Сначала ответьте без подсказки. Ответ можно считать полным, если вы:

  • формулируете основную мысль своими словами;
  • называете важные условия, ограничения или меры безопасности;
  • для схемы, кода или расчёта показываете ход решения и ожидаемый результат.

Если один из пунктов объяснить не получается, найдите соответствующую главу статьи, перечитайте её и повторите ответ.

Словарь статьи

ТерминЗначение
ветвлениевыбор одной ветви программы
условиевыражение, которое даёт true или false
ifпроверка условия
elseветвь для ложного условия
сравнениепроверка отношения между значениями
логический оператороператор для объединения условий

Связанные темы

Источники