🎯 Kotlin

Operadores de comparação e operadores lógicos em Kotlin

Что это и зачем?

Представь, что ты играешь в компьютерную игру. Чтобы пройти уровень, тебе нужно проверить: «Хватит ли у меня жизней?», «Собрал ли я все ключи?», «Не наступил ли я на мину?». Компьютер должен принимать решения на основе таких проверок. В программировании эти проверки делаются с помощью операторов сравнения (они сравнивают числа или текст) и логических операторов (они соединяют несколько проверок в одну).

Например, ты пишешь программу для дневника: «Если оценка больше или равна 4, то вывести "Молодец!"». Или для игры: «Если у игрока закончились жизни И он упал в пропасть, то игра заканчивается». Без этих операторов компьютер не сможет сам решать, что делать в разных ситуациях.

Синтаксис и примеры кода

В Kotlin операторы сравнения выглядят так же, как в математике, но есть пара особенностей. Вот основные:

  • == — равно (проверяет, одинаковы ли значения)
  • != — не равно
  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно

Логические операторы соединяют условия:

  • && — И (оба условия должны быть истинны)
  • || — ИЛИ (хотя бы одно условие истинно)
  • ! — НЕ (переворачивает истину на ложь)
fun main() {
    // Пример 1: Сравнение чисел
    val age = 12
    val canRide = age >= 14  // Проверяем, можно ли кататься на аттракционе
    println("Можно кататься? $canRide")  // Выведет: false, потому что 12 меньше 14

    // Пример 2: Проверка строк (текста)
    val password = "kotlin123"
    val input = "kotlin123"
    val isCorrect = password == input  // Сравниваем строки
    println("Пароль верный? $isCorrect")  // Выведет: true

    // Пример 3: Логическое И (&&) — оба условия должны быть true
    val hasKey = true
    val doorIsOpen = false
    val canEnter = hasKey && doorIsOpen  // Нужен и ключ, и открытая дверь
    println("Можно войти? $canEnter")  // Выведет: false (дверь закрыта)

    // Пример 4: Логическое ИЛИ (||) — хотя бы одно true
    val isWeekend = true
    val isHoliday = false
    val canSleep = isWeekend || isHoliday  // Можно спать, если выходной ИЛИ праздник
    println("Можно спать? $canSleep")  // Выведет: true (сегодня выходной)

    // Пример 5: НЕ (!) — обратное условие
    val isRaining = false
    val canPlayOutside = !isRaining  // Если НЕ идет дождь, можно играть
    println("Можно играть на улице? $canPlayOutside")  // Выведет: true
}

Обрати внимание: в Kotlin для сравнения используется ==, а не = (одинарное равно — это присваивание). Если напишешь if (x = 5), будет ошибка!

Сравнение с Python

В Python те же операторы выглядят почти так же, но есть одно важное отличие: в Python для логических операторов используются слова and, or, not, а не символы &&, ||, !.

# Python версия тех же примеров
age = 12
can_ride = age >= 14
print("Можно кататься?", can_ride)  # False

password = "kotlin123"
input_str = "kotlin123"
is_correct = password == input_str
print("Пароль верный?", is_correct)  # True

has_key = True
door_is_open = False
can_enter = has_key and door_is_open  # Вместо && пишем and
print("Можно войти?", can_enter)  # False

is_weekend = True
is_holiday = False
can_sleep = is_weekend or is_holiday  # Вместо || пишем or
print("Можно спать?", can_sleep)  # True

is_raining = False
can_play_outside = not is_raining  # Вместо ! пишем not
print("Можно играть на улице?", can_play_outside)  # True

Главное отличие: в Kotlin ты используешь символы (&&, ||, !), а в Python — английские слова. В остальном логика одинаковая. Kotlin ещё требует, чтобы в if было именно Boolean значение (true/false), а в Python можно написать if 5: (число 5 считается истиной). В Kotlin так нельзя — нужно явно сравнивать: if (x > 0).

Типичные ошибки новичков

  1. Путают = и ==. В Kotlin = — это присвоить значение, а == — проверить равенство. Ошибка: if (x = 5) — компилятор выдаст ошибку, потому что x = 5 не возвращает true/false.
  2. Забывают про скобки. В сложных условиях нужно ставить скобки, чтобы указать порядок. Например: if (a > 0 && b > 0 || c > 0) — без скобок непонятно, что проверяется первым. Правильно: if ((a > 0 && b > 0) || c > 0).
  3. Сравнивают разные типы. Нельзя сравнивать число и строку напрямую: 5 == "5" — это всегда false, и Kotlin может выдать предупреждение. Сначала преобразуй: 5.toString() == "5" или 5 == "5".toInt().
  4. Путают && и ||. Запомни: && — это «строгий» оператор (нужны оба условия), || — «мягкий» (достаточно одного). Ошибка: написать if (age > 10 && age < 20) для проверки возраста от 10 до 20 — это правильно, а if (age > 10 || age < 20) — всегда true, потому что любое число либо больше 10, либо меньше 20.
  5. Не используют ! для отрицания. Вместо if (x != 5) новички иногда пишут if (x == 5) { ... } else { ... } — это работает, но длиннее. Используй ! для краткости: if (!isRaining).

Итог

Операторы сравнения и логические операторы — это основа для принятия решений в программе. Ты научился:

  • Сравнивать числа и строки с помощью ==, !=, >, <, >=, <=.
  • Соединять условия с помощью && (И), || (ИЛИ) и ! (НЕ).
  • Видеть разницу между Kotlin и Python: в Kotlin символы, в Python слова.
  • Избегать типичных ошибок: не путать = и ==, ставить скобки, не сравнивать разные типы.

Теперь ты можешь писать программы, которые реагируют на разные ситуации. Попробуй сам: напиши код, который проверяет, можно ли купить билет в кино (возраст >= 12 И есть деньги), или игру, где персонаж получает урон, если наступил на мину ИЛИ его атаковал враг. Удачи!