🆕 Primeira vez aqui? Este guia vai te ensinar TUDO passo a passo!
Este projeto tem vários exercícios de programação em C, cada um em sua própria pasta e pode ser executado separadamente.
Exemplo da estrutura:
Ex01_Soma/ ← Exercício 1 (calcula soma)
Ex02_Media/ ← Exercício 2 (calcula média)
Ex03_ParOuImpar/ ← Exercício 3 (verifica par ou ímpar)
...
| Projeto | Como funciona | Quando usar |
|---|---|---|
| MenuExercicios | Um programa com menu, todos exercícios juntos | Quando você quer navegar entre exercícios facilmente |
| ExerciciosSeparados (este) | Cada exercício é um programa separado | Quando você quer testar um exercício por vez |
Cada exercício neste projeto já contém a configuração necessária para exibir acentos corretamente no Windows.
Os arquivos main.c de cada exercício já incluem:
SetConsoleOutputCP(65001); // Configura console para UTF-8
SetConsoleCP(65001);
setlocale(LC_ALL, "pt_BR.UTF-8");Isso significa que:
- ✅ Quando você clonar este repositório, os acentos já funcionarão automaticamente
- ✅ Você NÃO precisa fazer nada após clonar
- ✅ A configuração já está salva no código e será baixada junto com o projeto
Se você for criar um novo exercício em C no Windows e quiser que acentos funcionem:
- Adicione
#include <windows.h>no topo do arquivo - No início da função
main(), adicione:SetConsoleOutputCP(65001); SetConsoleCP(65001); setlocale(LC_ALL, "pt_BR.UTF-8");
- Salve todos os arquivos
.cem UTF-8 com assinatura (BOM)- No Visual Studio: File → Save As → Save with Encoding → UTF-8 with signature
Isso pode acontecer se:
- Você editou arquivos fora do Visual Studio (ex: Notepad)
- Os arquivos foram salvos em outra codificação
Solução:
- No Visual Studio, abra cada arquivo
.c - Vá em File → Advanced Save Options
- Escolha UTF-8 with signature - Codepage 65001
- Salve o arquivo
- Compile e execute novamente
🌐 Estou no GitHub Codespaces (navegador)
Você já está pronto! O ambiente já tem tudo instalado.
- Abra o terminal (
Ctrl+`ou menu Terminal → New Terminal) - Compile todos os exercícios:
make
- Execute um exercício específico:
make run PROG=ex01 # Executa o exercício 1 make run PROG=ex05 # Executa o exercício 5
- Veja a lista de exercícios disponíveis:
make list
Para depurar (F5):
- Pressione
F5 - É preciso instalar a extensão C/C++ da Microsoft no Codespace
- Escolha "Debug - Escolher exercício"
- Digite o nome (ex:
ex01) - O programa vai parar nos breakpoints
💻 Estou no VS Code no Windows
AZAR!!! NÃO ESTÁ RODANDO O MAKE!! NÃO DEPURA!!Opção A - Instalar tudo de uma vez (recomendado):
- Abra o PowerShell como Administrador
- Instale o Chocolatey (gerenciador de pacotes):
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
- Instale o compilador e CMake:
choco install mingw cmake make -y - Feche e abra o VS Code novamente
Opção B - Instalar o Visual Studio Build Tools:
- Baixe: https://visualstudio.microsoft.com/downloads/
- Instale "Build Tools for Visual Studio"
- Marque "Desktop development with C++"
No VS Code:
- Abra a pasta do projeto (File → Open Folder)
- Abra o terminal (
Ctrl+`) - Compile:
make
- Execute um exercício:
make run PROG=ex01
OU simplesmente:
- Pressione
Ctrl+Shift+B(compila todos) - Pressione
F5(escolhe qual exercício debugar)
💻 Estou no VS Code no Linux/Mac
Abra o terminal e execute:
Ubuntu/Debian:
sudo apt update
sudo apt install build-essential gdb cmake -yFedora:
sudo dnf install gcc gdb cmake make -yMac:
brew install gcc cmakeNo VS Code:
- Abra a pasta do projeto (File → Open Folder)
- Abra o terminal (
Ctrl+`) - Compile:
make
- Execute um exercício:
make run PROG=ex01
OU simplesmente:
- Pressione
Ctrl+Shift+B(compila todos) - Pressione
F5(escolhe qual exercício debugar)
🪟 Estou no Visual Studio 2022 (Windows)
- Abra o Visual Studio 2022
- Clique em "Abrir uma pasta local" (ou File → Open → Folder)
- Selecione a pasta
ExerciciosSeparados - O Visual Studio vai detectar o
CMakeLists.txtautomaticamente - Aguarde alguns segundos (ele vai configurar o projeto)
- Na barra de ferramentas, escolha qual exercício executar:
- Clique na lista suspensa (onde está escrito "Selecionar Item de Inicialização")
- Escolha
ex01.exe,ex02.exe, etc.
- Pressione
F5para compilar e executar o exercício escolhido
Dica: Você pode alternar entre diferentes exercícios sem recompilar tudo!
🐧 Estou no WSL (Windows Subsystem for Linux) / VS Code no Windows
Se você usa WSL + VS Code, é comum o terminal integrado pedir a passphrase da sua chave SSH em cada nova sessão — isso pode interromper operações como depuração. Uma solução prática é usar o keychain para carregar a chave apenas na primeira abertura da sessão.
Passos rápidos:
-
Instale o keychain:
sudo apt update && sudo apt install keychain -y -
Adicione ao final do seu
~/.bashrc(substituaid_ed25519pelo nome da sua chave, se for diferente):eval "$(keychain --eval --agents ssh id_ed25519)"
-
Recarregue o shell ou abra um novo terminal:
source ~/.bashrc
Notas importantes:
-
Na primeira abertura após reboot/login você deverá digitar a passphrase; depois disso o keychain reaplica a chave para novas shells na mesma sessão até o próximo reboot/login.
-
Para verificar se a chave foi carregada:
ssh-add -l -
Segurança: nunca adicione chaves privadas ou passphrases neste README nem em repositórios públicos.
-
Para usuários de
zsh: adicione a mesma linha ao seu~/.zshrcem vez do~/.bashrc:eval "$(keychain --eval --agents ssh id_ed25519)"
-
Encaminhar o agente SSH do Windows para o WSL: se você usa o OpenSSH do Windows (ou um agente do Windows), é possível encaminhar o agente para o WSL e evitar gerenciar chaves separadamente. Essa configuração é mais avançada e depende do agente que você usa (OpenSSH, Pageant, etc.). Se quiser, posso descrever o passo a passo para o seu caso.
- Abra o arquivo que você quer debugar (ex:
Ex01_Soma/main.c) - Clique na margem esquerda (ao lado do número da linha) para criar um breakpoint (bolinha vermelha)
- Pressione
F5 - Escolha qual exercício você quer debugar (ex:
ex01) - O programa vai parar no breakpoint
- Use os botões no topo para:
▶️ Continue (F5) - continua até o próximo breakpoint- ⏭️ Step Over (F10) - executa linha por linha
- ⏬ Step Into (F11) - entra dentro de funções
- ⏹️ Stop (Shift+F5) - para a execução
- Escolha o exercício na barra de ferramentas
- Clique na margem esquerda para criar breakpoint
- Pressione F5
ExerciciosSeparados/
├── Ex01_Soma/ ← Exercício 1
│ ├── main.c ← Código principal (tem int main)
│ └── ex01.c ← Implementação
├── Ex02_Media/ ← Exercício 2
│ ├── main.c
│ └── ex02.c
├── Ex03_ParOuImpar/ ← Exercício 3
├── ... (Ex04 a Ex10)
│
├── bin/ ← Binários compilados (ex01, ex02, etc)
├── build/ ← Arquivos temporários do CMake
│
├── Makefile ← Receita de como compilar (Linux/Mac)
├── CMakeLists.txt ← Receita de como compilar (todas plataformas)
├── .vscode/ ← Configurações do VS Code
│ ├── tasks.json ← Como compilar no VS Code
│ └── launch.json ← Como depurar no VS Code
└── README.md ← Este arquivo!
Solução: Você precisa instalar o Make.
- Windows:
choco install make - Linux:
sudo apt install make - Mac:
brew install make
Solução: Você precisa instalar um compilador C.
- Windows: Instale MinGW ou Visual Studio Build Tools
- Linux:
sudo apt install build-essential - Mac:
xcode-select --install
Solução:
chmod +x bin/ex01
./bin/ex01Solução: Compile primeiro!
make
make run PROG=ex01Se você alternar entre executar CMake no Windows (PowerShell / Visual Studio) e em um ambiente Unix-like (WSL, Git Bash ou Codespaces), pode ver um erro parecido com:
The current CMakeCache.txt directory ... is different than the directory ... where CMakeCache.txt was created.
Isso acontece porque o CMake salva caminhos absolutos no cache e, ao rodar em outro subsystem (ex.: /mnt/c/... vs C:/...), os caminhos não batem. A solução simples é limpar a pasta build antes de reconfigurar:
# Em bash/WSL/Codespaces
rm -rf build
cmake -S . -B build
cmake --build buildNo PowerShell (Windows):
Remove-Item -Recurse -Force build
.\build.ps1Após isso, reconfigure o projeto no ambiente desejado (Visual Studio, PowerShell, WSL, etc.) e os builds funcionarão normalmente.
Solução:
- Feche o Visual Studio
- Delete a pasta
out/oubuild/ - Abra o projeto novamente
- Aguarde o CMake reconfigurar
make # Compila TODOS os exercícios
make run PROG=ex01 # Executa o exercício 01
make run PROG=ex05 # Executa o exercício 05
make list # Lista todos os exercícios
make clean # Remove binários
make help # Mostra ajudacmake -B build -S . # Configura o projeto
cmake --build build # Compila TODOS
./build/ex01 # Executa ex01 (Linux/Mac)
.\build\ex01.exe # Executa ex01 (Windows)- Crie uma pasta:
Ex11_MeuExercicio/ - Crie o arquivo
main.cdentro dela:#include <stdio.h> int main(void) { printf("Meu novo exercício!\n"); return 0; }
- Compile:
make
- Execute:
make run PROG=ex11
make new NUM=11 NAME=MeuExercicioVocê também pode criar um novo exercício a partir dos templates com o alvo make new.
- No Windows (PowerShell):
make new PROG=ex13 NAME=Ex13 # cria Ex13_Ex13/ex13.c e main.c
make new NUM=14 NAME=Teste # cria Ex14_Teste/ex14.c e main.c- No WSL / Linux / macOS (bash):
make new PROG=ex15 NAME=WSLTest
# ou
make new NUM=15 NAME=WSLTestO comando usa os templates em .templates/ e substitui __PROG__ pelo nome do programa (exNN). No Windows o Make delega a criação para scripts/new.ps1 (PowerShell); em ambientes POSIX a criação é feita pelo fluxo de make/bash.
Nota importante sobre comportamento por plataforma:
-
No WSL / Linux / macOS:
make newcria os arquivos a partir dos templates e, em seguida, tenta compilar apenas o exercício recém-criado (gerabin/exNN). Isso facilita testar rapidamente o exercício recém-criado. -
No Windows (PowerShell):
make newapenas cria os arquivos (não compila automaticamente). Isso evita dependências de compilador/ambiente no Windows e mantém o processo explícito.
Se você quiser que o Windows também compile automaticamente, posso adicionar isso — me pergunte antes, pois pode falhar se o Visual Studio/MinGW não estiver configurado.
Isso vai criar a pasta Ex11_MeuExercicio/ com um main.c pronto!
- Comece pelo Ex01_Soma - é o mais simples
- Leia o código antes de executar
- Modifique algo e veja o que acontece
- Use breakpoints para entender o fluxo
- Compare com o projeto MenuExercicios
- Crie seus próprios exercícios
Abra uma Issue no GitHub explicando seu problema: https://github.com/gabrielwalter/ExerciciosSeparados/issues
Bons estudos! 🚀