Laços Aninhados
Parte da seção Fundamentos do Journey de Rust da Coddy. Lição 41 de 75.
Um loop aninhado é simplesmente um loop dentro de outro loop. O loop interno completará todas as suas iterações para cada iteração individual do loop externo. Uma boa analogia para isso é um relógio: para cada hora (loop externo), o ponteiro dos minutos (loop interno) precisa completar seu ciclo completo de 60 minutos.
Exemplo de um loop aninhado:
let rows = 2;
let cols = 2;
for x in 0..rows {
for y in 0..cols {
println!("{} {}", x, y);
}
}
// Isso produzirá a seguinte saída:
// 0 0
// 0 1
// 1 0
// 1 1O loop externo (x) é executado rows vezes e, em cada uma dessas vezes, o loop interno (y) é executado cols vezes. Cada loop tem seu próprio contador: y começa novamente em 0 toda vez que o loop externo é executado, enquanto rows e cols permanecem iguais e apenas indicam aos loops quando parar.
Desafio
InicianteEscreva um programa que imprima um retângulo de asteriscos (*) com uma largura e uma altura determinadas.
Entrada: Dois números inteiros: width e height (o código inicial já os lê).
Por exemplo:
Se width = 5 e height = 3, a saída deve ser:
*****
*****
*****Se width = 4 e height = 6, a saída deve ser:
****
****
****
****
****
****Use um novo contador para cada loop (por exemplo, i para as linhas e j para os asteriscos em uma linha) e compare-o com height ou width. Não altere height nem width: cada linha precisa de width novamente.
Experimente você mesmo
use std::io;
fn main() {
let mut width_input = String::new();
let mut height_input = String::new();
io::stdin().read_line(&mut width_input).unwrap();
io::stdin().read_line(&mut height_input).unwrap();
let width: i32 = width_input.trim().parse().unwrap();
let height: i32 = height_input.trim().parse().unwrap();
// Escreva seu código abaixo
}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
4Operadores Parte 1
Operadores AritméticosOperador de MóduloAtalhos AritméticosOperadores de ComparaçãoComparação de Strings7Entrada e Saída Básica
Exibindo no ConsoleLendo a Entrada do UsuárioRevisão - Até 120Revisão - Verdadeiro ou Falso5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 33Variáveis Parte 2
Declaração de TipoConvenções de NomenclaturaInferência de TipoRecapitulação - Inicializar VariáveisConversão de Tipo9Laços
For sobre SériesLaço WhileBreakContinueLaços AninhadosRótulos de LoopLoop InfinitoRecapitulação - Entrada DinâmicaPratique por conta própria: Compilador de Rust online