Estruturas de Dados 2019/2020 (CC1007) - DCC/FCUP

Informações para o teste prático (online) de 8 de Junho


Data e Horário:


Valorização:

Como já explicado e como podem ver na página de avaliação e no Sigarra, o teste vale 5 valores, ou seja, 25% da nota desta unidade curricular (e não será possível repetir). Não existe nota mínima no teste.


Inscrição e Declaração de Compromisso de Honra:


Casos Expecionais:


Modo de Funcionamento:


Objectivos específicos para cada parte:

Cada parte vale 50% da nota do teste prático e tem 4 problemas como estão a seguir descritos.

1ª Parte (14:00 às 15:45)

  1. [15%] Exercício 1: programa completo para imprimir uma figura geométrica
    Ler da entrada padrão um ou mais números ou caracteres e imprimir uma figura geométrica.  
  2. [15%] Exercício 2: implementação de métodos para listas ligadas simples.
    Terão de adicionar um ou mais pequenos métodos à classe SinglyLinkedList. Será dada como base a implementação dada nas aulas e será descrito o método a implementar, incluindo a assinatura do método (qual o tipo de retorno e o tipo dos argumentos). Irão submeter a classe como nas aulas (com o novo método adicionado).  
  3. [15%] Exercício 3: programa completo (incluindo ler e escrever) que usa listas, pilhas e/ou filas
    Problema com algoritmo descrito no enunciado. O tema do problema implicará que é conveniente usar listas, pilhas ou filas, mas poderão usar qualquer implementação (ex: usar a base de código dada nas aulas, usar TADs do próprio Java, ou usar uma qualquer implementação vossa).  
  4. [5%] Exercício 4: pequeno problema envolvendo eficiência algorítmica.
    Terão de resolver um pequeno problema, para o qual terão de pensar no algoritmo adequado. O problema não será completamente resolúvel com uma solução exaustiva de "força bruta" e será necessário ser eficiente. A complexidade esperada será dada no enunciado. Este problema é destinado a alunos que desejem ter uma nota alta, e só deverá ser tentando depois dos outros três exercícios estarem feitos (daí ter menos pontuação atribuída).  

2ª Parte (16:15 às 18:00)
  1. [15%] Exercício 5: implementação de métodos simples para árvores binárias.
    Terão de adicionar um ou mais pequenos método à classe BTree. Será dada como base a implementação dada nas aulas e será descrito o método a implementar, incluindo a assinatura do método (qual o tipo de retorno e o tipo dos argumentos). Irão submeter a classe como nas aulas (com o novo método adicionado).  
  2. [15%] Exercício 6: implementar método estático para árvores binárias.
    Terão de implementar um método estático que recebe como argumento uma árvore binária (simples - uma BTree - ou de pesquisa, uma BSTree) e faz algo sobre ela. O esforço de implementação esperado é também pequeno, mas será um pouco mais complicado que o exercício 1 e poderá dar jeito criar métodos auxiliares.  
  3. [15%] Exercício 7: programa completo (incluindo ler e escrever) que usa conjuntos e/ou dicionários.
    Terão de implementar um programa completo, que leia um dado input (usando a classe Scanner) e escreva o resultado pedido. O tema do problema implicará que é conveniente usar conjuntos e/ou dicionários, mas poderão usar qualquer implementação (ex: usar a base de código dada nas aulas, usar TADs do próprio Java, ou usar uma qualquer implementação vossa).  
  4. [5%] Exercício 8: pequeno problema envolvendo recursividade.
    Terão de resolver um pequeno problema, para o qual terão de pensar no algoritmo adequado. O problema envolverá recursividade e será útil conhecer as ideias de flood fill e/ou subconjuntos e/ou permutações. Este problema é destinado a alunos que desejem ter uma nota alta, e só deverá ser tentando depois dos outros três exercícios estarem feitos (daí ter menos pontuação atribuída).