Programação de Baixo Nível
Turma 10 - Prof. Marcelo Cohen

Acesso ao Moodle

Próximas aulas:


Não há mais atividades

Programa da Disciplina

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.

Objetivos

1. Dominar a forma de representação interna das variáveis em um programa

2. Dominar os mecanismos de manipulação da estrutura interna de variáveis

3. Avaliar e aplicar as melhores técnicas de alocação dinâmica de memória

4. Avaliar e aplicar as melhores técnicas de uso de ponteiros para variáveis

5. Dominar a utilização de aritmética de ponteiros, sendo capaz de avaliar a melhor alternativa em cada situação

6. Dominar a utilização de strings e vetores com ponteiros, sendo capaz de avaliar a melhor alternativa em cada situação

7. Utilizar ponteiros para funções

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ção: gdb, 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

Bibliografia

Básica

Complementar

Material Extra

Avaliação

G1 = (P1 + P2 + T) / 3

Onde T é a média dos trabalhos realizados ao longo da disciplina

Material de Apoio