Essa é a primeira tentativa de escrever uma apostila do zero aqui neste sistema.
Os capítulos podem ser acessados no menu de navegação à esquerda, e seus tópicos estão resumidos a seguir:
Básico | Intermediário | Avançado |
---|---|---|
1. História do C | 12. Indentação e goto |
23. Alocação dinâmica - extras |
2. O que é o C? Que ferramentas usamos? | 13. Ponteiros e arrays | 24. Parâmetros argc e argv |
3. Hello World | 14. struct e union |
25. Variáveis de ambiente |
4. Bits, bytes, e tipos | 15. enum e typedef |
26. sscanf |
5. Símbolos, declarações, definições | 16. Lendo texto do terminal | 27. sprintf e filosofias de segurança |
6. Funções | 17. Manipulação de strings | 28. Linters, hardening, e debuggers |
7. Strings, streams, saída-padrão | 18. Lendo números do terminal | 29. Binários e linkagem |
8. Expressões, operadores, aritmética | 19. Lendo e escrevendo arquivos | 30. Cabeçalhos e build systems |
9. Operadores e atribuições | 20. Valores de erro e errno |
|
10. if /else e switch /case |
21. Palavras-chave menos conhecidas | |
11. Loops: do /while e for |
22. Alocação com malloc /free |
Note que a minha estratégia é meio diferente... a maioria dos documentos e professores procura ensinar um monte de conceitos centrais na pressa de cativar os leitores/alunos, e somente depois ir incrementando, completando e corrigindo.
Eu considero que quem for ler esta apostila terá a maturidade para entender que conceitos devem ser construídos do zero para serem usados direito, especialmente numa linguagem pedante e nada leniente como o C.
Minha abordagem, então, vai parecer ensinar um monte de coisa inútil antes de chegar no que interessa -- o if
só nasce no capítulo 10. Dava pra chegar no if
no capítulo 3 se eu quisesse... mas aí ia aparecer algo meio estranho, e eu teria que passar o resto da apostila colando post-its e fazendo asteriscos, quebrando o ritmo pra corrigir alguma deficiência. Imagina isso, em paralelo, pra todos os conceitos da linguagem, o inferno que ia ser!