🍎 Swift

Swift में तुलना ऑपरेटर्स और लॉजिकल ऑपरेटर्स

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

Представь, что ты играешь в компьютерную игру. Чтобы персонаж прыгнул, нужно нажать пробел. Но что, если он может прыгать только когда стоит на земле? Или когда у него больше 0 жизней? Вот тут и нужны операторы сравнения и логические операторы.

Операторы сравнения — это как весы: они сравнивают два числа или значения и говорят: "Да, это правда" (true) или "Нет, это ложь" (false). Например: "5 больше 3?" — да, правда. "2 равно 10?" — нет, ложь.

Логические операторы — это как командир, который объединяет несколько условий. Например: "Если у игрока есть ключ И дверь открыта, то войти". Или: "Если враг далеко ИЛИ спит, то можно пройти".

Без них программы были бы тупыми — они бы делали одно и то же всегда. А с ними код становится умным: сам решает, что делать в разных ситуациях.

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

В Swift операторы сравнения выглядят так:

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

Логические операторы:

  • && — И (оба условия должны быть true)
  • || — ИЛИ (хотя бы одно true)
  • ! — НЕ (переворачивает true в false и наоборот)

Пример 1: Проверка возраста для просмотра фильма

let возраст = 14
let минимальныйВозраст = 12

// Сравниваем: возраст больше или равен минимальному?
if возраст >= минимальныйВозраст {
    print("Можно смотреть фильм!")
} else {
    print("Извини, ты ещё太小.")
}
// Вывод: Можно смотреть фильм!

Комментарий: Тут мы используем оператор >= (больше или равно). Если бы возраст был 11, условие стало бы ложным, и выполнился бы блок else.

Пример 2: Проверка пароля и имени пользователя

let имя = "Алиса"
let пароль = "12345"

// Используем && (И) — оба условия должны быть true
if имя == "Алиса" && пароль == "12345" {
    print("Добро пожаловать, Алиса!")
} else {
    print("Неверное имя или пароль")
}
// Вывод: Добро пожаловать, Алиса!

Комментарий: Если бы имя было "Боб", но пароль правильный, условие всё равно бы не сработало — нужно совпадение по обоим пунктам.

Пример 3: Выбор действия в игре

let здоровье = 30
let естьАптечка = true

// Используем || (ИЛИ) — достаточно одного true
if здоровье < 20 || естьАптечка {
    print("Нужно лечиться!")
} else {
    print("Можно продолжать бой")
}
// Вывод: Нужно лечиться!

Комментарий: Здоровье 30 не меньше 20, но есть аптечка — поэтому условие true. Если бы не было аптечки и здоровье было 25, то условие стало бы false.

Пример 4: Проверка, что число не равно нулю

let число = 7

// Используем != (не равно)
if число != 0 {
    print("Число не ноль, можно делить")
} else {
    print("Осторожно: деление на ноль!")
}
// Вывод: Число не ноль, можно делить

Комментарий: Оператор != проверяет, что значения разные. Если бы число было 0, условие стало бы false.

Пример 5: Сложное условие с НЕ

let дверьЗакрыта = false

// Используем ! (НЕ) — переворачиваем false в true
if !дверьЗакрыта {
    print("Дверь открыта, можно войти")
} else {
    print("Дверь закрыта, нужен ключ")
}
// Вывод: Дверь открыта, можно войти

Комментарий: Переменная дверьЗакрыта равна false. Но мы пишем !дверьЗакрыта, что означает "НЕ закрыта" — то есть true. Удобно, когда проще проверить отрицание.

Сравнение с Python

В Python те же операторы работают почти так же, но есть пара отличий:

  • Вместо && пишется and
  • Вместо || пишется or
  • Вместо ! пишется not
  • Операторы сравнения (==, !=, > и т.д.) — те же самые

Тот же пример на Swift и Python:

// Swift
let возраст = 16
if возраст >= 18 {
    print("Взрослый")
} else {
    print("Ребёнок")
}
# Python
возраст = 16
if возраст >= 18:
    print("Взрослый")
else:
    print("Ребёнок")

Комментарий: Видишь? Логика та же, но в Python нет скобок вокруг условия, и двоеточие после if. А ещё в Python не нужны фигурные скобки — важны отступы.

Ещё пример с логическими операторами:

// Swift
if возраст > 12 && возраст < 20 {
    print("Ты подросток")
}
# Python
if возраст > 12 and возраст < 20:
    print("Ты подросток")

Комментарий: Вместо && — and. Вместо || — or. Вместо ! — not. Запомнить легко: английские слова вместо символов.

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

Ошибка 1: Путают = и ==

// НЕПРАВИЛЬНО:
if x = 5 {  // Ошибка! Один = это присваивание
    print("x равен 5")
}

// ПРАВИЛЬНО:
if x == 5 {  // Два == это сравнение
    print("x равен 5")
}

Объяснение: Один знак равно — это команда "положить значение". Два знака — это вопрос "равны ли?". Swift даже не даст скомпилировать такой код с одним = в if.

Ошибка 2: Забывают про приоритет операторов

// НЕПРАВИЛЬНО:
if возраст > 10 && возраст < 20 || возраст == 30 {
    // Сначала выполнится &&, потом || — может быть не то, что ты хочешь
}

// ПРАВИЛЬНО: используй скобки
if (возраст > 10 && возраст < 20) || возраст == 30 {
    // Теперь чётко: сначала проверка на диапазон, потом ИЛИ
}

Объяснение: Как в математике: умножение и деление делаются раньше сложения. Тут && выполняется раньше ||. Скобки помогают управлять порядком.

Ошибка 3: Сравнивают разные типы

// НЕПРАВИЛЬНО:
let число = 5
let текст = "5"
if число == текст {  // Ошибка! Int и String нельзя сравнивать
    print("Равны")
}

// ПРАВИЛЬНО: сначала преобразовать
if число == Int(текст) {  // Превращаем текст в число
    print("Равны")
}

Объяснение: Swift строгий: нельзя сравнивать яблоки и апельсины. Число 5 и строка "5" — это разные вещи. Нужно явно преобразовать один тип в другой.

Ошибка 4: Пишут if с true впустую

// НЕПРАВИЛЬНО:
if true == true {  // Это всегда true, зачем проверять?
    print("Бесполезный код")
}

// ПРАВИЛЬНО:
if 5 > 3 {  // Реальная проверка
    print("Полезный код")
}

Объяснение: Если условие всегда истинно, то if не нужен — код выполнится в любом случае. Используй сравнения, которые могут дать и true, и false.

Ошибка 5: Путают && и ||

// Допустим, нужно проверить, что число от 1 до 10
let число = 15

// НЕПРАВИЛЬНО:
if число > 0 || число < 10 {  // Это true для ЛЮБОГО числа > 0!
    print("Число в диапазоне")
}

// ПРАВИЛЬНО:
if число > 0 && число < 10 {  // Только числа от 1 до 9
    print("Число в диапазоне")
}

Объяснение: || (ИЛИ) даёт true, если хотя бы одно условие верно. Для диапазона нужно && (И) — оба условия должны быть верны.

Итог

Операторы сравнения и логические операторы — это основа любого умного кода. Они позволяют программе принимать решения, как человек: "Если это И то, сделай так; ИНАЧЕ сделай иначе".

Запомни главное:

  • Сравнение: == (равно), != (не равно), >, <, >=, <=
  • Логика: