🍎 Swift

Fluxo de Controle em Swift

Условия и циклы в Swift: if, guard, switch и for-in

В этом уроке мы изучим управление потоком выполнения в Swift: как принимать решения с if/else, использовать мощный guard для раннего выхода, работать с switch и писать циклы for-in, while и repeat-while.

if/else — принятие решений

Важная особенность Swift: скобки вокруг условия не нужны! (В отличие от C, Java, JavaScript)

let temperature = 25

// Без скобок — это стиль Swift!
if temperature > 20 {
    print("Тепло, можно в футболке")
} else if temperature > 10 {
    print("Прохладно, нужна куртка")
} else {
    print("Холодно! Одевайся теплее")
}

// Операторы сравнения
// == равно       != не равно
// >  больше      <  меньше
// >= больше/равно   <= меньше/равно

// Логические операторы
// && И (оба true)  || ИЛИ (хотя бы одно true)  ! НЕ

Тернарный оператор

let score = 85
let grade = score >= 60 ? "Сдал" : "Не сдал"
print(grade) // Сдал
// Читается: "если score >= 60, то 'Сдал', иначе 'Не сдал'"

guard — ранний выход: страж на входе

Думай о guard как о страже на входе: он проверяет, есть ли у тебя пропуск, и если нет — разворачивает обратно.

// Без guard — "pyramid of doom":
func processOrder(item: String?, quantity: Int?) {
    if let item = item {
        if let quantity = quantity {
            if quantity > 0 {
                print("Заказ: \(quantity)x \(item)")
            }
        }
    }
}

// С guard — чисто и понятно!
func processOrderClean(item: String?, quantity: Int?) {
    guard let item = item else {
        print("Ошибка: товар не указан")
        return
    }
    guard let quantity = quantity, quantity > 0 else {
        print("Ошибка: количество должно быть > 0")
        return
    }
    print("Заказ: \(quantity)x \(item)")
}

switch — мощный выбор из вариантов

Switch в Swift — намного мощнее, чем в Java или C!

  • Нет break в конце case (автоматически!)
  • Поддерживает паттерн матчинг
  • Работает с диапазонами, кортежами и многим другим
let dayNumber = 3

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

Switch с диапазонами

let score = 78

switch score {
case 90...100:    print("Отлично! 🌟")
case 75..<90:     print("Хорошо! 👍")
case 60..<75:     print("Удовлетворительно")
case 0..<60:      print("Нужно больше учиться")
default:          print("Неверная оценка")
}

Switch с кортежами

let point = (2, -1)
switch point {
case (0, 0):      print("В начале координат")
case (_, 0):      print("На оси X")
case (0, _):      print("На оси Y")
default:          print("Где-то ещё")
}

for-in — цикл для перебора

// Перебор диапазона
for i in 1...5 {
    print("Число: \(i)")
}
// 1, 2, 3, 4, 5

// 1..<5 — не включает 5
for i in 1..<5 { print(i) }
// 1, 2, 3, 4

// Перебор массива
let fruits = ["Яблоко", "Банан", "Апельсин"]
for fruit in fruits {
    print("Фрукт: \(fruit)")
}

// С индексом
for (index, fruit) in fruits.enumerated() {
    print("\(index + 1). \(fruit)")
}

Underscore — когда значение не нужно

for _ in 1...5 {
    print("Привет!")
}
// Выведет "Привет!" пять раз

stride — цикл с шагом

// Чётные числа от 0 до 10
for i in stride(from: 0, to: 10, by: 2) {
    print(i) // 0, 2, 4, 6, 8
}
// Обратный отсчёт
for i in stride(from: 10, through: 0, by: -2) {
    print(i) // 10, 8, 6, 4, 2, 0
}

while и repeat-while

// while — пока условие истинно
var diceResult = 0
var rollCount = 0
while diceResult != 6 {
    diceResult = Int.random(in: 1...6)
    rollCount += 1
    print("Бросок \(rollCount): \(diceResult)")
}

// repeat-while — тело выполняется хотя бы раз
var number = 0
repeat {
    number += 1
    print("number = \(number)")
} while number < 3

break и continue

// break — выход из цикла
for i in 1...10 {
    if i == 5 { break }
    print(i)
}
// Выведет: 1, 2, 3, 4

// continue — пропустить итерацию
for i in 1...10 {
    if i % 2 == 0 { continue }
    print(i)
}
// Нечётные: 1, 3, 5, 7, 9

FizzBuzz — классическая задача

for number in 1...30 {
    switch (number % 3 == 0, number % 5 == 0) {
    case (true, true):  print("FizzBuzz")
    case (true, false): print("Fizz")
    case (false, true): print("Buzz")
    default:            print(number)
    }
}

Итоги урока

  • if/else — принятие решений (без скобок в Swift!)
  • guard — ранний выход, избавляет от вложенности
  • switch — мощный выбор с паттерн матчингом
  • for-in — цикл для перебора коллекций и диапазонов
  • while — цикл пока условие истинно
  • repeat-while — тело выполняется хотя бы раз

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!

💪 Дополнительные упражнения

Практика — ключ к успеху в программировании. Чем больше кода ты пишешь, тем лучше ты становишься. Не бойся экспериментировать — ошибки это часть обучения!

  • Напиши программу, которая считает количество гласных в строке
  • Создай функцию, которая проверяет является ли число простым
  • Реализуй простую игру "угадай число" с подсказками
  • Напиши калькулятор с четырьмя операциями
  • Создай программу-органайзер задач (TODO list)

📋 Лучшие практики

Хороший код — это не просто работающий код. Это код, который легко читать, понимать и изменять. Следуй этим принципам:

  • DRY (Don't Repeat Yourself) — не повторяй один и тот же код, выноси его в функции
  • KISS (Keep It Simple, Stupid) — пиши простой и понятный код
  • Именование — переменные должны отражать смысл: userAge лучше чем x
  • Комментарии — комментируй ПОЧЕМУ, а не ЧТО делает код
  • Маленькие функции — каждая функция должна делать одно дело

📚 Полезные ресурсы для дальнейшего изучения

  • Официальная документация — лучший источник правды
  • Stack Overflow — ответы на вопросы программистов
  • GitHub — смотри на реальные проекты с открытым кодом
  • YouTube — видеоуроки для визуальных учеников
  • Практические проекты — создавай что-то настоящее!