← Повернутися до лекцій

Лекція 4: Умовні конструкції (if, else, switch)

У реальному житті ми постійно кажемо: "Якщо піде дощ, я візьму парасольку, інакше — піду в футболці". У С++ ця логіка працює майже так само.

1. Оператори порівняння

Перш ніж писати умови, треба навчитися порівнювати значення. Результатом будь-якого порівняння є true (правда) або false (брехня).

Оператор Значення Приклад (x=5, y=10) Результат
> Більше x > y false
< Менше x < y true
>= Більше або дорівнює x >= 5 true
<= Менше або дорівнює y <= 10 true
== Дорівнює x == 5 true
!= Не дорівнює x != y true

⚠️ Увага! Найпоширеніша помилка:

  • = — це присвоєння (покласти значення в ящик).
  • == — це перевірка на рівність.

Якщо ви напишете if (x = 5), програма не перевірить, чи x дорівнює 5, а зробить його рівним 5, і це завжди буде вважатися "правдою".

2. Конструкція if та else

Це базовий інструмент розгалуження програми.

Найпростіша умовна конструкція — це if. Вона виконує код тільки якщо умова істинна. Якщо потрібно виконати один код при істинній умові, а інший — при хибній, використовуйте else.

Синтаксис:

if (умова) {
    // Код, що виконується, якщо умова правдива (true)
} else {
    // Код, що виконується, якщо умова хибна (false)
}

Приклад: Перевірка повноліття

#include <iostream>
using namespace std;

int main() {
    int age;
    cout << "Скільки вам років? ";
    cin >> age;

    if (age >= 18) {
        cout << "Ласкаво просимо! Доступ дозволено." << endl;
    } else {
        cout << "Вибачте, цей контент тільки для дорослих." << endl;
        cout << "Приходьте через " << 18 - age << " років." << endl;
    }
    return 0;
}

3. Конструкція else if (Багато варіантів)

Що робити, якщо умов більше ніж дві? Наприклад, перевірка оцінки студента.

#include <iostream>
using namespace std;

int main() {
    int score;
    cin >> score;

    if (score >= 90) {
        cout << "Оцінка: А (Відмінно!)" << endl;
    } else if (score >= 75) {
        cout << "Оцінка: В (Добре)" << endl;
    } else if (score >= 60) {
        cout << "Оцінка: С (Задовільно)" << endl;
    } else {
        cout << "Оцінка: F (Незадовільно, на перездачу!)" << endl;
    }
    
    return 0;
}

Програма перевіряє умови зверху вниз. Щойно знаходить правдиву — виконує її блок і виходить з усієї конструкції.

4. Логічні оператори (Об'єднання умов)

Іноді треба перевірити декілька речей одночасно. Наприклад: "Якщо сьогодні субота І гарна погода, я йду в парк".

Для об'єднання кількох умов використовуються логічні оператори:

  • && (Логічне І / AND): Обидві умови мають бути true.
  • || (Логічне АБО / OR): Хоча б одна умова має бути true.
  • ! (Логічне НЕ / NOT): Змінює true на false і навпаки.

Приклад:

#include <iostream>
#include <string>
using namespace std;

int main() {
    int hour = 20;
    bool isWeekend = true;
    string day = "Friday";
    
    // Якщо (зараз менше 22:00) І (сьогодні вихідний АБО п'ятниця)
    if (hour < 22 && (isWeekend || day == "Friday")) {
        cout << "Можна ще пограти в ігри!" << endl;
    }
    
    return 0;
}

Додатковий приклад: Перевірка прав на керування

#include <iostream>
using namespace std;

int main() {
    int age;
    bool hasLicense;
    
    cout << "Введіть вік: ";
    cin >> age;
    cout << "Чи є у вас права? (1 - так, 0 - ні): ";
    cin >> hasLicense;
    
    if (age >= 18 && hasLicense) {
        cout << "Ви можете керувати автомобілем!" << endl;
    } else {
        cout << "Ви не можете керувати автомобілем." << endl;
    }
    
    // Приклад з АБО
    if (age < 6 || age > 65) {
        cout << "Ви маєте право на пільги." << endl;
    }
    
    return 0;
}

5. Конструкція switch

Коли нам потрібно порівняти одну змінну з багатьма конкретними значеннями (наприклад, пункти меню), зручніше використовувати switch.

#include <iostream>
using namespace std;

int main() {
    int choice;
    cout << "Меню:\n1. Кава\n2. Чай\n3. Вода\nВаш вибір: ";
    cin >> choice;
    
    switch (choice) {
        case 1:
            cout << "Ваша кава готується..." << endl;
            break; // break обов'язковий! Інакше виконаються всі наступні кейси
        case 2:
            cout << "Ось ваш чай." << endl;
            break;
        case 3:
            cout << "Тримайте воду." << endl;
            break;
        default:
            // Виконується, якщо жоден варіант не підійшов
            cout << "Невідомий вибір!" << endl;
    }
    
    return 0;
}

Важливо: switch працює тільки з цілими числами (int, char), він не вміє порівнювати діапазони (наприклад, "більше 10") або рядки тексту.

Практичні завдання до Лекції 4

Виконайте ці завдання в своєму середовищі розробки.

Завдання 1: Парне чи непарне?

Напишіть програму, яка просить користувача ввести ціле число. Використовуючи оператор остачі від ділення (%), перевірте і виведіть на екран, парне це число чи непарне.

Підказка: Число парне, якщо остача від ділення на 2 дорівнює 0.

Завдання 2: Логін та пароль

Створіть примітивну систему авторизації.

  1. Задайте в коді "правильний" логін (наприклад, "admin") і пароль (наприклад, 12345).
  2. Попросіть користувача ввести їх.
  3. Якщо логін І пароль правильні — напишіть "Доступ надано".
  4. Якщо пароль неправильний — напишіть "Невірний пароль".
  5. В інших випадках — "Користувача не знайдено".

Завдання 3: Міні-калькулятор через Switch

Напишіть програму, яка:

  1. Просить ввести два числа.
  2. Просить ввести знак операції (+, -, *, / — тип char).
  3. За допомогою switch виконує відповідну дію і виводить результат.
  4. Додатково: Додайте перевірку у блоці ділення, щоб не можна було поділити на нуль (це викликає помилку програми).