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.

  1. Crie o arquivo ataque_kratos.cpp na pasta src/:
#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

  1. Abra o terminal integrado.
  2. Compile: g++ ataque_kratos.cpp -o ataque_kratos
  3. 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)


Capitulo Anterior | Proximo Capitulo