🍎 Swift

Цикл for в Swift 5.9: подробное руководство

Цикл for в Swift: Повторяем действия легко и просто

Что такое цикл for и зачем он нужен?

Представь, что тебе нужно 10 раз написать в тетради: «Я буду хорошо учиться». Можно писать это вручную 10 раз, но это долго и скучно. А можно сказать волшебную фразу: «Повтори 10 раз: Я буду хорошо учиться». Компьютер сделает всё сам!

В программировании такая «волшебная фраза» называется циклом. Цикл for — это команда, которая заставляет компьютер выполнять одно и то же действие несколько раз подряд. Мы говорим компьютеру: «Сделай это N раз», и он послушно выполняет команду.

Циклы помогают нам:

  • Не писать однотипный код много раз
  • Обрабатывать списки данных (например, список учеников в классе)
  • Считать что-то (например, сколько конфет раздали)
  • Автоматизировать повторяющиеся задачи

Основной синтаксис цикла for

В Swift 5.9 цикл for выглядит так:

for переменная in диапазон {
    // команды, которые нужно повторить
    // переменная будет меняться на каждом шаге
}

Самая простая форма — перебор чисел от 1 до N:

for i in 1...5 {
    print("Это шаг номер \(i)")
}

Результат работы программы:

Это шаг номер 1
Это шаг номер 2
Это шаг номер 3
Это шаг номер 4
Это шаг номер 5

Обрати внимание на ... — это оператор диапазона. 1...5 означает «все числа от 1 до 5 включительно».

Если нужно до числа, но не включая его, используется ..<:

for i in 1..<5 {
    print(i)
}
// Выведет: 1, 2, 3, 4 (без 5!)

Где взять количество повторений?

Часто количество повторений мы узнаём от пользователя. Для этого используется readLine() — команда, которая считывает то, что ввёл пользователь с клавиатуры.

Важно: readLine() возвращает строку (текст), а нам нужно число. Поэтому мы преобразуем строку в число с помощью Int().

print("Сколько раз повторить?")
let countString = readLine()!
let count = Int(countString)!

for i in 1...count {
    print("Повтор номер \(i)")
}

Если пользователь введёт 3, программа выведет:

Повтор номер 1
Повтор номер 2
Повтор номер 3

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

Задача «Лифт»

Ты на нулевом этаже. Нужно вывести на экран все этажи, которые проезжает лифт, пока не доедет до нужного.

print("На какой этаж едем?")
let floorString = readLine()!
let targetFloor = Int(floorString)!

print("Лифт поехал!")
for currentFloor in 1...targetFloor {
    print("Едем на этаж \(currentFloor)")
}
print("Приехали!")

Если ввести 4, программа покажет:

Едем на этаж 1
Едем на этаж 2
Едем на этаж 3
Едем на этаж 4
Приехали!

Задача «Банкомат»

Банкомат просит повторить фразу заданное количество раз.

print("Введите фразу для повторения:")
let phrase = readLine()!

print("Сколько раз повторить?")
let repeatCountString = readLine()!
let repeatCount = Int(repeatCountString)!

for _ in 1...repeatCount {
    print(phrase)
}

Обрати внимание на _ (нижнее подчёркивание). Если нам не нужна переменная-счётчик (нас интересует только количество повторений), мы используем _ вместо имени переменной.

Задача «Кибербезопасность»

Лечим компьютер от вирусов. Каждый шаг — проверка одного файла.

print("Сколько файлов нужно проверить?")
let filesString = readLine()!
let totalFiles = Int(filesString)!

print("Начинаем проверку...")
for fileNumber in 1...totalFiles {
    print("Проверяю файл номер \(fileNumber)...")
    print("Вирусов не найдено. Файл чист!")
}
print("Проверка завершена!")

Задача «Поднятие мотивации»

Ты в спортзале. Нужно сделать заданное количество упражнений.

print("Сколько упражнений сегодня делаем?")
let exercisesString = readLine()!
let totalExercises = Int(exercisesString)!

for exerciseNumber in 1...totalExercises {
    print("Упражнение \(exerciseNumber): поднимаем штангу!")
    print("Отдыхаем 30 секунд...")
}
print("Тренировка окончена! Молодец!")

Задача «День рождения»

Раздаём конфеты одноклассникам по одной каждому.

print("Сколько конфет ты принёс?")
let candyString = readLine()!
let totalCandy = Int(candyString)!

print("Начинаем раздавать конфеты!")
for candyNumber in 1...totalCandy {
    print("Раздаю конфету номер \(candyNumber). Кому?")
    let name = readLine()!
    print("\(name) получил конфету! С днём рождения!")
}
print("Все конфеты розданы! Ура!")

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

Ошибка 1: Забыть преобразовать строку в число

// НЕПРАВИЛЬНО:
let count = readLine()!  // Это строка, а не число!
for i in 1...count { }  // Ошибка!

// ПРАВИЛЬНО:
let countString = readLine()!
let count = Int(countString)!
for i in 1...count { }

Ошибка 2: Перепутать ... и ..<

// Если нужно 5 раз, пишем 1...5 (включая 5)
// Если пишем 1..<5 — будет 4 раза (1,2,3,4)

Ошибка 3: Забыть про восклицательный знак !

После readLine() и Int() нужно ставить ! — это значит «я уверен, что здесь есть значение». Без него программа не скомпилируется.

Ошибка 4: Использовать for, когда нужно просто выполнить действие один раз

Если «повторить 1 раз» — цикл не нужен. Цикл нужен, когда действий много (2, 10, 100, 1000).

Итоговый пример: «Сбор яблок в саду»

Представь, что ты собрал урожай яблок. Нужно посчитать, сколько яблок в каждой корзине. У тебя есть несколько корзин, и в каждой лежит разное количество яблок. Ты вводишь количество яблок в каждой корзине.

print("Сколько корзин с яблоками?")
let basketsString = readLine()!
let baskets = Int(basketsString)!

var totalApples = 0  // Общее количество яблок

for basketNumber in 1...baskets {
    print("Сколько яблок в корзине номер \(basketNumber)?")
    let applesString = readLine()!
    let apples = Int(applesString)!
    
    totalApples = totalApples + apples
    print("В корзине \(basketNumber) — \(apples) яблок")
}

print("Всего собрано \(totalApples) яблок!")

Пример работы программы:

Сколько корзин с яблоками?
3
Сколько яблок в корзине номер 1?
5
В корзине 1 — 5 яблок
Сколько яблок в корзине номер 2?
8
В корзине 2 — 8 яблок
Сколько яблок в корзине номер 3?
3
В корзине 3 — 3 яблок
Всего собрано 16 яблок!

Цикл for помог нам обработать все корзины, не повторяя один и тот же код три раза. Если бы корзин было 100, мы бы просто изменили число, и код бы сработал без изменений!

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