Capítulo 18: Organização em Múltiplos Arquivos 📁🧱

Neste capítulo, vamos aprender a dividir nosso projeto em vários arquivos separados, usando arquivos de cabeçalho (.h) e arquivos de implementação (.c), com o tema Lego!


📖 Por que dividir o código?

Quando os projetos crescem, colocar tudo em um único arquivo main.c fica confuso. Dividir o código em módulos (como blocos de Lego) facilita a organização, leitura e manutenção!

  • Arquivo .h (Header): Contém as declarações das funções (o manual do bloco).
  • Arquivo .c (Implementação): Contém o código real das funções (o bloco em si).

📖 Exemplo Guiado: Construindo com Blocos

Vamos criar um módulo para operações matemáticas simples e usá-lo na nossa main.

  1. Crie o arquivo operacoes.h na pasta src/:
// Diretivas para evitar que o arquivo seja incluído mais de uma vez
#ifndef OPERACOES_H
#define OPERACOES_H
 
// Apenas a declaração da função
int somar(int a, int b);
 
#endif
  1. Crie o arquivo operacoes.c na pasta src/:
#include "operacoes.h" // Inclui o arquivo de cabeçalho
 
// Implementação da função
int somar(int a, int b) {
    return a + b;
}
  1. Crie o arquivo main_lego.c na pasta src/:
#include <stdio.h>
#include "operacoes.h" // Inclui nosso próprio cabeçalho
 
int main() {
    int resultado = somar(10, 5);
    printf("Resultado da soma dos blocos: %d\n", resultado);
    return 0;
}

🕹️ Como Executar e Testar no VS Code

Para compilar múltiplos arquivos, precisamos passar todos eles para o comando gcc:

  1. Abra o terminal integrado.
  2. Compile: gcc main_lego.c operacoes.c -o programa_lego
  3. Execute: ./programa_lego

Resultado Esperado:

Resultado da soma dos blocos: 15

📊 Ilustração Visual: Estrutura Modular

Veja como os arquivos se conectam:

graph TD
    A[main_lego.c] -->|Inclui| B[operacoes.h]
    C[operacoes.c] -->|Inclui| B
    D[Compilador] -->|Junta| A
    D -->|Junta| C
    D --> E[Executável Final]

🛠️ Prática Obrigatória 1: Adicionando Subtração

Adicione a função subtrair(int a, int b) no projeto Lego! Você precisará:

  1. Declarar no operacoes.h.
  2. Implementar no operacoes.c.
  3. Usar na main_lego.c e exibir o resultado.

🔑 Gabarito de Código

Prática 1: Arquivos atualizados

operacoes.h

#ifndef OPERACOES_H
#define OPERACOES_H
 
int somar(int a, int b);
int subtrair(int a, int b); // Nova linha
 
#endif

operacoes.c

#include "operacoes.h"
 
int somar(int a, int b) {
    return a + b;
}
 
int subtrair(int a, int b) { // Nova função
    return a - b;
}

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

(Siga o padrão estabelecido no Guia)


Capitulo Anterior | Proximo Capitulo