Условия (if/else/switch) в C++17: подробное руководство
Условия (if/else/switch) в C++
Представь, что ты — капитан космического корабля. Твоя задача — принимать решения: «Если вижу астероид — уклоняюсь, иначе — лечу прямо». В программировании такие решения принимаются с помощью условий. Они позволяют программе выполнять разные действия в зависимости от того, истинно или ложно какое-то утверждение.
Простое условие: if
Самая простая конструкция — это if (с английского — «если»). Если условие в скобках истинно (правдиво), то выполняется код в фигурных скобках {}.
#include <iostream>
using namespace std;
int main() {
int temperature;
cout << "Введите температуру на улице: ";
cin >> temperature;
if (temperature > 25) {
cout << "Сегодня жарко! Иди купаться!" << endl;
}
cout << "Программа завершена." << endl;
return 0;
}
Результат работы:
Ввод: 30
Вывод: Сегодня жарко! Иди купаться!
Программа завершена.
Если ввести 10, то сообщение про жару не появится, а программа сразу выведет «Программа завершена».
Два пути: if-else
Часто нужно выбрать один из двух вариантов. Например: «Если сумма больше 1000 — дай скидку, иначе — не давай». Для этого используется if-else (если-иначе).
#include <iostream>
using namespace std;
int main() {
int age;
cout << "Сколько вам лет? ";
cin >> age;
if (age >= 18) {
cout << "Добро пожаловать во взрослый мир!" << endl;
} else {
cout << "Извините, вход только для взрослых." << endl;
}
return 0;
}
Результат:
Ввод: 20 → Вывод: Добро пожаловать во взрослый мир!
Ввод: 15 → Вывод: Извините, вход только для взрослых.
Много вариантов: if-else if-else
Когда вариантов больше двух, можно использовать цепочку if-else if. Программа проверяет условия по порядку: как только находит истинное — выполняет его блок и выходит из всей цепочки.
#include <iostream>
using namespace std;
int main() {
int score;
cout << "Введите количество баллов (0-100): ";
cin >> score;
if (score >= 90) {
cout << "Оценка: Отлично!" << endl;
} else if (score >= 70) {
cout << "Оценка: Хорошо" << endl;
} else if (score >= 50) {
cout << "Оценка: Удовлетворительно" << endl;
} else {
cout << "Оценка: Неудовлетворительно. Нужно подтянуть знания!" << endl;
}
return 0;
}
Результат:
Ввод: 85 → Вывод: Оценка: Хорошо
Сложные условия: логические операторы
Иногда нужно проверить сразу несколько условий. В C++ для этого есть специальные значки:
&&— «И» (оба условия должны быть истинны)||— «ИЛИ» (хотя бы одно условие истинно)!— «НЕ» (отрицание, меняет истину на ложь)
#include <iostream>
using namespace std;
int main() {
int age;
bool hasTicket;
cout << "Сколько вам лет? ";
cin >> age;
cout << "Есть билет? (1 — да, 0 — нет): ";
cin >> hasTicket;
// И возраст подходит, И билет есть
if (age >= 12 && age <= 65 && hasTicket) {
cout << "Проходите, хорошего просмотра!" << endl;
} else {
cout << "Извините, вход запрещён." << endl;
}
return 0;
}
Выбор из списка: switch
Если нужно сравнить одну переменную с множеством конкретных значений (например, номер дня недели), удобно использовать switch. Он работает быстрее и выглядит аккуратнее, чем длинная цепочка if-else.
#include <iostream>
using namespace std;
int main() {
int day;
cout << "Введите номер дня недели (1-7): ";
cin >> day;
switch (day) {
case 1:
cout << "Понедельник — день тяжёлый" << endl;
break;
case 2:
cout << "Вторник — рабочий день" << endl;
break;
case 3:
cout << "Среда — маленькая пятница" << endl;
break;
case 4:
case 5:
cout << "Скоро выходные!" << endl;
break;
case 6:
case 7:
cout << "Ура, выходные!" << endl;
break;
default:
cout << "Такого дня недели не существует!" << endl;
}
return 0;
}
Важно! В конце каждого блока (кроме последнего) нужно писать break;. Иначе программа «провалится» дальше и выполнит код из следующих case.
Разбор типичной задачи: «Что больше?»
Задача: программа берет два числа и выводит, какое из них больше.
#include <iostream>
using namespace std;
int main() {
int a, b;
cout << "Введите первое число: ";
cin >> a;
cout << "Введите второе число: ";
cin >> b;
if (a > b) {
cout << "Первое число (" << a << ") больше второго (" << b << ")" << endl;
} else if (b > a) {
cout << "Второе число (" << b << ") больше первого (" << a << ")" << endl;
} else {
cout << "Числа равны!" << endl;
}
return 0;
}
Частые ошибки новичков
- Забывают фигурные скобки: если в блоке одна команда, скобки можно не ставить, но лучше всегда ставить — это убережёт от ошибок.
- Путают = и ==: одинарное
=— это присваивание, а двойное==— сравнение. Ошибка:if (x = 5)— это не проверка, а присваивание! - Забывают break в switch: без break программа выполнит все следующие case подряд.
- Неправильный порядок условий: в цепочке if-else if проверяйте сначала самые строгие условия, иначе более общее условие «перехватит» все случаи.
Итоговый пример: «Парк аттракционов»
Программа определяет, в какую зону парка направить посетителя в зависимости от возраста:
- 0-3 года: «Детская комната»
- 4-12 лет: «Детские аттракционы»
- 13-17 лет: «Подростковая зона»
- 18+ лет: «Взрослые аттракционы»
#include <iostream>
using namespace std;
int main() {
int age;
cout << "Введите возраст посетителя: ";
cin >> age;
if (age < 0) {
cout << "Ошибка: возраст не может быть отрицательным!" << endl;
} else if (age <= 3) {
cout << "Ваша зона: Детская комната" << endl;
} else if (age <= 12) {
cout << "Ваша зона: Детские аттракционы" << endl;
} else if (age <= 17) {
cout << "Ваша зона: Подростковая зона" << endl;
} else {
cout << "Ваша зона: Взрослые аттракционы" << endl;
}
return 0;
}
Результат работы:
Ввод: 10 → Вывод: Ваша зона: Детские аттракционы
Ввод: 25 → Вывод: Ваша зона: Взрослые аттракционы
Теперь ты знаешь главное: условия — это способ заставить программу «думать» и принимать решения. Используй if для простых проверок, if-else для выбора из двух вариантов, цепочки if-else if для многих вариантов и switch для проверки одного значения на множество вариантов. Практикуйся — и скоро ты будешь писать программы, которые решают настоящие задачи!