MAC0211 - Laboratório de Programação I
Agenda do Curso
-
- 26/02/2013 - Aula 1: (i) Visão geral do curso; (ii) introdução à história da computação e da arquitetura dos computadores; (iii) introdução à história das linguagens de programação.
- 28/02/2013 - Aula 2: (i) Arquitetura de von Neumann e o ciclo de busca e execução; (ii) arquitetura da família Intel x86; (iii) linguagem de montagem: porque usar e porque não usar; (iv) sistema de numeração binário.
-
-
-
806.1 Kb Documento PDF
-
466.9 Kb Documento PDF
-
- 05/03/2013 - Aula 3: (i) continuação da aula sobre sistemas de numeração -- o sistema hexadecimal e representação de números negativos em Complemento 2; (ii) primeiras instruções em linguagem de montagem (MOV, XCHG, ADD, SUB, INC e DEC).
- 07/03/2013 - Aula 4: mais linguagem de montagem - (i) mais instruções aritméticas: MUL, DIV, IMUL, IDIV; (ii) instruções lógicas: AND, OR, XOR, NOT, NEG; (iii) instruções para saltos condicionais e incondicionais: JMP, CMP, JL, JG, etc.; (iv) chamadas ao sistema; (v) montadores - NASM e GAS; (vi) "hello, world" no NASM e no GAS.
-
- 12/03/2013 - Aula 5: (i) principais diferenças entre as sintaxes da AT&T (padrão no GAS) e a da INTEL (usada no NASM); (ii) declaração de variáveis e constantes no NASM; (iii) exemplo de "tradução" de programa em linguagem de montagem para linguagem de máquina; (iv) exemplo de programa em linguagem de montagem para a leitura de dados de um arquivo texto.
- 14/03/2013 - Aula 6: (i) acesso a pilha de dados do programa (instruções PUSH e POP); (ii) uso de sub-rotinas (instruções CALL e RET); (iii) primeiras noções sobre a implementação de funções em linguagem de montagem; (iv) exemplos de programas.
-
-
-
Pasta
-
Aula 7 - 19/03/2013: (i) Convenções para implementação de funções em linguagem de montagem; (ii) combinando código em C a código em linguagem de montagem; (iii) exemplos de programas.
Aula 8 - 21/03/2013: (i) Acesso aos parâmetros passados via linha de comando a partir de um programa em linguagem de montagem; (ii) rápida introdução ao uso dos depuradores DDD e GDB; (iii) exemplos de programas recursivos em linguagem de montagem; (iv) segmentação de memória.
-
-
-
Pasta
-
Pasta
-
Tarefa
-
-
- 26/03/2013 e 28/03/2013: Semana de break
-
Aula 9 - 02/04/2013: (i) Introdução aos sistemas operacionais - principais funções; evolução; principais componentes; exemplos de arquiteturas; (ii) bibliotecas estáticas e dinâmicas - definições; vantagens e desvantagens de cada tipo; criação e uso no Linux e GCC.
Aula -10/04/2013: (i) Interpretadores de comandos (shells) - características gerais e exemplos; (ii) o bash (Bourne-Again shell) - comandos de chamada a utilitários, redirecionamento, pipelines, comandos do tipo builtin, execução de comandos em background.
-
-
09/04/2013 - Aula 11: Bash - (i) tipos de execução de [listas de] comandos; (ii) comandos builtin; (iii) comandos acionados por teclas; (iv) a pilha de diretórios; (v) permissões de arquivos no Unix e o comando chmod. Programação em Bash - (i) scripts; (ii) variáveis; (iii) comandos para a criação de laços; (iv) comandos para expressões lógicas.
11/04/2013 - Aula 12: Programação em Bash - (i) comandos condicionais; (ii) passagem de argumentos via linha de comando; (iii) definição de funções e variáveis locais; (iv) passagem de parâmetros para funções. Arquivos - (i) classificações; (ii) arquivos de dispositivos no Unix e seus derivados.
-
-
-
Pasta
-
-
16/04/2013 - Aula 13: Arquivos - (streams). Filtros - (i) pipes; (ii) implementação de programas como filtros. Interfaces - (i) propriedades desejáveis; (ii) princípios para o projeto; (iii) gerenciamento de recursos; (iv) tratamento de erros; (v) interfaces com usuário.
18/04/2013 - Aula 14: Interfaces - exemplo. Automação de compilação - (i) ideia geral; (ii) ferramentas; (iii) GNU Make.
-
-
-
424.6 Kb Documento PDF
-
1.5 Mb Documento PDF
-
339.7 Kb Documento PDF
-
Pasta
-
-
23/04/2013 - Aula 15: Mais sobre o GNU Make -- (i) regras implícitas; (ii) agrupamentos por pré-requisitos; (iii) regras falas; (iv) variáveis automáticas. Geração automática de dependências -- exemplos de uso do makedepend e do gcc -MM . Processamento de linguagens de programação -- expressões, notações e análise léxica.
25/04/2013 - Aula 16: Revisão da matéria para a prova 1. Análise léxica -- exemplo de implementação de uma calculadora com notação pós-fixa e outra com notação infixa.
-
-
-
Pasta
-
-
- 30/04/2013 e 02/05/2013: Semana de break
-
Pasta
-
Tarefa
-
09/05/2013 - Aula 17: Processadores de Macros: (i) ideia geral, (ii) o pré-processador do C (cpp) e (iii) problemas na definição de funções como macros. O processador de macros de propósito geral M4: (i) principais características, (ii) definição de macros, (iii) algumas macros builtin.
-
Tarefa
-
-
-
14/05/2013 - Aula 18: GNU Autoconf - funcionalidades, exemplos. Expressões regulares: (i) expressões Glob, (ii) expressões básicas e (iii) expressões estendidas.
16/05/2013 - Aula 19: Expressões regulares expressões estendidas. O processador de textos Awk: (i) características gerais; (ii) estrutura de um programa em Awk; (iii) tipos de expressõs regulares; (iv) o uso de variáveis simples e vetores.
-
-
-
Pasta
-
-
21/05/2013 - Aula 20: O processador de textos Awk (continuação): exemplos envolvendo busca de padrões (expressões regulares) e verificação de condições lógicas definidas sobre os campos do arquivo de entrada . Programas geradores de analisadores - uma visão geral. Introdução ao gerador de analisadores léxicos Flex.
23/05/2013 - Aula 21: O gerador de analisadores léxicos Flex (continuação): (i) estrutura de um arquivo de entrada do Flex; (ii) formato das definições e regras; (iii) tipos de expressões regulares usadas; (iv) exemplos.
-
-
-
Pasta
-
Pasta
-
Tarefa
-
-
- 28/05/2013 e 30/05/2013: Semana de break
-
04/06/2013 - Aula 22: O gerador de analisadores léxicos Flex (continuação): (i) o uso de condições de início para habilitar regras adicionais ou exclusivas; (ii) exemplos. O gerador de analisadores sintáticos Bison: (i) estrutura do arquivo de entrada; (ii) definição de regras gramaticais; (iii) atribuição de valor semântico a símbolos; (iv) como usar o Bison para gerar programas.
06/06/2013 - Aula 23: O gerador de analisadores sintáticos Bison (continuação): exemplos. Sistemas de controle de versão: (i) conceitos básicos do controle de versão; (ii) arquiteturas desse tipo de sistema: centralizada x distribuída.
-
-
-
Pasta
-
-
11/06/2013 - Aula 24: Sistemas de controle de versão (continuação): (i) exemplos de sistemas bastante usados (centralizados e distribuídos); (ii) mini-tutorial sobre o Git. A Arte e a Ciência da Depuração: (i) fatores de causa de erros; (ii) técnicas para manter a integridade do código; (iii) depuradores; (iv) dicas para localizar erros; [continua na próxima aula].
13/06/2013 - A Arte e a Ciência da Depuração (continuação): (i) dicas para localizar e corrigir erros; (ii) exemplos de erros frequentes; (iii) resumo. Testes: (i) técnicas básicas; [continua na próxima aula].
-
-
-
Pasta
-
-
18/06/2013 - Aula 26: Revisão para a Prova 2: (i) Conteúdo da P2; (ii) exercícios para estudo/revisão.
-
Tarefa
-
-
-
-
-
-
25/06/2013 - Aula para esclarecimento de dúvidas (preparação para a prova substitutiva)
-
-
Tarefa
-
-