Aula 03 - Controle de Fluxo 🔄
Objetivo
Objetivo: Aprender a direcionar o caminho que o seu programa segue usando estruturas condicionais e de repetição, com foco especial no poder do match.
1. Condicionais: if / else 🚦
Diferente de C ou Java, o if no Rust é uma expressão, o que significa que ele pode retornar um valor.
fn main() {
let numero = 7;
if numero < 5 {
println!("Condição verdadeira");
} else {
println!("Condição falsa");
}
// Usando if em uma atribuição (Expressão)
let condicao = true;
let resultado = if condicao { 5 } else { 6 };
println!("O resultado é: {}", resultado);
}
2. O Poder do match 🎯
O match é como um switch "bombado". Ele é exaustivo: o compilador garante que você tratou todos os casos possíveis.
fn main() {
let numero = 3;
match numero {
1 => println!("Um"),
2 | 3 => println!("Dois ou Três"),
4..=10 => println!("Entre quatro e dez"),
_ => println!("Qualquer outra coisa"), // Default (padrão)
}
}
Visualização: Como o Match funciona
graph TD
A["Valor Entrada"] --> B{Qual Padrão?}
B -->|Padrão 1| C["Executa Código 1"]
B -->|Padrão 2| D["Executa Código 2"]
B -->|Padrão _| E["Caso Padrão (Catch-all)"]
style B fill:#f9f,stroke:#333,stroke-width:2px
3. Estruturas de Repetição (Loops) 🔁
Rust possui três tipos de loops: loop, while e for.
loop (Loop Infinito)
Útil para repetir até que um break seja encontrado. Pode retornar um valor!
let mut contador = 0;
let resultado = loop {
contador += 1;
if contador == 10 {
break contador * 2;
}
};
while (Loop Condicional)
for (Loop em Coleções ✨)
O mais utilizado por ser mais seguro e eficiente.
let a = [10, 20, 30, 40, 50];
for elemento in a {
println!("O valor é: {}", elemento);
}
// Usando Ranges
for numero in (1..4).rev() {
println!("{}...", numero);
}
4. Mini-Projeto: Jogo de Adivinhação (Base) 🎲
Vamos aplicar o que aprendemos para criar o núcleo de um jogo:
1. Gere um número "secreto" (fixo por enquanto).
2. Peça ao usuário uma entrada (simulada ou via stdin).
3. Use um loop para permitir várias tentativas.
4. Use um match para comparar o palpite com o número secreto (Menor, Maior ou Igual).
5. Use break para sair do loop quando ganhar.
5. Exercício de Fixação 🧠
Dica
Sempre prefira o for ao while quando estiver iterando sobre coleções para evitar erros de índice.
- Por que dizemos que o
ifé uma expressão no Rust? - O que acontece se você esquecer de tratar um caso no
match? - Como você faria um loop que conta de 1 a 100 (inclusive)?
Próxima Aula: Vamos organizar nosso código com Funções e Módulos! 📦