diff --git a/contents.org b/contents.org new file mode 100644 index 0000000..6b318d2 --- /dev/null +++ b/contents.org @@ -0,0 +1,235 @@ +* Tópicos estudados + +** Aula 0: Sobre o curso + +- Do que vamos precisar... +- Requisitos... +- O que vamos aprender... +- Como vamos aprender... + - Aulas divididas em 3 estágios: + - Repositório do curso: +- Por que aprender... +- Como clonar o repositório do curso... + - Importante! +- Como atualizar o repositório do curso... + +** Aula 1: História + +- Resumo do vídeo... +- Conceitos abordados na aula... + - O que é um programa de computador? + - O que é linguagem de máquina? + - O que é uma linguagem de programação? + - O que são linguagens de baixo e alto nível? + - O que é compilação? + - O que são implementações? + - O que são arquiteturas orientadas a palavras? + - O que são arquiteturas orientadas a bytes? +- Características da linguagem C... +- Implementação GNU/Linux... + - Compilador: + - Biblioteca C Padrão: + - Obter a especificação padrão do gcc... +- Compilação... + - Etapas: +- Exemplo de um programa em C... + - Compilação: + - Execução: + +** Aula 2: Dados e instruções + +- Instruções +- Dados +- Exemplo (=x10.c=) + - O que temos aqui: +- Outro exemplo (=x10const.c=) + - O que há de novo: +- Mais um exemplo (=quadrado.c=) + - O que há de novo desta vez: +- Dúvidas + - Para que serve a função =main=? + - Qual é o significado de =void=? + - Por que o tipo do retorno de =main= é =int=? + - A função =main= poderia retornar outros tipos de dados? + - A função =main= poderia retornar uma string? + - Por que o cabeçalho =stdio.h= foi incluído no programa? + +** Aula 3: Tipos de dados + +- Exemplo da última aula (=quadrado.c=) +- Tipos são tamanhos de dados na memória + - Maior número que se pode escrever com 4 bytes (32bits): + - O que aconteceu? +- Exemplo corrigido (=quadrado-long.c=) +- Tipos primitivos + - Qualificador =unsigned= (sem sinal): + - Qualificador =long=: +- Tipos customizados + - Exemplos: +- Expressões constantes (valores literais) +- O tipo =void= + - Funções sem valor de retorno: + - Funções que não recebem argumentos: + - Ponteiros de dados de tipo indeterminado: +- Modelagem de tipos (type casting) + +** Aula 4: Variáveis e ponteiros + +- Declaração e definição + - Por que isso aconteceu? + - Como evitar esse erro? +- Atributos das variáveis +- Escopo de variáveis +- Ponteiros + - Declaração do ponteiro +- Perguntas da aula + - A cada execução do programa, os endereços das variáveis mudam? + - O ponto da declaração de uma variável global faz diferença? + +** Aula 5: Estruturas de controle de fluxo + +- Controle de fluxo +- O loop =for= + - Sintaxe + - Exemplo do vídeo +- Loop =while= + - Sintaxe + - Exemplo do vídeo +- Loop =do..while= + - Sintaxe + - Exemplo do vídeo +- Estrutura de decisão =if..else if..else= + - Sintaxe + - Exemplo do vídeo + - Dica: =else if= abreviado +- Estrutura =switch..case= + - Sintaxe + - Exemplo do vídeo + - Bônus: expressão condicional (ternária) + +** Aula 6: Vetores + +- Utilidade dos vetores +- Declaração e inicialização de vetores + - Tamanho de um vetor em tempo de compilação + - Inicialização parcial +- Acesso aos elementos de um vetor +- Iteração pelos elementos +- Vetores e funções + - Relação entre vetores e ponteiros +- Vetores de caracteres (strings) + - Mais diferenças entre vetores e ponteiros + +** Aula 7: Vetores, ponteiros e strings + +- Notações de acesso + - Exemplo +- Vetores e funções +- Strings são vetores de caracteres +- Inicializadores escalares e agregados +- Vetores de comprimentos variáveis (VLA) + +** Aula 8: Processos e layout de memória + +- Filosofia UNIX + - Primeiro princípio: especialização + - Segundo princípio: modularidade + - Terceiro princípio: fluxos de texto +- A interface de linha de comando (CLI) + - Operadores de controle do shell +- O que são processos +- Como programas são executados +- Layout de memória + - Conteúdo do binário executável + - Região do HEAP + - Região da pilha (stack) + +** Aula 9: Argumentos e ambiente + +- Vetores e strings + - Vetores de "ponteiros" + - Vetores de strings + - Vetor de strings terminado com NULL +- Parâmetros da função =main= +- Conversão de strings para números + - Exemplo: programa =soma.c= + +** Aula 10: Entrada e saída de dados + +- Tabela de descritores de arquivos + - Fluxos de dados padrão + - Uma nota sobre dispositivos + - Representação em /proc + - Um exemplo em C +- Redirecionamentos e pipes + - Redirecionamentos + - Pipes +- Acumuladores (buffers) + - Buffers de entrada e saída do programa + - Buffer de saída do programa + - Buffer de entrada do programa + - Entrada padrão não bufferizada + +** Aula 11: Leitura da entrada padrão com =scanf= + +- Leitura interativa da entrada padrão +- Leitura formatada de linhas com =scanf= + - Para reduzir as chances de erro + - Descarregando o buffer de entrada + - Inicialização de valores numéricos + - Buffer overflow + +** Aula 12: Leitura da entrada padrão com =fgets= + +- A função =fgets= + - Uma nota sobre o tipo ponteiro para FILE +- O problema da quebra de linha +- Retorno nulo ambíguo +- Conversão para números + - Conversão para inteiros com =sscanf= + - Conversão para inteiros longos com =strtol= + - Outras funções de conversão + +** Aula 13: Leitura da entrada padrão com =read= + +- A função =read= +- Conversão para string incluindo o terminador nulo + - Quando não converter os bytes lidos em string +- O buffer do terminal + - Descarga do buffer do terminal + - Implementação de =flush_stdin= com a chamada =read= + - Descarga condicional do buffer do terminal +- Definindo um prompt + +** Aula 14: Abertura de arquivos para leitura + +- Diferença entre streams e descritores de arquivos + - Descritores de arquivos (tipo =int=) + - Streams (tipo ponteiro para =FILE=) +- Procedimento geral de acesso a arquivos para leitura + - Abertura + - Processamento + - Fechamento + +** Aula 15: Abertura de arquivos para escrita + +- Modos de abertura de arquivos + - Modos complementares + - Modos texto e binário +- Modos de escrita + - Abertura de um arquivo para escrita ("w") + - Abertura de um arquivo para append ("a") +- Notas gerais + +** Aula 16: Abertura de arquivos para leitura e escrita + +- Modos de abertura para leitura e escrita +- Manipulação do ponteiro interno + - A função =fseek= + - Pontos de origem de =fseek= + - Abertura de arquivos com "r+" + - Abertura de arquivos com "a+" +- Procedimentos úteis + - Quantidade de linhas + - Obter o tamanho do arquivo + - Testar se um arquivo está vazio (0 bytes)