Estrururas de Dados (TCC-00.160)
horário: quartas e sextas de 14 às 16:00h na sala 5 do Direito
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.
O aluno receberá nota em uma série de trabalhos de programação, e esta nota será combinada com a
prova correspondente, com peso de 10% para os trabalhos e 100% para as provas. A VS será sobre toda a matéria do curso,
e sua nota não será combinada com trabalhos. 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
23/08
- Apresentação do curso: objetivos, tópicos abordados, literatura básica e critério de avaliação; e
- Introdução a linguagem C: tipos, variáveis, constantes e operadores aritméticos.
25/08
- Operadores: de incremento, de decremento, relacionais, lógicos e bit a bit;
- Conversão de tipos;
- Precedência de operadores;
- Entrada e saída básicas (scanf e printf); e
- Decisões com if.
30/08
- Seleção com switch-case-default;
- Repetições com while, do-while e for;
- break; e
- Exemplos.
01/09
- Funções;
- Pilha de execução; e
- Ponteiros.
08/09
- Declaração de vetores;
- Passagem de vetor como parâmetro de entrada de funções;
- Exemplos de aplicação; e
- Exercícios.
13/09
- Alocação dinâmica de vetores; e
- Exemplos de aplicação.
15/09
- Declaração de matrizes;
- Passagem de matriz como parâmetro de entrada de funções;
- Alocação dinâmica de matrizes: vetor simples;
- Exemplos de aplicação; e
- Exercícios.
20/09
- Alocação dinâmica de matrizes: vetor de ponteiros;
- Exemplos de aplicação; e
- Primeira prova: 06/10/10.
22/09
- Representação de matrizes simétricas dinâmicas.
27/09
- Cadeia de caracteres;
- Leitura e escrita de cadeia de caracteres;
- Exemplos de aplicação; e
- Funções recursivas.
29/09
- Exemplos de aplicação de cadeia de caracteres;
- Parâmetros da função main;
- Tipo estrutura; e
- Exercícios.
04/10 (aula de dúvidas)
06/10 (primeira prova)
18/10 (revisão da nota da primeira prova)
20/10 (não houve aula devido a Semana de Telecomunicações da UFF)
- Datas importantes:
- Segunda prova: 24/11/10;
- Terceira prova: 08/12/10; e
- VS: 13/12/10.
25/10
- 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, (b) busca de um elemento, (c) impressão da lista, (d) inserção de um elemento no início e no final da lista, e (e) remoção de um elemento da lista.
27/10
- Mais operações básicas: (a) inserção de um elemento no final da lista e (b) inserção de um elemento na lista ordenada;
- Implementações recursivas; e
- Exemplo de uso das operações básicas: ordenação de uma lista.
03/11
- 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
- Exercícios.
17/11
- Exemplo de função recursiva: inserção ordenada de um elemento em uma lista duplamente encadeada;
- Motivação para o uso de pilhas;
- Implementação de pilhas com listas;
- Operações básicas: (a) construtores, (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
- Exercícios.
24/11 (segunda prova)
- Datas importantes:
- Terceira prova: 08/12/10;
- Data final de apresentação de listas: 09/12/10;
- Vista da terceira prova e entrega de todas as notas: 10/12/10; e
- VS: 13/12/10.
29/11
- Motivação para o uso de filas;
- Implementação de filas com listas;
- Operações básicas: (a) inicialização, (b) impressão da fila, (c) retirada do primeiro elemento da fila, e (d) inserção de um elemento no fim da fila; e
- Exemplos de aplicação.
01/12
- 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.
06/12
- 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.
08/12 (terceira prova)
13/12 (VS)