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.
Основные операторы сравнения:
| Оператор | Значение | Пример |
|---|---|---|
|
Равно | |
|
Не равно | |
|
Больше | |
|
Меньше | |
|
Больше или равно | |
|
Меньше или равно | |
Примеры условий:
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("Добро пожаловать!")
Вторая строка всегда будет выполняться — скобки нужны, чтобы обе строки были внутри «ветки».
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ