Compromisso de Honra


A entrega de qualquer trabalho pressupõe o compromisso de honra que o trabalho correspondente foi realizado pelos alunos referenciados no grupo. A quebra deste compromisso, i.e., a tentativa de um grupo se apropriar de trabalho realizado por colegas, tem como consequência a reprovação de todos os alunos envolvidos (incluindo os que possibilitaram a ocorrência) neste ano lectivo, sem prejuízo de acções disciplinares previstas pelo IST.

Ver também:

Datas Importantes

As datas relativas ao projecto e à sua avaliação são as seguintes:

  • 2016/10/09 (publicação do enunciado)
  • 2016/10/21 (até às 15:00) (entrega UML)
  • 2016/11/21 (até às 23:59) (entrega intermédia)
  • 2016/12/09 (até às 23:59) (entrega final)
  • 2016/12/19 (teste prático)

Enunciado

Enunciado: (versão 24/10/2016): document26102016.pdf

Alterações/Esclarecimentos da versão 26/10

  • As listas de nomes de identificadores a apresentar nas opções Mostrar os identificadores presentes no programa e Mostrar os identificadores do Programa sem Inicialização Explícita devem ser apresentadas por ordem alfabética.
  • Na opção 3.2.3 Adicionar Expressão ao Programa foi adicionado a seguinte frase: Se a indicação de posição for igual ao número de elementos do programa, a nova expressão é inserida no final do programa (após todas as outras).
  • Na descrição de um programa foi acrescentada a seguinte frase: Um programa pode não ter expressões (programa vazio). O valor de um programa vazio é 0 (zero).
  • O exemplo da secção 4.1 tem um '(' a mais no início.
  • A expressão composta print muda de linha após escrever o último argumento (ou seja, adiciona um '\n').
  • A excepção ParserException pertence na realidade ao package pex.parser.
  • Os identificadores definidos num programa são visíveis em todos os programas, ou seja, os identificadores são partilhados por todos os programas de um interpretador.
  • Relativamente à opção Escrever Programa, foi adicionado a seguinte frase "Se o programa não existir, é comunicado o erro através de noSuchProgram()" por forma a tratar a situação de o utilizador introduzir um nome inexistente.
Esclarecimentos da versão 2/11
  • A execução de um programa vazio devolve o literal inteiro 0 (zero).

Diagrama de Classes do Domínio da Aplicação


Solução proposta pelo corpo docente: DiagramaClassesPEX.jpg
Note-se que a necessidade da interface AppIO não era evidente na leitura do enunciado do projecto. Portanto, a ausência desta entidade nas soluções submetidas pelos alunos não será penalizada.

Submissão e Avaliação do Projecto

Cada entrega do projecto é submetida electronicamente via Fénix no projecto disponibilizado no Fénix.A submissão electrónica apenas deve conter os ficheiros Java desenvolvidos para o projecto, guardados na estrutura de directórios correcta. Deve submeter um ficheiro jar com o código fonte todo desenvolvido.


Atenção: O ficheiro jar a submeter deve ser criado a partir da linha de comandos e não deve criá-lo via menu do Linux dado que esta opção não cria o ficheiro jar de forma correcta pelo que o código depois não compila e nunhum teste é executado.


Os projectos são avaliados de forma manual e automática. A secção Avaliação Automática descreve o processo de avaliação automático aplicado e disponibiliza os vários conjuntos de testes aplicados durante a submissão e avaliação da entrega intermédia e final do projecto.. Na avaliação manual podem-se aplicar as seguintes penalizações.

Entrega Intermédia

  • Descrição do trabalho a realizar para a entrega intermédia do projecto: Entrega Intermédia

Entrega Final

  • Descrição do trabalho a realizar e dos critérios a utilizar para a entrega final: Entrega Final

Teste Prático


Teste Prático (TP) consiste num conjunto de questões (correspondentes a pequenas alterações/extensões ao enunciado) a resolver com base na concretização do projecto submetida para a avaliação correspondente à entrega final. O teste prático decorre no dia 19 de Dezembro de acordo com um escalonamento a indicar. O teste prático é feito preferencialmente no computador do aluno. Os alunos que necessitem de um computador para realizar o teste prático devem inscrever-se no agrupamento "Teste Prático - Sem Computador". Os alunos que têm o seu computador portátil devem inscrever-se no agrupamento "Teste Prático - Com Computador". A inscrição deve ser feita até às 18:00 horas do dia 15 de Dezembro.

Todos os alunos que entregaram projecto podem à partida realizar o teste prático, desde que se inscrevam previamente. No entanto,  isto não garante qualquer hipótese a priori de aprovação à disciplina. A condição de a nota relativa ao projecto (o que inclui o teste prático) ter que ser maior ou igual a 9.5 continua a ser necessária.

Este teste é individual e avalia o conhecimento do aluno relativamente ao projecto entregue, assim como a sua capacidade de realizar alterações ao código do projecto. 

A não realização do Teste Prático conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto e consequente exclusão da avaliação da disciplina.

Os alunos já devem trazer instalado no seu computador a última versão submetida do projecto, a biblioteca po-ulib.jar e o material de suporte edt-support.jar e os testes da entrega final.

Teste Prático Tipo


O teste prático tem a duração de uma hora, tem quatro perguntas e tem a seguinte estrutura:
  1. A primeira consiste em alterar um comando já realizado ou em acrescentar uma nova expressão composta à linguagem suportada pelo projecto;
  2. A segunda corresponde a criar uma nova opção relativamente simples;
  3. Na terceira pergunta será também necessário concretizar uma nova opção, mas agora com uma complexidade maior.
  4. A quarta questão corresponde simplesmente aos alunos mostrarem que sabem compilar e executar programas java a partir da linha de comandos utilizando os comandos javac e javaEsta pergunta é eliminatória.

Enunciado tipo para o teste prático :

  1. Acrescente uma nova expressão unária sqrt à linguagem suportada pelo seu programa. Esta expressão calcula a raiz quadrada do avaliação do seu argumento. O literal inteiro devolvido apenas tem em conta a parte inteira do resultado. Para realizar esta instrução pode utilizar o método estático double sqrt(double) presente na classe java.lang.Math.
  2. Acrescente uma nova opção ao menu de manipulação de programas que pede um número ao utilizador e remove a expressão do programa que está guardada nessa posição. Caso seja dada uma posição inválida, o comando criado deve lançar a excepção pex.app.BadPositionException e o programa não é alterado.
  3. Acrescente uma nova opção ao menu principal. Esta opção deve listar todos os programas do interpretador. Cada programa deve ser apresentado indicando primeiro o seu nome e só depois deve ser apresentado o seu conteúdo.

Material Adicional

Material de Apoio

Compilar e Executar Projecto

Método de Avaliação