Capítulo 04: Estruturas Repetitivas 🍄⭐

Neste capítulo, vamos aprender a repetir blocos de código usando os laços while e for do Rust, com o tema Super Mario!


📖 O que são Estruturas Repetitivas?

Servem para executar o mesmo bloco de código várias vezes. No Rust, temos o while, o for e o loop (laço infinito).


📖 Exemplo Guiado: Coleta de Moedas

Vamos criar um programa que simula o Mario coletando moedas até atingir o limite de 5 moedas usando o laço while.

  1. Crie o arquivo coleta_moedas.rs na pasta src/:
fn main() {
    let mut moedas = 0; // Precisa ser mutável!
 
    while moedas < 5 {
        moedas += 1;
        println!("Mario coletou uma moeda! Total: {}", moedas);
    }
 
    println!("Parabens! Voce completou a fase!");
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: rustc coleta_moedas.rs
  3. Execute: ./coleta_moedas

Resultado Esperado:

Mario coletou uma moeda! Total: 1
Mario coletou uma moeda! Total: 2
Mario coletou uma moeda! Total: 3
Mario coletou uma moeda! Total: 4
Mario coletou uma moeda! Total: 5
Parabens! Voce completou a fase!

📖 Recurso Rust: O Laço for com Intervalos

Em Rust, o for é muito usado com intervalos (ranges). Veja como fazer uma contagem de 1 a 5:

for i in 1..=5 { // O '=5' significa que inclui o número 5
    println!("Contagem: {}", i);
}

📊 Ilustração Visual: Fluxo do Laço

Veja como o loop se comporta:

graph TD
    A{"Moedas < 5?"} -->|Sim| B[Coletar Moeda]
    B --> C[Aumentar Contador]
    C --> A
    A -->|Não| D[Fim da Fase]

🛠️ Prática Obrigatória 1: Contagem Regressiva

Crie um programa chamado contagem_bomba.rs que faça uma contagem regressiva de 5 até 1 (usando o laço for e invertendo o intervalo) para simular o tempo de explosão de uma bomba do Bob-omb.

  • Dica: Para inverter um intervalo em Rust, use (1..=5).rev().

🔑 Gabarito de Código

Prática 1: contagem_bomba.rs

fn main() {
    println!("Bob-omb vai explodir!");
    
    // O .rev() inverte a ordem do intervalo
    for i in (1..=5).rev() {
        println!("{} ...", i);
    }
 
    println!("💥 CABUM!");
}

Capitulo Anterior | Proximo Capitulo