Вложенный цикл
Часть раздела Основы путешествия по Swift на Coddy. Урок 49 из 86.
Вложенный цикл — это просто цикл внутри другого цикла. Внутренний цикл выполняет все свои итерации для каждой отдельной итерации внешнего цикла.
let rows = 3
let cols = 2
for row in 1...rows {
for col in 1...cols {
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 — от 1 до cols. Поэтому при rows = 3 и cols = 2 код внутри выполняется всего 6 раз (3 × 2). Значения rows и cols никогда не меняются: они лишь указывают циклам, когда нужно остановиться.
Вложенные циклы часто используются для работы со структурами в виде сетки или для создания узоров.
Вот пример, который выводит простой прямоугольник из звёздочек:
for row in 1...2 {
for col in 1...4 {
print("*", terminator: "")
}
print("") // Перейти на следующую строку
}
// Вывод:
// ****
// ****Параметр terminator: "" не позволяет print добавлять символ новой строки, поэтому звёздочки появляются в одной строке. После завершения внутреннего цикла print("") переходит на следующую строку.
Задание
ЛегкоСчитай из ввода два целых числа: 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 Используй отдельный счётчик для каждого цикла (например, row для строк и col для чисел в строке) и сравнивай его с rows или cols. Не изменяй сами rows и cols: для каждой строки снова нужно значение cols.
Попробуйте сами
let rows = Int(readLine()!)!
let cols = Int(readLine()!)!
// TODO: Напишите свой код ниже
// Используйте вложенные циклы, чтобы вывести таблицу умножения
// Внешний цикл: переберите строки (1 до rows)
// Внутренний цикл: переберите столбцы (1 до cols)
// Выведите произведение row * column
// Используйте print(..., terminator: " "), чтобы значения оставались в одной строке
// Используйте print("") после внутреннего цикла, чтобы перейти на следующую строкуВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: простая математикаОператоры сравнения7Основы ввода-вывода
Функция printИнтерполяция строкВвод с ReadLineПреобразование типовПовторение: до 120Повторение: истина или ложь2Переменные
Let и VarАннотации типовЧислаСтрокаЛогический типСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Повторение: простая логикаЛогические операторы, часть 3Тернарный оператор8Калькулятор разделения счёта
Приветственное сообщениеВвод данных14Массивы: продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опциональные значения
Что такое опциональные значенияИзвлечение значения с помощью if letGuard letОператор объединения с nilПовторение — безопасное извлечение значения6Принятие решений
Условный оператор ifIf — ElseПовторение: простой калькуляторОператор switchSwitch с диапазонами9Циклы
Цикл for-inЦикл whileЦикл repeat-whileПрерывание циклаПереход к следующей итерацииПовторение — факториалДиапазоны в циклахВложенный циклПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Swift