jhonatancasale / learning-c

Produto gerado durante o estudo da linguagem de programação C

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Learning C

A ideia desse repositório é de alguma maneira poder contribuir para qualquer estudante de graduação que possa se sentir inspirado e/ou qualquer interessado em estudar o assunto. Não tenho a intenção e nem a pretensão de cobrir todo o conteúdo, técnicas, ferramentas, me comprometo em compartilhar o que aprendi sobre este assunto durante a graduação e algumas madrugadas de aha! Não pretendo cobrir tópicos como instalação, IDEs e por ai vai.

Vale ressaltar que não represento a Instituição de ensino da qual faço parte, apenas estou querendo compartilhar conhecimento de forma livre com quem se sentir interessado.

Para simplificar e caminhar, em alguns momentos escolheu-se focar em parte do programa e não em explicar todo o código, isso pois acredito que ter o código inteiro disponível para compilar e rodar é importante para os estudos, afinal, slide/texto não compila, muito menos roda! Em algum momento o trecho de código nebuloso deve ser esclarecido, se ninguém perder o ponteiro...

Roteiro de estudo

Conceitos básicos:

Conceitos gerais de programação

  1. Sobre a linguagem
  2. Tipos de variáveis (os principais)
  3. Operadores aritméticos e relacionais
  4. I/Os (printf, scanf, ...)
  5. Estruturas de decisão
  6. Estruturas de repetição
  7. Composições / Agregações
  8. Arrays
  9. Strings
  10. Matrizes
  11. Structs
  12. Unions
  13. Enums
  14. Modularização e Funções
  15. Recursividade
  16. Arquivos

Características e particularidades do C

  1. Criando tipos (typedef, struct, union, ...)
  2. sizeof
  3. Ponteiros
  4. Gerenciamento de memória (malloc, ...)
  5. Macros
  6. Compilação (flags de compilação, ...)
  7. Boas práticas da linguagem
  8. Pré-processador
  • #include
  1. Modularizando em arquivos
  2. Compilação condicional
  3. Makefile

Toy Applications e Problemas Resolvidos

  • wip

Conceitos avançados:

  1. Paralelismo (OpenMP, MPI, PThreads)
  2. System calls
  3. API de rede (sockets, ...)
  4. API DB (como se conectar com um banco, ...)
  5. "docstring" (Doxygen)
  6. IPC (mensagens)
  7. Técnicas de otimização
    1. segurança
    2. tempo (de execução)
    3. uso de memória
  8. Como debugar (gdb)
  9. APIs/Libs/Modules (como estender e utilizar o há de batuta por ai)
  10. GUI (gtk, qt)
  11. Ferramentas de Análise de código

Equipe

  • Repo owner and admin Jhonatan Casale < jhonatan at jhonatancasale dot com >

About

Produto gerado durante o estudo da linguagem de programação C

License:Apache License 2.0


Languages

Language:C 98.4%Language:Makefile 1.4%Language:C++ 0.2%