Menu
CoddyTech

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 a cada iteração do loop externo, tornando esse padrão útil para trabalhar com grades, tabelas ou combinações.

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

Isso produz 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. Depois, i passa a ser 2 e j percorre novamente 1, 2, 3. rows e cols nunca mudam: eles apenas indicam aos loops quando parar.

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

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

Isso imprime uma grade 3x3 de produtos. print mantém os valores na mesma linha, e puts "" passa para uma nova linha depois que cada linha é concluída. Você também pode combinar 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 informadas. Cada linha deve conter cols asteriscos separados por espaços, e cada linha deve ficar em sua própria linha.

Use print para os asteriscos dentro de uma linha e puts para ir 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:

* * * * *
* * * * *

Não há espaço após o último * de uma linha.

Use um novo contador para cada loop (por exemplo, row para as linhas e col para os asteriscos em uma linha) e compare-o com rows ou cols. Não altere rows e cols: cada linha precisa usar cols novamente.

Experimente você mesmo

# Leia a entrada
rows = gets.to_i
cols = gets.to_i

# TODO: Escreva seu código abaixo
# Use laços aninhados para imprimir um retângulo de asteriscos
# Use print para os asteriscos de uma linha e puts para passar à 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

Pratique por conta própria: Compilador de Ruby online