Programação de Computadores II (TCC 05072)
horário: segundas (sala 102AE), quartas (sala 303 FIS) e sextas (laboratório LII) 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
- H. M. Deitel e P. J. Deitel, Java: como programar, Pearson Prentice-Hall.
- R. Sedgewick e K. Wayne, Introduction to Programming in Java - Interdiciplinary Approach, Addison-Wesley.
- B. Feijó, E. Clua e F. Corrêa, Introdução à Ciência da Computação com Jogos: aprendendo a programar com entretenimento, Campus.
- C. S. Horstmann e G. Cornell, Core Java 2: Volume I - Fundamentos, Makron Books.
Aulas ministradas
08/03
- Regras;
- Motivação para o uso de Java;
- Construção de classes;
- Definição de atributos; e
- Referências para objetos.
10/03 (não houve aula por falta de sala disponível)
12/03
- Construção de métodos;
- Envio de mensagens entre objetos;
- this;
- Inicializações e construtores;
- Finalizadores;
- Gerência de memória em Java (coleta automática de lixo);
- Membros de classe versus membros de objetos; e
- Motivação para o uso de membros estáticos.
15/03
- Tipos primitivos;
- Operadores;
- 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; e
- Exercícios.
17/03
- Resolução do exercício Q2 da lista passada em 15/03;
- Vetor de tipos primitivos;
- Alguns métodos estáticos do pacote java.util.Arrays;
- Matrizes; e
- Exercícios.
19/03 (aula de laboratório)
22/03
- Strings;
- Herança;
- Hierarquia de árvore versus hierarquia de floresta;
- Hierarquia de Java;
- Sobrecarga de construtores e métodos;
- Polimorfismo;
- Conversão de tipos; e
- Exercícios.
24/03
- Continuação de conversão de tipos;
- instanceof;
- Redefinição de métodos;
- Amarração tardia (late binding);
- Métodos e classes constantes;
- Classes abstratas;
- Herança simples versus herança múltipla; e
- Interfaces.
26/03 (aula de laboratório)
29/03
- Resolução do exercício Q6 da lista passada em 15/03;
- Pacotes;
- Controle de acesso; e
- Exercício.
31/03
- Resolução do exercício Q4 da lista passada em 17/03; e
- Exercícios referentes ao assunto de orientação a objetos.
05/04
- Exercício referente ao assunto de interfaces;
- Tratamento de exceções; e
- Exercícios.
07/04 (não houve aula devido aos problemas causados pelas chuvas)
09/04 (não houve aula devido a suspensão das aulas pela administração da UFF)
12/04
- Entrada e saída via console; e
- Diálogos padrão.
14/04 (não houve aula devido a participação da professora em Banca de Concurso na UFOP)
16/04 (não houve aula devido a participação da professora em Banca de Concurso na UFOP)
19/04
- Conceitos sobre arquivos;
- Arquivos e fluxos (streams) em Java;
- Fluxos de entrada e de saída; e
- Exceções em manipulações de fluxos.
26/04
- Fluxos de bytes e de caracteres; e
- Exercícios.
28/04
- Exemplos de fluxos de caracteres.
30/04 (aula de laboratório)
03/05
- Exemplo de fluxo de bytes;
- Arquivos de acesso randômico; e
- Exemplo de aplicação.
05/05 (aula de dúvidas no laboratório)
07/05 (primeira prova: Auditório da Engenharia)
10/05
- Arquivos de acesso randômico;
- Serialização de arquivos; e
- Exemplo de aplicação.
12/05 (aula de laboratório - LCC)
14/05 (aula no laboratório LII)
- Interface gráfica: elementos de interface do pacote Swing e exemplo de aplicação.
17/05
- Interface gráfica: orientação por eventos e exemplo de aplicação; e
- Trabalho computacional: paint do Windows.
19/05
- Recursão: definição, tipos (direta e indireta) e exemplos (fatorial com o tipo inteiro e com a classe BigInteger, quick-sort para números inteiros, Hanói e verificação se um número é par).
21/05 (aula de laboratório)
24/05
26/05
28/05 (aula de laboratório)
- Funcionamento do exercício surpresa.
31/05
- Revisão de recursão: Torres de Hanói, quick-sort e recursão indireta; e
- Mais exemplos de recursão: Elementos da Série de Fibonacci e Código de Gray.
02/06
- Observação: datas importantes
- aula de dúvidas: 16/06
- segunda prova: 18/06
- aula de dúvidas: 05/07
- terceira prova: 07/07
- último dia para entrega das listas e do paint (em horário a combinar por e-mail): 09/07
- revisão da terceira prova: 12/07
- VS: 14/07
07/06
- Motivação para o uso de listas;
- Conceitos sobre 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) inserção de um elemento na lista ordenada e (f) remoção de um elemento da lista.
09/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, e (d) inserção de um elemento na lista; e
- Exemplo de uso das operações básicas: inversão de uma lista circular.
11/06 (aula de laboratório)
14/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.
16/06 (aula de dúvidas no laboratório)
18/06 (segunda prova: Auditório da Engenharia)
21/06
- 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.
23/06
- Motivação para o uso de filas;
- Implementação de filas com vetores;
- 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
- Exercícios.
25/06 (não houve aula devido ao jogo do Brasil na Copa)
28/06 (não houve aula devido ao jogo do Brasil na Copa)
30/06
02/07 (não haverá aula devido ao jogo do Brasil na Copa)
05/07 (aula de dúvidas)
07/07 (terceira prova: Auditório da Engenharia)
12/07
16/07 (VS: Auditório da Engenharia)