Estrururas de Dados (TCC-00.160)
horário: segundas e quartas de 16 às 18:00h na sala 306 do prédio da Física
Objetivos
Desenvolver habilidades de programação na linguagem C e familiarizar os alunos com as principais estrururas de dados, e suas correspondentes abstrações.
Tópicos Abordados
- Revisão de variáveis e de subprogramação;
- Recursividade;
- Alocação dinâmica;
- Vetores, matrizes e estruturas;
- Listas, pilhas e filas;
- Árvores binárias e gerais no número de filhos;
- Heaps e tabelas hash; e
- Ordenação.
Critério de avaliação
O sistema de avaliação da disciplina consiste na realização de duas provas intermediárias e uma VS.
A VS será sobre toda a matéria do curso e as provas serão realizadas nos horários de aula.
Literatura básica
- Livro texto: W. Celes, R. Cerqueira e J.L. Rangel, Introdução a Estruturas de Dados, Campus.
- Literatura complementar:
- T.H. Cormen, C.E. Leiserson e R.L. Rivest, Introduction to algorithms, McGraw-Hill.
- A.M. Tenenbaum, Y. Langsam e M.J. Augenstein, Estruturas de dados usando C, Makron Books.
- B.W. Kernighan e D.M. Ritchie, C: a linguagem de programação (Padrão ANSI), Editora Campus.
Aulas ministradas
29/08
- Apresentação do curso: objetivos, tópicos abordados, literatura básica e critério de avaliação;
- Introdução a linguagem C: tipos, variáveis, constantes e operadores aritméticos;
- Operadores: de incremento, de decremento, relacionais e lógicos;
- Precedência de operadores; e
- Exercícios.
31/08
- Entrada e saída básicas (scanf e printf);
- Decisões com if;
- Repetições com while e for;
- break; e
- Exercícios.
05/09
- Seleção com switch-case-default;
- Repetições com do-while; e
- Exemplos.
12/09
- Funções;
- Pilha de execução; e
- Ponteiros.
14/09
- Declaração de vetores;
- Passagem de vetor como parâmetro de entrada de funções; e
- Exemplos de aplicação.
19/09
- Alocação dinâmica de vetores;
- Exemplos de aplicação; e
- Exercícios.
21/09
- Declaração de matrizes;
- Passagem de matriz como parâmetro de entrada de funções;
- Alocação dinâmica de matrizes: vetor de ponteiros;
- Exemplos de aplicação; e
- Exercícios.
- OBS: Datas das provas
- primeira prova: 24/10
- segunda prova: 07/12
- VS: 14/12
26/09 (Exercícios no laboratório LII)
28/09 (Exemplos de exercícios de vetores e matrizes na sala 306 da Física)
03/10 (Exercícios no laboratório LII)
05/10
- Tipo estrutura;
- Variáveis ponteiro para o tipo estrutura;
- Motivação para o uso de listas;
- Definição de listas; e
- Operações básicas: (a) inicialização e (b) inserção de um elemento no início e no final da lista.
10/10
- Mais operações básicas: (a) busca de um elemento, (b) impressão da lista, (c) remoção de um elemento da lista e (d) inserção de um elemento na lista ordenada; e
- Exercícios.
24/10 (primeira prova)
26/10
- Motivação para o uso de listas duplamente encadeadas;
- Definição de listas duplamente encadeadas;
- Operações básicas: (a) inicialização, (b) busca de um elemento, (c) impressão da lista, (d) liberação da lista, (e) inserção de um elemento na lista e (f) ordenação de uma lista; e
- Exemplos e exercícios.
31/10
- Motivação para o uso de listas circulares;
- Definição de listas circulares;
- Operações básicas: (a) inicialização, (b) busca de um elemento, (c) impressão da lista, (d) liberação da lista e (e) inserção de um elemento na lista; e
- Exemplos.
07/11
- Cadeia de caracteres;
- Leitura e escrita de cadeia de caracteres; e
- Exemplos e exercícios.
- Observações:
- revisão da nota da primeira prova (inclusive gabarito)
- VR: 12/12
09/11
- Motivação para o uso de pilhas;
- Implementação de pilhas com listas;
- Operações básicas: (a) inicialização, (b) retirada de um elemento do topo da pilha - a operação pop, e (c) inserção de um elemento no topo da pilha - a operação push; e
- Exemplo.
16/11
- Motivação para o uso de filas;
- Implementação de filas com listas;
- Operações básicas: (a) inicialização, (b) retirada do primeiro elemento da fila, e (c) inserção de um elemento no fim da fila; e
- Exemplos de aplicação e exercícios.
23/11
- Motivação para o uso de árvores;
- Implementação de árvores binárias;
- Operações básicas: (a) inicialização, (b) liberação, e (c) criação de árvores binárias; e
- Exemplos de aplicação.
28/11
- Motivação para o uso de árvores binárias de busca;
- Implementação de árvores binárias de busca;
- Operações básicas; e
- Exemplos de aplicação e exercícios.
30/11
- Remoção em árvores binárias de busca; e
- Exemplos de aplicação.
05/12 (aula de dúvidas)
07/12 (segunda prova)
09/12 (revisão da nota da segunda prova)
- Pela Internet a partir de quinta às 21:00h; ou
- Em horários presenciais (na sala 309 do Bloco E da Escola de Engenharia):
- de 10:00 às 11:00h; e
- de 16:00 às 17:00h.
12/12 (VR)
14/12 (VS)