1. Оператор if-else
Від програм було б мало користі, якби вони робили одне й те саме, незалежно від того, як змінюються зовнішні обставини. Програма має вміти підлаштовуватися до різних ситуацій і виконувати одні дії в одних випадках, інші — в інших.
У C# це реалізовано за допомогою умовного оператора — спеціального конструкта мови, який дає змогу виконувати різні блоки команд залежно від істинності умови.
Умовний оператор складається з трьох частин: умова, команда 1 і команда 2. Якщо умова істинна, виконується команда 1, інакше — команда 2. Команди ніколи не виконуються одночасно. Загальний вигляд цього оператора такий:
if (умова)
команда1;
else
команда2;
if-else
if перекладається як «якщо», а else — як «інакше». Людською мовою це можна записати так:
Якщо умова істинна, то
виконати команда1;
інакше
виконати команда2;
if-else людською мовою
Приклади:
// На екран буде виведено повідомлення: Ви ще дитина
int age = 17;
if (age < 18)
Console.WriteLine("Ви ще дитина");
else
Console.WriteLine("Ви вже дорослі");
// На екран буде виведено повідомлення: Тепло
int temperature = 5;
if (temperature < 0)
Console.WriteLine("Надворі мороз");
else
Console.WriteLine("Тепло");
// На екран буде виведено повідомлення: Можна складати на права
int age = 18;
if (age == 18)
Console.WriteLine("Можна складати на права");
else
Console.WriteLine("Можна збирати на авто");
2. Блок команд
Якщо під час виконання (або невиконання) умови ви хочете, щоб ваша програма виконала кілька команд, їх можна об’єднати в блок команд.
Щоб об’єднати команди в блок, потрібно «загорнути» їх у фігурні дужки. Ось як це виглядає в загальному випадку:
{
команда1;
команда2;
команда3;
}
Команд у блоці може бути скільки завгодно. І навіть нуль.
Приклади поєднання оператора if-else і блоку команд:
// На екран буде виведено повідомлення: Ви ще дитина. Не сперечайтеся з дорослими
int age = 17;
if (age < 18)
{
Console.WriteLine("Ви ще дитина");
Console.WriteLine("Не сперечайтеся з дорослими");
}
else
{
Console.WriteLine("Ви вже дорослі");
Console.WriteLine("Ех, і молодь пішла");
}
// На екран буде виведено повідомлення: Тепло
int temperature = 5;
if (temperature < 0)
{
Console.WriteLine("Надворі мороз");
Console.WriteLine("Одягніть шапку");
}
else
Console.WriteLine("Тепло");
// Буде виконано порожній блок команд. На екран нічого не виведеться.
int age = 21;
if (age == 18)
Console.WriteLine("Зʼявіться до територіального центру комплектування");
else
{
}
3. Скорочений синтаксис оператора if
Якщо код у блоці else відсутній, то його можна опустити. Тоді оператор if набуде вигляду:
if (умова)
команда1;
if
Приклад:
int age = 19;
if (age >= 18)
{
Console.WriteLine("Ви повнолітні!");
}
Як це працює?
Якщо умова істинна, виконується блок коду. Якщо хибна — нічого не відбувається, програма йде далі.
Блок else у програмі є, але він порожній (між фігурними дужками немає жодних команд). Його можна просто прибрати: у програмі від цього нічого не зміниться.
4. Комбінування умов: else if
Іноді потрібно перевірити не просто «так/ні», а вибрати з кількох варіантів. Тут на допомогу приходить зв’язка else if:
if (умова1)
{
// Виконується, якщо умова1 істинна
}
else if (умова2)
{
// Виконується, якщо умова2 істинна, а умова1 — хибна
}
else
{
// Виконується, якщо жодна з умов вище не підійшла
}
Приклад:
int hour = 13;
if (hour < 12)
{
Console.WriteLine("Доброго ранку!");
}
else if (hour < 18)
{
Console.WriteLine("Доброго дня!");
}
else
{
Console.WriteLine("Доброго вечора!");
}
Що тут відбувається?
- Якщо час до 12 — ранок.
- Якщо від 12 до 18 — день.
- Якщо більше — вечір.
- Програма вибирає лише один варіант. Щойно спрацьовує певна умова — решту навіть не перевіряють.
5. Схематична ілюстрація: блок-схема розгалуження
Ось як це виглядає на блок-схемі:
А якщо кілька умов:
Це нагадує роздоріжжя в настільних рольових іграх: підете ліворуч — одне, праворуч — інше, прямо — ще щось!
6. Які умови можна перевіряти?
У круглих дужках після if має бути логічний вираз — його результатом є true або false.
Основні оператори порівняння:
| Оператор | Значення | Приклад |
|---|---|---|
| == | Дорівнює | x == 5 |
| != | Не дорівнює | x != 10 |
| > | Більше | x > 0 |
| < | Менше | age < 18 |
| >= | Більше або дорівнює | score >= 100 |
| <= | Менше або дорівнює | count <= 50 |
Приклади умов:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Зверніть увагу: = (один знак) — це присвоєння. == (два знаки) — порівняння. Це одна з найпоширеніших помилок серед новачків! Якщо ви випадково напишете:
if (x = 5) // Помилка!
— компілятор видасть помилку, і це цілком слушно.
7. Робота з рядками в умовах
Можна порівнювати не тільки числа, а й рядки:
string password = Console.ReadLine();
if (password == "qwerty")
{
Console.WriteLine("Ви увійшли!");
}
Увага: порівняння рядків за допомогою == у C# працює коректно для звичайних випадків, адже порівнює вміст рядків (а не лише посилання на об’єкти). Детальніше про тонкощі порівняння рядків ми ще поговоримо ближче до рядкових методів і особливостей локалізації.
8. Особливості та нюанси:
Фігурні дужки: потрібні чи ні?
Якщо після if або else лише одна команда, фігурні дужки можна опустити:
if (age > 18)
Console.WriteLine("Тобі більше 18!");
// Але безпечніше завжди їх писати:
if (age > 18)
{
Console.WriteLine("Тобі більше 18!");
}
Порада: пишіть завжди з дужками. Це вбереже від багатьох помилок, особливо під час розширення коду.
Логічні помилки: уважніше з умовами!
Якщо напишете так:
if (age > 18)
Console.WriteLine("Тобі більше 18!");
Console.WriteLine("Ласкаво просимо!");
Тоді компілятор читатиме цей код так:
if (age > 18)
{
Console.WriteLine("Тобі більше 18!");
}
Console.WriteLine("Ласкаво просимо!");
Другий рядок завжди виконуватиметься — дужки потрібні, щоб обидва рядки були всередині «гілки».
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ