Menu
Coddy logo textTech

Вложенные циклы

Часть раздела Основы путешествия по Swift на Coddy — урок 49 из 86.

Вложенный цикл — это просто цикл внутри другого цикла. Внутренний цикл выполняет все свои итерации для каждой отдельной итерации внешнего цикла.

for row in 1...3 {
    for col in 1...2 {
        print("Row \(row), Col \(col)")
    }
}
// Вывод:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2

Для каждого значения row внутренний цикл полностью проходит по всем значениям col. Таким образом, при 3 внешних итерациях и 2 внутренних итерациях код внутри выполняется всего 6 раз (3 × 2).

Вложенные циклы часто используются для работы со структурами в виде сетки или для создания шаблонов.

Вот пример, который выводит простой прямоугольник из звездочек:

for row in 1...2 {
    for col in 1...4 {
        print("*", terminator: "")
    }
    print("")  // Переход на следующую строку
}
// Вывод:
// ****
// ****

Параметр terminator: "" предотвращает добавление новой строки функцией print, поэтому звездочки отображаются в одной строке. После завершения внутреннего цикла print("") выполняет переход на следующую строку.

challenge icon

Задание

Легко

Прочитайте два целых числа из входных данных: rows и cols. Используйте вложенные циклы, чтобы вывести сетку чисел, где в каждой ячейке отображается произведение номера строки и номера столбца.

Вы получите следующие входные данные:

  • Первая строка: количество строк (например, "3")
  • Вторая строка: количество столбцов (например, "4")

Требования:

  • Используйте внешний цикл для строк (от 1 до rows)
  • Используйте внутренний цикл для столбцов (от 1 до cols)
  • Выводите произведение текущих номеров строки и столбца
  • Разделяйте значения в одной строке пробелом
  • Каждая строка должна быть на новой строке

Подсказка: Используйте terminator: " ", чтобы значения оставались на одной строке, а затем используйте print("") после внутреннего цикла, чтобы перейти на следующую строку.

Например, если rows равно 3, а cols равно 4, вывод должен быть следующим:

1 2 3 4 
2 4 6 8 
3 6 9 12 

Шпаргалка

Вложенный цикл — это цикл внутри другого цикла. Внутренний цикл выполняет все свои итерации для каждой отдельной итерации внешнего цикла.

for row in 1...3 {
    for col in 1...2 {
        print("Row \(row), Col \(col)")
    }
}
// Вывод:
// Row 1, Col 1
// Row 1, Col 2
// Row 2, Col 1
// Row 2, Col 2
// Row 3, Col 1
// Row 3, Col 2

При 3 внешних итерациях и 2 внутренних код выполняется всего 6 раз (3 × 2).

Вложенные циклы полезны для создания сеточных структур и паттернов:

for row in 1...2 {
    for col in 1...4 {
        print("*", terminator: "")
    }
    print("")  // Переход на следующую строку
}
// Вывод:
// ****
// ****

Используйте terminator: "", чтобы предотвратить добавление новой строки функцией print, сохраняя вывод на той же строке. Используйте print("") после внутреннего цикла, чтобы перейти на следующую строку.

Попробуйте сами

let rows = Int(readLine()!)!
let cols = Int(readLine()!)!

// TODO: Напишите свой код ниже
// Используйте вложенные циклы для вывода таблицы умножения
// Внешний цикл: итерация по строкам (от 1 до rows)
// Внутренний цикл: итерация по столбцам (от 1 до cols)
// Выведите произведение row * column
// Используйте print(..., terminator: " "), чтобы значения оставались на одной строке
// Используйте print("") после внутреннего цикла для перехода на следующую строку
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы