Вложенный цикл
Часть раздела Основы путешествия по Kotlin на Coddy. Урок 52 из 93.
Вы можете поместить цикл внутрь другого цикла, чтобы создать вложенный цикл. Внутренний цикл полностью выполняется на каждой итерации внешнего цикла.
val rows = 2
val cols = 3
for (i in 1..rows) {
for (j in 1..cols) {
println("i=$i, j=$j")
}
}
// Вывод:
// i=1, j=1
// i=1, j=2
// i=1, j=3
// i=2, j=1
// i=2, j=2
// i=2, j=3Когда i равно 1, внутренний цикл выполняется cols раз (j принимает значения от 1 до 3). Затем i становится равным 2, и внутренний цикл начинается заново: j снова принимает значения от 1 до 3. В итоге получается 2 × 3 = 6 итераций. rows и cols никогда не меняются: они лишь указывают циклам, когда остановиться.
Вложенные циклы обычно используются для создания узоров или работы со структурами в виде сетки:
for (row in 1..3) {
for (col in 1..row) {
print("*")
}
println()
}
// Вывод:
// *
// **
// ***Здесь диапазон внутреннего цикла зависит от переменной внешнего цикла, создавая треугольный узор. Функция print() выводит текст без перехода на новую строку, а println() переходит на следующую строку после каждой строки.
Задание
СреднеСчитай целое число n из ввода. Используй вложенные циклы, чтобы вывести таблицу умножения для чисел от 1 до n.
Для каждой строки i от 1 до n выведи произведения i * 1, i * 2, ..., i * n, разделённые пробелами, а затем перевод строки.
Например, если ввод равен 3, вывод должен быть таким:
1 2 3
2 4 6
3 6 9Если ввод равен 4, вывод должен быть таким:
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16Используй print() с пробелом, чтобы выводить значения в одной строке, а println() — чтобы перейти к следующей строке.
Используй новый счётчик для каждого цикла (например, i для строк и j для столбцов) и сравнивай оба с n. Не изменяй само n: оно снова понадобится для каждой строки.
Попробуйте сами
fun main() {
// Считайте входные данные
val n = readLine()!!.toInt()
// TODO: Напишите свой код ниже
// Используйте вложенные циклы, чтобы вывести таблицу умножения
// Используйте print() с пробелом для вывода значений в одной строке
// Используйте println(), чтобы перейти к следующей строке
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеОператоры сравненияПовторение — простая математика7Базовый ввод-вывод
Функция PrintlnШаблоны строкВвод ReadLineПреобразование типовПовторение — лет до выхода на пенсиюПовторение — правда или ложь10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияИменованные аргументыЗначения по умолчаниюФункции с одним выражениемПовторение — функция SigmaПовторение — функция валидации13Итерация по последовательностям
Итерация по элементамМетод WithIndexИтерация по строкам, ч. 1Итерация по строкам, ч. 2Повторение — индексированные буквы2Переменные
Val и VarВывод типовЧислаСтрокаЛогическое значениеСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Логические операторы, часть 3Тернарный оператор с выражением ifПовторение — простая логика8Калькулятор разделения счёта
Приветственное сообщениеВвод данных3Обработка null
Что такое безопасность nullТипы, допускающие nullОператор безопасного вызоваОператор ЭлвисаОсновы задания на функцииУтверждение ненулевого значенияПовторение — безопасный доступ6Принятие решений
Инструкция ifIf — ElseIf как выражениеВыражение whenWhen с диапазонамиПовторение — простой калькулятор9Циклы
Цикл ForЦикл WhileЦикл Do-WhileBreakContinueДиапазоны в циклахВложенный циклПовторение — факториалПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Kotlin