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
- Criem uma cópia dos vossos projectos avaliados e trabalhem sobre esses pontos de partida. Chamem a essas pastas
proj1
eproj2
. - Identifiquem o que precisam de alterar/adicionar em cada pergunta e façam apenas as alterações/adições necessárias.
- Os projectos deverão preservar toda a funcionalidade anterior, excepto nos casos dos comandos alterados que deverão apresentar a funcionalidade pedida.
- 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.
- Testem os vossos projectos localmente antes de os submeter no Fenix.
- Submetam as vossas soluções no Fenix assim que tiverem resolvido cada uma das perguntas.
- Cada pergunta estará identificada. Deverá submeter cada resposta no correspondente projecto no Fenix.
- Cada aluno deverá registar o seu utilizador na plataforma Zoom com o e-mail
tecnico.ulisboa.pt
. - 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.
- 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.