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!


📖 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. A função main que usamos até agora é a função principal do C.


📖 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.c na pasta src/:
#include <stdio.h>
 
// 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);
 
    printf("Kratos atacou com as Laminas do Caos!\n");
    printf("Dano causado: %d\n", dano);
 
    return 0;
}

🕹️ Como Executar e Testar no VS Code

  1. Abra o terminal integrado.
  2. Compile: gcc ataque_kratos.c -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

🛠️ 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.c

#include <stdio.h>
 
void exibir_vida(int vida) {
    printf("Vida: [");
    // Desenha 1 barra para cada 10 de vida
    int barras = vida / 10;
    for (int i = 0; i < barras; i++) {
        printf("|");
    }
    printf("] %d%%\n", vida);
}
 
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