Programação de Computadores II (TCC-00.174)
horário: segundas (ou sala 235 ou LCC), quartas (sala 334E) e sextas (sala 232) de 11:00 às 13:00h
Objetivos do curso
Consolidar o domínio completo de uma linguagem de programação e capacitar a construção estruturada de programas interativos de médio porte e de compexidade média.
Tópicos abordados
- Introdução a linguagem Java;
- Conceitos de orientação a objetos;
- Entrada e saída padrão;
- Entrada e saída por meio de arquivos;
- Interfaces;
- Recursividade;
- Conceito de estruturas de dados e seus algoritmos;
- Listas lineares;
- Listas lineares sequenciais (implementação por meio de arrays): listas, pilhas e filas;
- Tipos recursivos;
- Listas encadeadas (implementação por meio de referências para objetos): listas, pilhas e filas; e
- Coleções de objetos em Java.
Critério de avaliação
Literatura básica
- livro texto (conteúdo voltado ao aprendizado de Java): H. M. Deitel e P. J. Deitel, Java: como programar, Pearson Prentice-Hall (site da versão mais atualizada do livro em inglês).
- literatura complementar (conteúdo voltado ao aprendizado de Orientação a Objetos):
Aulas ministradas
09/08
- Apresentação do curso: objetivos, tópicos abordados e literatura básica.
- Critério de avaliação.
11/08
- Construção de classes;
- Definição de atributos;
- Referências para objetos;
- Construção de métodos;
- Envio de mensagens entre objetos;
- this;
- Inicializações e construtores;
- Finalizadores; e
- Gerência de memória em Java (coleta automática de lixo).
13/08
- Membros de classe versus membros de objetos;
- Motivação para o uso de membros estáticos;
- Tipos primitivos; e
- Operadores.
16/08
- Precedência de operadores;
- Conversões entre tipos;
- Decisões com if;
- Seleção com switch-case-default;
- Repetições com while, do-while e for;
- break;
- Vetor de tipos primitivos; e
- Alguns métodos estáticos do pacote java.util.Arrays.
18/08 (não houve aula)
20/08
- Matrizes;
- Strings; e
- Herança.
23/08
- Hierarquia de árvore versus hierarquia de floresta;
- Hierarquia de Java;
- Sobrecarga de construtores e métodos; e
- Exemplo: modelagem de banco e conta.
25/08
- Polimorfismo;
- Conversão de tipos;
- instanceof;
- Redefinição de métodos;
- Amarração tardia (late binding);
- Métodos e classes constantes; e
- Exercícios de lógica.
27/08
- Classes abstratas; e
- Enunciado do exemplo.
30/08 (Palestra da Empresa Júnior da Computação)
01/09
- Herança simples versus herança múltipla;
- Interfaces; e
- Exercícios de classes.
03/09
08/09
- Pacotes;
- Controle de acesso; e
- Exercício de revisão.
10/09
13/09 (aula de laboratório)
15/09
17/09
20/09 (aula de laboratório)
- Primeira prova (P1): 18/06/10.
- Data de entrega das listas relacionadas a P1: 08/06/10.
22/09
- Entrada e saída via console; e
- Diálogos padrão.
24/09
- Conceitos sobre arquivos;
- Arquivos e fluxos (streams) em Java;
- Fluxos de entrada e de saída; e
- Exceções em manipulações de fluxos.
27/09
- Fluxos de caracteres; e
- Exemplos de fluxos de caracteres.
29/09
- Exemplos de fluxos de caracteres; e
- Exercícios.
01/10
- Fluxos de bytes; e
- Exercícios de arquivos.
04/10 (aula de laboratório)
06/10
- Arquivos de acesso randômico; e
- Exemplo de aplicação.
08/10 (aula de dúvidas)
18/10 (primeira prova - 104D)
20/10
- Interface sem eventos; e
- Exemplo de aplicação.
22/10
- Interface com eventos; e
- Exemplo de aplicação.
25/10
- Recursão: definição, tipos (direta e indireta) e exemplos (fatorial com o tipo inteiro e com a classe BigInteger, Fibonacci com a classe BigInteger, quick-sort para números inteiros, criação da Matriz de Hadamard e verificação se um número é par); e
- Datas importantes:
- Segunda prova: 19/11/10;
- Terceira prova: 10/12/10; e
- VS: 15/12/10.
27/10
- Mais exemplos de recursão: Torres de Hanói e permutação de strings.
29/10 (LCC)
03/11
- Revisão da nota da primeira prova.
05/11
- Exercícios de revisão de recursão.
17/11 (aula de dúvidas)
19/11 (segunda prova)
- Datas importantes:
- Data final de apresentação de trabalho computacional e listas: 07/12/10;
- Revisão para a terceira prova: 08/12/10;
- Terceira prova: 10/12/10;
- Vista da terceira prova e entrega de todas as notas: 13/12/10; e
- VS: 15/12/10.
24/11
- 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) remoção de um elemento da lista, (f) inserção de um elemento no final da lista e (g) inserção de um elemento na lista ordenada; e
- Implementações recursivas.
26/11
- 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, e (d) inserção de um elemento na lista;
- 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.
29/11
- Motivação para o uso de pilhas;
- Implementação de pilhas com vetores e 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
- Exemplo de uso: calculadora pós-fixada.
01/12
- Motivação para o uso de filas;
- Implementação de filas com vetores;
- Implementação de filas com listas; e
- 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.
03/12
- Exercícios de revisão de listas, pilhas e filas.
06/12 (revisão da nota da segunda prova)
08/12 (aula de dúvidas)
10/12 (terceira prova)
13/12 (revisão da nota da terceira prova)
15/12 (VS)