التحكم في التدفق في سويفت
Условия и циклы в 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 — видеоуроки для визуальных учеников
- Практические проекты — создавай что-то настоящее!