Вложенные циклы
Часть раздела Основы путешествия по Ruby на Coddy — урок 46 из 88.
Вы можете поместить один цикл внутрь другого, чтобы создать вложенный цикл. Внутренний цикл полностью выполняется для каждой итерации внешнего цикла, что делает этот паттерн полезным для работы с сетками, таблицами или комбинациями.
for i in 1..2
for j in 1..3
puts "i=#{i}, j=#{j}"
end
endЭто выводит шесть строк. Для каждого значения i внутренний цикл проходит через все значения j.
Сначала i равно 1, в то время как j принимает значения 1, 2, 3. Затем i становится равным 2, и j снова принимает значения 1, 2, 3.
Практический пример — создание простой таблицы умножения:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endЭто выводит сетку произведений 3x3. print оставляет значения на той же строке, а puts "" переходит на новую строку после завершения каждого ряда. Вы также можете смешивать различные типы циклов, например, цикл times внутри цикла for.
Задание
ЛегкоПрочитайте два целых числа из входных данных:
rows— количество строкcols— количество столбцов
Используйте вложенные циклы, чтобы вывести прямоугольник из звездочек (*) с заданными размерами. Каждая строка должна содержать cols звездочек, разделенных пробелами, и каждая строка должна быть на новой строке.
Используйте print для вывода звездочек внутри строки и puts для перехода на следующую строку после каждой строки.
Например, если входные данные 3 и 4, вывод должен быть следующим:
* * * *
* * * *
* * * *Если входные данные 2 и 5, вывод должен быть следующим:
* * * * *
* * * * *Шпаргалка
Вложенные циклы позволяют поместить один цикл внутрь другого. Внутренний цикл полностью выполняется для каждой итерации внешнего цикла.
for i in 1..2
for j in 1..3
puts "i=#{i}, j=#{j}"
end
endЭто выводит всего шесть строк. Для i=1, j проходит через 1, 2, 3. Затем для i=2, j снова проходит через 1, 2, 3.
Используйте print, чтобы оставить вывод на той же строке, и puts "", чтобы перейти на новую строку:
for row in 1..3
for col in 1..3
print "#{row * col} "
end
puts ""
endВы можете смешивать различные типы циклов, например, используя цикл times внутри цикла for.
Попробуйте сами
# Чтение входных данных
rows = gets.to_i
cols = gets.to_i
# TODO: Напишите ваш код ниже
# Используйте вложенные циклы, чтобы напечатать прямоугольник из звездочек
# Используйте print для звездочек внутри строки и puts для перехода на следующую строкуВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь