Programa da Disciplina
OBJETIVOS:
O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:
• Dominar a forma de representação interna das variáveis em um programa
• Dominar os mecanismos de manipulação da estrutura interna de variáveis
• Avaliar e aplicar as melhores técnicas de alocação dinâmica de memória
• Avaliar e aplicar as melhores técnicas de uso de ponteiros para variáveis
• Dominar a utilização de aritmética de ponteiros,
sendo capaz de avaliar a melhor alternativa em cada situação
• Dominar a utilização de strings e vetores com
ponteiros, sendo capaz de avaliar a melhor alternativa em cada situação
• Utilizar ponteiros para funções
EMENTA:
Discussão sobre utilização de linguagens de programação de baixo nível.
Estudo da estrutura de um programa em C, variáveis, comandos e
subprogramas. Entendimento dos processos de geração de
código(pré-processamento, compilação e ligação). Análise da forma
de armazenamanto de variáveis em memória. Análise sobre a representação
interna de variáveis(operações bitwise). Compreensão da noção de
ponteiros e sua relação com o uso de vetores e strings. Estudo sobre
passagem de parâmetris com ponteiros. Estudo sobre alocação dinâmica de
menória. Estudo sobre ponteiros para funções. Estudo sobre estruturas
encadeadas em C.
CONTEÚDO PROGRAMÁTICO:
UNIDADE 1: Introdução à Linguagem C
1.1 Motivação para uso de linguagens de baixo nível
1.2 Processo de compilação: pré-processador, compilador e ligador
1.3 Ferramentas de programaçãoddb, lint checker, gprof
1.3.1 Modularização via makefiles,
1.3.2 Ambientes de desenvolvimento
1.4 Estrutura básica da linguagem C
1.4.1 Tipos básicos e constantes
1.4.2 Variáveis do tipo ponteiros
1.4.3 Operadores lógicos, aritméticos e de comparação
1.4.4 Comandos de seleção e repetição
1.5 Uso de Subprogramas
1.5.1 Passagem de parâmetros utilizando ponteiros
1.5.2 Escopo de variáveis
1.5.3 Tipos de retorno
1.6 Estruturas de dados
1.6.1 Struct, union
1.6.2 Enumerações, vetores uni e multidimensionais
1.6.3 Strings
1.7 Arquivos
1.8 Criação de Bibliotecas
UNIDADE 2 - Manipulação de Bits
2.1 Operações bitwise: OR, AND, XOR, NOT, deslocamento
2.2 Mascaramento de bits
2.3 Aplicações típicas de operações bitwise
UNIDADE 3 - Alocação Dinâmica de Memória e Ponteiros
3.1 Organização das variáveis em memória
3.1.1 Tamanhos dos tipos básicos em memória
3.1.2 Char, short int, int, long int, float, double, pointer
3.1.3 Vetores e Structs
3.2 Diferença entre endereço e valor de uma variável
3.3 Ponteiros
3.3.1 Definição
3.3.2 Passagem de parâmetros com ponteiros
3.3.3 Uso de ponteiro para acesso a arrays, string e structs
3.3.4 Aritmética de Ponteiros
3.3.5 Typecast com ponteiros
3.3.6 Ponteiros para funções e uso de callback functions
3.4 Gerência dinâmica de memória
3.4.1 Alocação
3.4.2 Desalocação
3.4.3 Memory Leaks
3.5 Estruturas encadeadas
3.6 Depuração de ponteiros
AVALIAÇÃO
G1 = (P1 + P2 + T) / 3
Onde T é a média dos trabalhos realizados ao longo da disciplina