Laboratório II
Identificação sumária dos conteúdos
A disciplina aborda as principais estruturas de dados, seus conceitos, algoritmos e aplicações na resolução eficiente de problemas de programação.
Objetivos da disciplina
- Capacitar o aluno a expressar a resolução de problemas através de programas, fazendo uso das melhores estruturas de dados e algoritmos;
- Permitir que o aluno desenvolva suas habilidades de construção e de depuração de programamas através do uso prático de uma linguagem / ambiente de programação.
Exigências prévias de conhecimento e habilidades
- Conhecimento dos conceitos básicos de construção de algoritmos para a solução de problemas;
- Conhecimentos de programação de computadores através da utilização de uma linguagem de programação;
- Conhecimentos básicos do uso de computadores, bem como do uso de um ambiente de desenvolvimento de programas (edição, compilação, execução e depuração de programas);
- Saber resolver diferentes tipos de problemas através da programação;
Capacidade de abstrair conceitosvisando a sua aplicação.
Padrões mínimos de desempenho
- Conhecer o funcionamento das principais estruturas de dados;
- Ser capaz de criar programas corretos e eficientes, fazendo uso dos algoritmos e das estruturas de dados estudadas.
Conteúdo programático
- Revisão sobre Procedimentos e Funções.
- Arquivos: arquivos do tipo texto e arquivos do tipo binário.
- Recursividade.
- Listas lineares seqüenciais com alocação estática de memória.
- Listas lineares seqüenciais do tipo Pilha.
- Listas lineares seqüenciais do tipo Fila.
- Listas lineares seqüenciais do tipo Deque.
- Listas encadeadas com alocação dinâmica de memória.
- Listas encadeadas simples do tipo Pilha, Fila e Deque.
- Listas duplamente encadeadas do tipo Pilha, Fila e Deque.
- Árvores binárias: conceitos, representação e caminhamentos.
- Árvores binárias de busca: inserção, pesquisa (seqüencial, binária) e retirada.
- Árvores binárias: balanceamento.
- Árvores genéricas: conceitos, representação e operações.
- Métodos de pesquisa e ordenação.
Metodologia e recursos de ensino
- Aulas teórico-práticas nos laboratórios de informática;
- Análise, desenvolvimento e implementação de soluções para determinados problemas propostos;
- Estímulo a capacidade de análise crítica do aluno em relação às diversas soluções possíveis para os problemas propostos;
- Incentivo ao aluno na busca de soluções por conta própria, através de trabalhos extra-classe que necessitem que o aluno busque uma extensão dos conceitos que foram vistos em aula.
- Avaliação da aprendizagem através de provas práticas de implementação de programas, testes de cunho teórico-prático e trabalhos extra-classe de implementação de programas.
Avaliação
Grau A e Grau B será composto de 3 notas: Teste, Trabalho, Prova.
- GA = 0,2 * Teste + 0,2 * Trabalho + 0,6 * Prova
- GB = 0,2 * Teste + 0,2 * Trabalho + 0,6 * Prova
- GFinal = 0,33 * GA + 0,67 GB
Bibliografia
- CORMEN, T.; LEISERSON, C.; RIVEST, R. Introduction to algorithms. Cambridge: MIT Press, 2001.
- WIRTH, Niklaus. Algoritmos e estrutura de dados. Rio de Janeiro: Prentice-hall, 1989.
- HORSTMANN, CAY. Big Java. Bookman, 2004.
- DEITEL, Harvey M. & DEITEL, Paul J. Java Como Programar. PEARSON EDUCATION DO BRASIL LTDA, 2005.
- HORSTMANN, CAY. Big Java. John Wiley & Sons, 2006.
- DEITEL, Harvey M. & DEITEL, Paul J. Java How to Program. Prentice Hall, 2005.
- ECKEL, Bruce. Thinking in Java. Prentice Hall, 2002.
Recursos
- Java - JDK 6.0 Update 6. Baixe a versão do Java JDK 6.0 Update 6. Escolha a opção Windows ou Linux, conforme sua necessidade (em J2SE Development Kit 5.0 Update 6). Caso escolha Windows, deve ser baixado um programa de instalação automática. Ha duas opções para este arquivo, em uma o arquivo possui cerca de 60 MB e necessita que o computador permaneça ligado a Internet para realizar a instalação completa; a outra opção (240 MB) permite que a instalação seja realizada em uma máquina nao ligada a Internet. Em Linux exite uma versão RPM.
- Pacote de entrada e saida e sua documentação.
- Livro de introdução à Java e Orientação a Objetos (creative commons) - Cópia local
- Livro da Sun sobre Java.
Calendário
| Aula |
Data |
Assunto |
Material |
| 1 |
2/ago |
Classe abstrata, Polimorfismo e Herança |
Apoio 1 |
| 2 |
9/ago |
Exceções. Manipulação e Tratamento. |
Apoio 2 |
| 3 |
16/ago |
Manipulação de arquivos |
Apoio 3 |
| 4 |
23/ago |
continuação |
Definição Trabalho GA, Apoio 4, Correção do teste |
| 5 |
30/ago |
Listas seqüenciais |
Apoio 5 (atualizado) |
| 6 |
6/set |
Pilha e Filas |
Teste, Apoio 6 |
| 7 |
13/set |
Listas encadeadas |
Apoio 7 |
| 8 |
20/set |
Feriado |
|
| 9 |
27/set |
Prova |
GA |
| 10 |
4/out |
|
Entrega Trabalho GA |
| 11 |
11/out |
|
|
| 12 |
18/out |
|
|
| 13 |
25/out |
|
|
| 14 |
1/nov |
|
|
| 15 |
8/nov |
|
|
| 16 |
15/nov |
Feriado |
|
| 17 |
1/nov |
|
|
| 18 |
21/jun |
Prova GB |
Entrega Trabalho GB |
| 19 |
28/jun |
Revisão |
|
| 20 |
5/jul |
Grau C |
|