⚙️ C++

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