Menu
Coddy logo textTech

Loops Aninhados

Parte da seção Fundamentos do Journey de Ruby da Coddy — lição 46 de 88.

Você pode colocar um loop dentro de outro loop para criar um loop aninhado. O loop interno é executado completamente para cada iteração do loop externo, tornando esse padrão útil para trabalhar com grades, tabelas ou combinações.

for i in 1..2
  for j in 1..3
    puts "i=#{i}, j=#{j}"
  end
end

Isso exibe seis linhas. Para cada valor de i, o loop interno percorre todos os valores de j.

Primeiro i é 1 enquanto j percorre 1, 2, 3. Então i torna-se 2 e j novamente percorre 1, 2, 3.

Um exemplo prático é criar um padrão de multiplicação simples:

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

Isso imprime uma grade 3x3 de produtos. O print mantém os valores na mesma linha, e o puts "" muda para uma nova linha após a conclusão de cada linha. Você também pode misturar diferentes tipos de loop, como um loop times dentro de um loop for.

challenge icon

Desafio

Fácil

Leia dois números inteiros da entrada:

  1. rows - o número de linhas
  2. cols - o número de colunas

Use loops aninhados para imprimir um retângulo feito de asteriscos (*) com as dimensões fornecidas. Cada linha deve conter cols asteriscos separados por espaços, e cada linha deve estar em sua própria linha.

Use print para os asteriscos dentro de uma linha e puts para mudar para a próxima linha após cada linha.

Por exemplo, se as entradas forem 3 e 4, a saída deve ser:

* * * *
* * * *
* * * *

Se as entradas forem 2 e 5, a saída deve ser:

* * * * *
* * * * *

Folha de consulta

Loops aninhados permitem que você coloque um loop dentro de outro. O loop interno é executado completamente para cada iteração do loop externo.

for i in 1..2
  for j in 1..3
    puts "i=#{i}, j=#{j}"
  end
end

Isso gera seis linhas no total. Para i=1, j itera através de 1, 2, 3. Então, para i=2, j itera novamente através de 1, 2, 3.

Use print para manter a saída na mesma linha e puts "" para mudar para uma nova linha:

for row in 1..3
  for col in 1..3
    print "#{row * col} "
  end
  puts ""
end

Você pode misturar diferentes tipos de loops, como usar um loop times dentro de um loop for.

Experimente você mesmo

# Ler entrada
rows = gets.to_i
cols = gets.to_i

# TODO: Escreva seu código abaixo
# Use loops aninhados para imprimir um retângulo de asteriscos
# Use print para asteriscos dentro de uma linha e puts para mudar para a próxima linha
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos