Coleção de Projetos em Linguagem C
Uma coleção de projetos em linguagem C projetados para iniciantes aprenderem e praticarem vários conceitos de programação, desde algoritmos básicos até programação de redes. Cada projeto é independente e inclui sua própria documentação e sistema de build.
Visão Geral dos Projetos
1. Implementação do SHA-512
Uma implementação de função hash criptográfica que demonstra:- Manipulação de bits
- Algoritmos complexos
- Gerenciamento de memória
- Operações de E/S de arquivos
2. Servidor HTTP
Uma implementação básica de um servidor HTTP que abrange:- Programação de sockets
- Conceitos básicos do protocolo HTTP
- Servir arquivos
- Comunicação em rede
3. Servidor-Cliente UDP
Um sistema de comunicação simples baseado em UDP que ensina:- Programação de socket UDP
- Arquitetura cliente-servidor
- Protocolos de rede
- Troca de mensagens
4. Scanner de Portas
Uma ferramenta de diagnóstico de rede que demonstra:- Programação de socket TCP
- Técnicas de varredura de rede
- Tratamento de erros
- Análise de argumentos da linha de comando
5. Implementação do Ping
Uma utilidade ping personalizada que abrange:- Protocolo ICMP
- Programação de socket raw
- Diagnóstico de rede
- Medição de tempo
6. Jogo da Velha
Uma implementação do clássico jogo que ensina:- Servidor de jogo para múltiplos jogadores
- Programação de sockets
- Lógica de jogo
- Manipulação de entrada do usuário
7. Sistema de Chat
Uma aplicação de chat em tempo real que demonstra:- Programação de socket TCP
- Multithreading
- Comunicação em tempo real
- Arquitetura cliente-servidor
8. Analisador Léxico
Um componente simples de front-end de compilador que demonstra:- Tokenização de código-fonte
- Técnicas de análise sintática
- Princípios de design de compiladores
- Manipulação de strings
9. Compilador Aritmético
Um compilador simples que recebe expressões aritméticas como entrada e gera um código semelhante a assembly:- Análise léxica (tokenização)
- Análise e avaliação de expressões
- Geração de código assembly
- Fundamentos da construção de compiladores
10. Jogo de Asteroides
Um jogo baseado em terminal onde você controla uma nave para evitar asteroides caindo:- Gerenciamento do estado do jogo
- Manipulação de entrada do usuário
- Gráficos baseados em terminal
- Mecânicas de jogabilidade em tempo real
- Detecção simples de colisão
Primeiros Passos
Cada projeto neste repositório é projetado para ser autossuficiente e inclui:
- Código-fonte
- Makefile ou configuração CMake
- README com instruções de compilação e uso
- Detalhes de implementação
- Navegue até o diretório do projeto
- Leia o README.md do projeto
- Siga as instruções de compilação
- Execute o programa conforme descrito
Pré-requisitos
- Compilador GCC (para projetos em C)
- Compilador G++ (para projetos em C++)
- Utilitário Make
- CMake (para projetos C/C++)
- Conhecimento básico de programação em C/C++
- Para projetos de rede: compreensão de conceitos básicos de redes
Livro Recomendado
Para começar a programar em C, recomendo este livro abrangente: The C Programming Language - Um recurso indispensável para aprender os fundamentos e boas práticas de programação em C.
Caminho de Aprendizagem
Estes projetos estão organizados em ordem crescente de complexidade:
- Comece com Jogo da Velha para conceitos básicos de programação
- Passe para SHA-512 para implementação de algoritmos
- Experimente o Servidor-Cliente UDP para redes básicas
- Prossiga para Servidor HTTP e Sistema de Chat para redes mais complexas
- Por fim, explore o Scanner de Portas e o Ping para conceitos avançados de redes
Contribuindo
Sinta-se à vontade para:
- Relatar bugs
- Sugerir melhorias
- Adicionar novas funcionalidades
- Criar novos projetos
- Melhorar a documentação
Licença
Este projeto é open source e está disponível para fins de aprendizado.
Nota
Alguns projetos relacionados à rede (Scanner de Portas, Ping) exigem privilégios de root/administrador para serem executados devido ao uso de sockets brutos. Sempre utilize essas ferramentas com responsabilidade e apenas em redes nas quais você tenha permissão para testar.
--- Tranlated By Open Ai Tx | Last indexed: 2025-07-22 ---
