Menu
Coddy logo textTech

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

Часть раздела Основы путешествия по 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.

challenge icon

Задание

Легко

Прочитайте два целых числа из входных данных:

  1. rows — количество строк
  2. 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 для перехода на следующую строку
quiz iconПроверьте себя

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

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