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.
- Crie o arquivo
ataque_kratos.cna pastasrc/:
#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
- Abra o terminal integrado.
- Compile:
gcc ataque_kratos.c -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
🛠️ 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)