6.3 KiB
- Tópicos estudados
- Aula 0: Sobre o curso
- Aula 1: História
- 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…
- 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?
- Para que serve a função
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
:
- Qualificador
-
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
- Exemplo: programa
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
- 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)