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, com o tema God of War! No C++, aprenderemos também um recurso muito poderoso: a passagem por referência!
📖 O que são Funções?
Funções são blocos de código que realizam uma tarefa específica. Elas ajudam a organizar o código, evitam repetição e facilitam a correção de erros.
📖 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.cppna pastasrc/:
#include <iostream>
using namespace std;
// Elas devem ser declaradas antes da main!
int calcular_dano(int forca, int bonus) {
int dano_total = forca + bonus;
return dano_total;
}
int main() {
int forca_base = 50;
int bonus_furia = 25;
int dano;
// Chamando a função
dano = calcular_dano(forca_base, bonus_furia);
cout << "Kratos atacou com as Laminas do Caos!" << endl;
cout << "Dano causado: " << dano << endl;
return 0;
}🕹️ Como Executar e Testar no VS Code
- Abra o terminal integrado.
- Compile:
g++ ataque_kratos.cpp -o ataque_kratos - 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
📖 Recurso C++: Passagem por Referência
Em C++, se usarmos o caractere & no parâmetro da função, podemos alterar a variável original que foi passada! Veja:
void curar(int &vida) {
vida = 100; // Altera a variável original diretamente!
}🛠️ Prática Obrigatória 1: Barra de Vida
Crie uma função chamada exibir_vida(int vida) que não retorna nada (void) 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.cpp
#include <iostream>
using namespace std;
void exibir_vida(int vida) {
cout << "Vida: [";
// Desenha 1 barra para cada 10 de vida
int barras = vida / 10;
for (int i = 0; i < barras; i++) {
cout << "|";
}
cout << "] " << vida << "%" << endl;
}
int main() {
int vida_kratos = 80;
exibir_vida(vida_kratos);
return 0;
}📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
(Siga o padrão estabelecido no Guia)