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("Добро пожаловать!")

Вторая строка всегда будет выполняться — скобки нужны, чтобы обе строки были внутри «ветки».

1
Задача
Kotlin SELF, 3 уровень, 1 лекция
Недоступна
Датчик жары
Датчик жары
1
Задача
Kotlin SELF, 3 уровень, 1 лекция
Недоступна
Сверка кодов
Сверка кодов
1
Задача
Kotlin SELF, 3 уровень, 1 лекция
Недоступна
Проверка ника
Проверка ника
1
Задача
Kotlin SELF, 3 уровень, 1 лекция
Недоступна
Сравнение цен
Сравнение цен
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ