Perguntas Teste Prático - IAED 2020/2021

  • Deverá submeter a resposta a cada pergunta no problema correspondente no Fenix.
  • No caso de criar um comando novo, não se esqueça de o adicionar ao switch dos comandos.
  • Cada aluno deverá utilizar um identificador na sessão Zoom no seguinte formato identificadorMooshak/Nome, eg, al123456:José Almeida.
  • Deverá submeter dentro do prazo a solução que tiver, mesmo que incompleta. Serão consideradas soluções parciais (não completamente funcionais) das perguntas.


Link zoom: https://videoconf-colibri.zoom.us/j/89095394545?pwd=azg0SkRkSjNKSExwV1FlZXZVbWlHUT09



Pergunta A - Projecto 2 (17h30-18h00)

Das três perguntas seguintes, ESCOLHA DUAS para implementar (só serão corrigidas duas das perguntas).

1. Altere o comando print por forma a que os caminhos sejam listados pela ordem inversa da ordem de criação.

2. Altere o comando set para no caso de receber apenas o caminho, cria o caminho sem valor associado. Caso o caminho já exista, remove valor associado.

3. Altere o comando list para imprimir o directório, mas por ordem alfabética inversa: z...a






Pergunta B - Projecto 1 (17h50-18h30)

Responda a AMBAS as peguntas.

1. Altere os limites do nome das tarefas, do nome das actividades e do nome dos utilizadores para um máximo de 100 caracteres. Os limites definidos no enunciado original eram 50, 20 e 20, respectivamente.

2. Um grupo é um conjunto de até 10 utilizadores já existentes no sistema. Do ponto de vista do sistema, um grupo comporta-se como um utilizador, ou seja, se a tarefa é realizada por um grupo, o utilizador da tarefa é o grupo.

Note que um grupo conta como um utilizador. Os limites de utilizadores têm que considerar os grupos criados. Por exemplo, se houver 48 utilizadores e 2 grupos criados, então o sistema tem 50 utilizadores, não podendo adicionar novos utilizadores ou grupos porque o limite de utilizadores é 50.

Crie o comando g por forma a que este permita definir grupos de utilizadores. O nome do grupo de utilizadores está limitado a 100 caracteres e poderá ser utilizado nas outras opções como um utilizador normal, incluindo na listagem de utilizadores.

Não se esqueça de adicionar a opção g ao switch dos comandos.

O novo comando deverá funcionar como se descreve abaixo:

  • g - Adiciona um grupo de utilizadores.
  • Formato de entrada: g grupo <utilizador> <utilizador> ... <utilizador>
  • Formato de saída: NADA (excepto erro).
  • Erros:
    • user already exists no caso de já existir um utilizador (ou grupo) com o nome do grupo que se pretende definir.
    • too many users no caso de o grupo, a ser criado, exceder o limite de utilizadores.
    • no such user no caso de ser indicado um utilizador para o grupo que não existe.
    • repeated user no caso de ser indicado o mesmo utilizador duas ou mais vezes para o grupo.













Teste Prático - IAED 2020/2021

Data: 26 de Maio de 2021, das 17h30 às 18h30

1. Introdução

O objectivo deste teste é avaliar a capacidade dos alunos efectuarem alterações/adições aos projectos desenvolvidos durante o semestre na disciplina de IAED. Não são aceites resoluções que não sejam baseadas na última entrega de cada um dos projetos ao Mooshak.

A nota final do Teste Prático será obtida através de uma validação offline após a entrega.

Será atribuído crédito a soluções parciais ou a soluções incompletas, pelo que deverão submeter SEMPRE as soluções a que chegarem.

Existirão intervalos de tempo pré-definidos para a resolução de cada uma das perguntas. Os alunos deverão submeter a solução para cada uma delas no intervalo de tempo correspondente. A prova inicia-se às 17h30. É responsabilidade de cada aluno ligar e autenticar-se antes dessa hora no link zoom (a disponibilizar).

As perguntas serão disponibilizadas no Fenix na secção Teste Prático. A primeira parte do teste prático consiste em alterações ao segundo projeto, podendo escolher 2 de entre 3 perguntas, para entregar até às 18h00 (hora do Fénix). A segunda parte do teste prático consiste em alterações ao primeiro projeto, com duas perguntas, a realizar até às 18h30 (hora do Fénix).

Recordamos que os enunciados dos projectos podem ser encontrados aqui (P1) e aqui (P2).

Compromisso de Honra

Ao submeter esta avaliação online, cada aluno declara por sua honra que irá resolver a prova recorrendo apenas aos elementos de consulta autorizados, de forma autónoma e sem trocar qualquer informação por qualquer meio, com qualquer pessoa ou repositório de informação, físico ou virtual. link

2. Regras para o Teste Prático

  1. Criem uma cópia dos vossos projectos avaliados e trabalhem sobre esses pontos de partida. Chamem a essas pastas proj1 e proj2.
  2. Identifiquem o que precisam de alterar/adicionar em cada pergunta e façam apenas as alterações/adições necessárias.
  3. Os projectos deverão preservar toda a funcionalidade anterior, excepto nos casos dos comandos alterados que deverão apresentar a funcionalidade pedida.
  4. Tenham em atenção o número de espaços entre elementos do seu output, assim como a ausência de espaços. Deverão respeitar escrupulosamente as indicações dadas.
  5. Testem os vossos projectos localmente antes de os submeter no Fenix.
  6. Submetam as vossas soluções no Fenix assim que tiverem resolvido cada uma das perguntas.
  7. Cada pergunta estará identificada. Deverá submeter cada resposta no correspondente projecto no Fenix.
  8. Cada aluno deverá registar o seu utilizador na plataforma Zoom com o e-mail tecnico.ulisboa.pt.
  9. Existirá uma sessão Zoom, com link a disponibilizar, que será usada para monitorizar a execução do teste. Cada aluno deverá fazer login com a conta definida acima, e deverá manter a câmara do seu computador ligada durante todo o teste prático.
  10. Cada aluno deverá utilizar um identificador na sessão Zoom no seguinte formato identificadorMooshak/Nome, eg, al123456:José Almeida.

3. Compilação do Programa

O compilador a utilizar é o gcc com as seguintes opções de compilação -Wall -Wextra -Werror -ansi -pedantic. Para compilar o programa deve executar o seguinte comando: (idem para o projecto 2)

$ gcc -Wall -Wextra -Werror -ansi -pedantic -o proj1 *.c

Este comando deve ter como resultado a geração do ficheiro executável proj1, caso não haja erros de compilação. A execução deste comando não deverá escrever qualquer resultado no terminal. Caso a execução deste comando escreva algum resultado no terminal, considera-se que o programa não compilou com sucesso. Por exemplo, durante a compilação do programa, o compilador não deverá escrever mensagens de aviso (warnings).

3. Exemplos (Input/Output)

Utilizem para debug os exemplos de input e respectivos output que serão disponibilizados.

4. Execução do Programa

O programa deve ser executado da forma seguinte: (idem para proj2)

$ ./proj1 < test.in > test.myout

Posteriormente poderá comparar o seu output (*.myout) com o output previsto (*.out) usando o comando diff,

$ diff test.out test.myout

5. Entrega do Projecto

A entrega do projecto será feita através do sistema Fenix e deverá respeitar o procedimento seguinte:

  • Efectue para cada pergunta o upload de um ficheiro arquivo com extensão .zip que inclua todos os ficheiros fonte que constituem o programa.
  • Se o seu código tiver apenas um ficheiro o zip conterá apenas esse ficheiro.

    $ zip proj1.zip proj1.c
    
  • Se o seu código estiver estruturado em vários ficheiros (.c e .h) não se esqueça de os juntar também ao pacote.

    $ zip proj1.zip *.c *.h
    
  • Até à hora limite de submissão de cada pergunta poderá efectuar o número de submissões que desejar, sendo guardada para efeitos de avaliação apenas a última submissão efectuada. Deverá portanto verificar cuidadosamente que a última submissão corresponde à versão da resposta que pretende que seja avaliada. Não existirão excepções a esta regra.

Attachments