Estrururas de Dados (TCC-00.160)
horário: segundas (sala 206 da Geociências) de 14 às 16:00h e sextas (LII) de 11 às 13:00h
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 três provas intermediárias e uma VS.
A média das provas será calculada como a soma das duas maiores notas de provas dividida por dois. A VS será sobre toda
a matéria do curso. 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
28/03
- 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.
04/04
- Entrada e saída básicas (scanf e printf);
- Decisões com if;
- Seleção com switch-case-default;
- Repetições com while, do-while e for;
- break; e
- Exemplos.
08/04
11/04
- Pilha de execução;
- Ponteiros; e
- Exercícios.
15/04
- Declaração de vetores; e
- Passagem de vetor como parâmetro de entrada de funções.
18/04
- Exemplos de aplicação de vetores: ordenação (método da bolha), inversão de vetores e busca binária.
20/04
- Exercícios: transformar um vetor qualquer em ímpar-par e testar se número é palíndromo.
25/04
- Alocação dinâmica de vetores; e
- Exemplos de aplicação: inversão de vetores.
- Observação importante: a primeira prova será no dia 09/05.
27/04
- Exercícios: ordenação de vetores e derivada de polinômio.
02/05 (não houve aula devido a problema de saúde da professora)
06/05 (aula de dúvidas de 11 às 13:00h no LII)
09/05 (primeira prova: sala 206 da Geociências)
13/05 (revisão da nota da primeira prova)
16/05
- Cadeia de caracteres;
- Leitura e escrita de cadeia de caracteres; e
- Exemplos de aplicação.
20/05 (não houve aula devido a falta de alunos)
23/05
- Tipo estrutura;
- Variáveis ponteiro para o tipo estrutura;
- Motivação para o uso de listas; e
- Definição de listas.
27/05
- Operações básicas de listas: (a) inicialização, (b) busca de um elemento, (c) impressão da lista, (d) inserção de um elemento no início da lista, (e) remoção de um elemento da lista, e (f) destruição da lista.
03/06
- Exercícios desenvolvidos em laboratório: inversão e ordenação de listas.
- Datas importantes:
- Segunda prova: 20/06/11;
- Revisão da nota da segunda prova: 22/06/11 (de 14 às 16:00h);
- Terceira prova: 08/07/11; e
- VS: 15/07/11.
06/06
- 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) inserção de um elemento na lista e (f) remoção de um elemento da lista; e
- Exemplos de aplicação.
10/06
- Motivação para o uso de listas duplamente encadeadas;
- Definição de listas duplamente encadeadas; e
- 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.
13/06
- Motivação para o uso de pilhas;
- Implementação de pilhas com listas;
- Operações básicas: (a) construtor, (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.
17/06 (aula de dúvidas)
20/06 (segunda prova)
22/06 (revisão da nota da segunda prova)
27/06
- 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.
29/06
- Motivação para o uso de árvores; e
- Implementação de árvores binárias (e de árvores binárias de busca).
04/07
- Operações básicas de árvores binárias (e de árvores binárias de busca); e
- Exemplo de aplicação.
06/07 (aula de dúvidas)
08/07 (terceira prova)
11/07 (revisão da nota da terceira prova)