Capítulo 08: Funções (Modularização) 🪓❄️
Neste capítulo, vamos aprender a dividir nosso código em blocos menores e reutilizáveis chamados Funções no Rust, com o tema God of War!
📖 O que são Funções?
Funções são blocos de código que realizam uma tarefa específica. Em Rust, usamos a palavra-chave fn e a seta -> para indicar o tipo de retorno.
📖 Exemplo Guiado: Ataque do Kratos
Vamos criar uma função que calcula o dano de um ataque baseado na força base e em um bônus.
- Crie o arquivo
ataque_kratos.rsna pastasrc/:
// Diferente do C++, a ordem das funções não importa no Rust!
fn calcular_dano(forca: i32, bonus: i32) -> i32 {
// No Rust, a última linha sem ponto e vírgula é o retorno!
forca + bonus
}
fn main() {
let forca_base = 50;
let bonus_furia = 25;
// Chamando a função
let dano = calcular_dano(forca_base, bonus_furia);
println!("Kratos atacou com as Laminas do Caos!");
println!("Dano causado: {}", dano);
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
rustc ataque_kratos.rs - Execute:
./ataque_kratos
Resultado Esperado:
Kratos atacou com as Laminas do Caos!
Dano causado: 75📊 Ilustração Visual: Fluxo da Função
Veja como o controle do programa passa para a função e retorna:
graph TD A[main] -->|"1. Chama calcular_dano"| B["Função: calcular_dano"] B -->|"2. Executa a soma"| B B -->|"3. Retorna o resultado"| A
🛠️ Prática Obrigatória 1: Barra de Vida
Crie uma função chamada exibir_vida(vida: i32) que não retorna nada e apenas exibe uma barra visual de vida usando colchetes (ex: se a vida for 100, exibe [||||||||||]). Use um laço dentro da função para desenhar a barra!
🔑 Gabarito de Código
Prática 1: barra_vida.rs
fn exibir_vida(vida: i32) {
print!("Vida: [");
let barras = vida / 10;
for _ in 0..barras {
print!("|");
}
println!("] {}%", vida);
}
fn main() {
let vida_kratos = 80;
exibir_vida(vida_kratos);
}