🍎 Swift

Условия (if/else/switch) в Swift 5.9: подробное руководство

Условия (if/else/switch) в Swift 5.9

Представь, что ты — капитан космического корабля. Твоя задача — принимать решения: если видишь астероид — уворачивайся, если видишь планету — приземляйся. В программировании такие решения принимаются с помощью условных конструкций. Они позволяют программе выполнять разные действия в зависимости от того, какое условие выполняется.

Зачем нужны условия?

Без условий программа всегда делала бы одно и то же. Условия делают её "умной": она может реагировать на данные, которые получает от пользователя или из других источников. Например, проверить, хватит ли денег на покупку, или определить, пускать ли посетителя на аттракцион.

Основной синтаксис: if и else

Самая простая конструкция — if (если). После if пишется условие, и если оно истинно (true), выполняется код в фигурных скобках.

let temperature = 25
if temperature > 20 {
    print("На улице тепло! Можно идти гулять.")
}

А что делать, если условие ложно? Для этого есть else (иначе):

let temperature = 10
if temperature > 20 {
    print("На улице тепло!")
} else {
    print("Прохладно, надень куртку.")
}

Иногда нужно проверить несколько условий подряд. Для этого используется else if:

let score = 85
if score >= 90 {
    print("Отлично! Ты — молодец!")
} else if score >= 70 {
    print("Хорошо! Можно и лучше.")
} else {
    print("Нужно подтянуть знания.")
}

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

Чтобы составлять сложные условия, нужны операторы сравнения и логические операторы.

  • == — равно (проверка на равенство)
  • != — не равно
  • > — больше
  • < — меньше
  • >= — больше или равно
  • <= — меньше или равно
  • && — И (оба условия должны быть истинны)
  • || — ИЛИ (хотя бы одно условие истинно)
  • ! — НЕ (отрицание)

Пример с И (&&):

let age = 12
let hasTicket = true
if age >= 5 && hasTicket {
    print("Проходи на аттракцион!")
} else {
    print("Извини, вход запрещён.")
}

Конструкция switch

Когда нужно проверить много вариантов для одного значения, удобно использовать switch. Он работает как "переключатель":

let dayNumber = 3
var dayName: String
switch dayNumber {
case 1:
    dayName = "Понедельник"
case 2:
    dayName = "Вторник"
case 3:
    dayName = "Среда"
case 4:
    dayName = "Четверг"
case 5:
    dayName = "Пятница"
case 6, 7:
    dayName = "Выходной!"
default:
    dayName = "Неизвестный день"
}
print("Сегодня \(dayName)")

Важно: в switch нужно указывать все возможные варианты или использовать default — "на всякий случай", если значение не подошло ни под один case.

Разбор типичных задач

Задача 1: Что больше?
Программа запрашивает два числа и выводит, какое из них больше.

print("Введите первое число:")
let a = Int(readLine() ?? "0") ?? 0
print("Введите второе число:")
let b = Int(readLine() ?? "0") ?? 0

if a > b {
    print("Первое число (\(a)) больше второго (\(b)).")
} else if b > a {
    print("Второе число (\(b)) больше первого (\(a)).")
} else {
    print("Числа равны.")
}

Задача 2: Чётность числа
Программа определяет, чётное число или нечётное.

print("Введите число для проверки:")
let number = Int(readLine() ?? "0") ?? 0
if number % 2 == 0 {
    print("Число \(number) — чётное.")
} else {
    print("Число \(number) — нечётное.")
}

Задача 3: Парк аттракционов
Определяем возрастную зону посетителя.

print("Сколько вам лет?")
let age = Int(readLine() ?? "0") ?? 0

if age < 3 {
    print("Зона для малышей: мягкие кубики и горки.")
} else if age >= 3 && age < 7 {
    print("Детская зона: карусели и батуты.")
} else if age >= 7 && age < 14 {
    print("Подростковая зона: американские горки и автодром.")
} else if age >= 14 && age < 60 {
    print("Взрослая зона: экстремальные аттракционы.")
} else {
    print("Зона отдыха: скамейки и кафе.")
}

Частые ошибки новичков

  • Забыть фигурные скобки — в Swift они обязательны даже для одной строки кода.
  • Путать = и == — = присваивает значение, а == проверяет равенство.
  • Не обрабатывать все случаи в switch — если не написать default, компилятор выдаст ошибку.
  • Лишние точки с запятой — в Swift они не нужны в конце строки (но и не запрещены).
  • Писать else if слитно — между else и if должен быть пробел: else if.

Итоговый пример: Магазин сладостей

Представь, что ты помогаешь магазину сладостей. Нужно рассчитать скидку:

  • Если сумма покупки больше 1000 рублей — скидка 10%.
  • Если больше 5000 рублей — скидка 20%.
  • Если больше 10000 рублей — скидка 30%.
  • Иначе скидки нет.
print("Введите сумму покупки:")
let purchaseAmount = Double(readLine() ?? "0") ?? 0.0

var discount: Double = 0.0

if purchaseAmount > 10000 {
    discount = 0.3
    print("Поздравляем! Ваша скидка — 30%!")
} else if purchaseAmount > 5000 {
    discount = 0.2
    print("Отлично! Ваша скидка — 20%!")
} else if purchaseAmount > 1000 {
    discount = 0.1
    print("Хорошая новость! Ваша скидка — 10%!")
} else {
    print("К сожалению, скидка не предусмотрена.")
}

let finalPrice = purchaseAmount * (1 - discount)
print("Итоговая сумма к оплате: \(finalPrice) рублей.")

Этот пример показывает, как с помощью цепочки if/else if/else можно обрабатывать разные диапазоны значений. Попробуй запустить программу с разными суммами и посмотри, как меняется скидка!

Теперь ты знаешь главное: условия — это мозг программы. С их помощью твой код может думать и принимать решения. Удачи в программировании!