5.4 KiB
- Tópicos estudados
- Aula 0: Sobre o curso
- Aula 2: Dados e instruções
- Aula 3: Tipos de dados
- Aula 4: Variáveis e ponteiros
- Aula 5: Estruturas de controle de fluxo
- Aula 6: Vetores
- Aula 7: Vetores, ponteiros e strings
- Aula 8: Processos e layout de memória
- Aula 9: Argumentos e ambiente
- Aula 10: Entrada e saída de dados
- Aula 11: Leitura da entrada padrão com
scanf
- Aula 12: Leitura da entrada padrão com
fgets
- Aula 13: Leitura da entrada padrão com
read
- Aula 14: Abertura de arquivos para leitura
- Aula 15: Abertura de arquivos para escrita
- Aula 16: Abertura de arquivos para leitura e escrita
Tópicos estudados
Aula 0: Sobre o curso
- Do que vamos precisar
- Requisitos
- O que vamos aprender
- Como vamos aprender
- Por que aprender
- Como clonar o repositório do curso
- Como atualizar o repositório do curso
-
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
- Exemplo de um programa em C
Aula 2: Dados e instruções
- Instruções
- Dados
-
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?
- Para que serve a função
Aula 3: Tipos de dados
-
Tipos são tamanhos de dados na memória
- Maior número que se pode escrever com 4 bytes (32bits):
-
Tipos primitivos
- Qualificador
unsigned
(sem sinal): - Qualificador
long
:
- Qualificador
- Tipos customizados
- Expressões constantes (valores literais)
- O tipo
void
- Modelagem de tipos (type casting)
Aula 4: Variáveis e ponteiros
- Declaração e definição
- 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
- Loop
while
- Loop
do..while
-
Estrutura de decisão
if..else if..else
- Dica:
else if
abreviado
- Dica:
- Estrutura
switch..case
- 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
- 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
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
-
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
- Conversão para inteiros com
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 chamadaread
- 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
)
- Descritores de arquivos (tipo
-
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+"
- A função
-
Procedimentos úteis
- Quantidade de linhas
- Obter o tamanho do arquivo
- Testar se um arquivo está vazio (0 bytes)