JavaRush /Курси /Kotlin SELF /Умовний оператор: if else

Умовний оператор: if else

Kotlin SELF
Рівень 3 , Лекція 1
Відкрита

1. Оператор if else

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

У Kotlin це реалізовано за допомогою умовного оператора — спеціальної конструкції, яка дає змогу виконувати різні блоки команд залежно від істинності умови.

Умовний оператор складається з трьох частин: умови, команди 1 і команди 2. Якщо умова істинна, виконується команда 1. Якщо ні — виконується команда 2. Команди ніколи не виконуються одночасно. Загальний вигляд цього оператора такий:

if (умова)
    команда 1
else
    команда 2
Умовний оператор if-else

if перекладається як «якщо», а else — як «інакше». Звичайною мовою це можна записати так:

Якщо умова істинна, то
   виконати команда1
інакше
   виконати команда2
Умовний оператор if-else звичайною мовою

Приклади:

// На екрані з’явиться напис: Ви ще дитина

val age = 17
if (age < 18)
   println("Ви ще дитина")
else
   println("Ви вже дорослий")
// На екрані з’явиться напис: Тепло

val temperature = 5
if (temperature < 0)
   println("На вулиці мороз")
else
   println("Тепло")
// На екрані з’явиться напис: Можна складати на права

val age = 18
if (age == 18)
   println("Можна складати на права")
else
   println("Можна накопичувати на машину")

2. Блок команд

Якщо під час перевірки умови ви хочете, щоб програма виконала кілька команд, їх можна об’єднати в блок команд.

Щоб об’єднати команди в блок, потрібно «загорнути» їх у фігурні дужки. Ось як це виглядає в загальному випадку:

{
   команда1
   команда2
   команда3
}

Команд у блоці може бути скільки завгодно — навіть нуль.

Приклади поєднання оператора if-else і блока команд:

// На екрані з’явиться напис: Ти ще дитина. Не сперечайся з дорослими

val age = 17
if (age < 18)
{
   println("Ти ще дитина")
   println("Не сперечайся з дорослими")
}
else
{
   println("Ви вже дорослий")
   println("Ну й молодь пішла")
}
// На екрані з’явиться напис: Тепло

val temperature = 5
if (temperature < 0)
{
   println("На вулиці мороз")
   println("Одягни шапку")
}
else
   println("Тепло")
// Буде виконано порожній блок команд. На екрані нічого не з’явиться.

val age = 21
if (age == 18)
   println("Можна отримувати права")
else
{
}

3. Скорочений синтаксис оператора if

Якщо коду в блоці else немає, його можна опустити. Тоді оператор if матиме такий вигляд:

if (умова)
{
    команда1
}
Умовний оператор if

Приклад:

val age = 19
if (age >= 18)
{
    println("Ви повнолітній!")
}

Як це працює?

  • Якщо умова істинна, виконується блок коду. Якщо умова хибна, нічого не відбувається — програма просто йде далі.
  • Можна вважати, що блок else у програмі є, але він порожній (між фігурними дужками немає жодних команд). Тож його можна прибрати: у поведінці програми нічого не зміниться.

4. Комбінування умов: else if

Іноді потрібно перевірити не просто «так/ні», а вибрати один із кількох варіантів.
Тут на допомогу приходить конструкція else if:

if (умова1)
{
    // Виконується, якщо умова1 істинна
}
else if (умова2)
{
    // Виконується, якщо умова2 істинна, а умова1 — хибна
}
else
{
    // Виконується, якщо жодна з умов вище не підійшла
}

Приклад:

val hour = 13
if (hour < 12)
{
    println("Доброго ранку!")
}
else if (hour < 18)
{
    println("Добрий день!")
}
else
{
    println("Добрий вечір!")
}

Що тут відбувається?

  • Якщо час до 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. Робота з рядками в умовах

Порівняння за допомогою == у Kotlin зіставляє значення (вміст). Тому рядки можна порівнювати через == (на відміну від Java). Водночас із дробовими числами (Double/Float) потрібно бути обережнішими: через похибки обчислень порівняння через == може давати неочікувані результати.

Докладніше про тонкощі порівняння рядків ми ще поговоримо пізніше. А як правильно порівнювати рядки, ви побачите на прикладі нижче:

val password = readln()
if (password == "qwerty")
{
    println("Ви увійшли!")
}

8. Особливості та нюанси:

Фігурні дужки: потрібні чи ні?

Якщо після if або else стоїть лише одна команда, фігурні дужки можна опустити:

if (age > 18)
    println("Вам більше 18!")

// Але безпечніше ЗАВЖДИ їх писати:
if (age > 18)
{
    println("Вам більше 18!")
}

Порада: завжди пишіть із дужками. Це вбереже від купи помилок, особливо коли ви розширюватимете код.

Логічні помилки: уважніше з умовами!

Якщо напишете так:

if (age > 18)
    println("Вам більше 18!")
    println("Ласкаво просимо!")

То компілятор «прочитає» цей код так:

if (age > 18)
{
    println("Вам більше 18!")
}

println("Ласкаво просимо!")

Другий рядок завжди виконуватиметься. Дужки потрібні, щоб обидва рядки були всередині «гілки».

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ