Вложенные циклы
Часть раздела Основы путешествия по Ruby на Coddy. Урок 46 из 88.
Можно поместить один цикл внутрь другого, чтобы создать вложенный цикл. Внутренний цикл полностью выполняется при каждой итерации внешнего цикла, поэтому такой шаблон полезен для работы с сетками, таблицами или комбинациями.
rows = 2
cols = 3
for i in 1..rows
for j in 1..cols
puts "i=#{i}, j=#{j}"
end
endЭто выводит шесть строк. Для каждого значения i внутренний цикл проходит по всем значениям j.
Сначала i равно 1, пока j принимает значения 1, 2, 3. Затем i становится равным 2, и j снова принимает значения 1, 2, 3. rows и cols никогда не меняются: они лишь сообщают циклам, когда остановиться.
Практический пример — создание простого шаблона умножения:
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, вывод должен быть таким:
* * * * *
* * * * *После последней * в строке нет пробела.
Используй новый счётчик для каждого цикла (например, row для строк и col для звёздочек в строке) и сравнивай его с rows или cols. Не изменяй сами rows и cols: для каждой строки значение cols нужно снова.
Попробуйте сами
# Считайте входные данные
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Преобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложьПотренируйтесь самостоятельно: Онлайн-компилятор Ruby