sobre o envio de trabalhos para o mooshak nota prévia ... · programa, antes de o submeter ao...

12
Sobre o envio de trabalhos para o Mooshak Nota prévia Este documento é relativamente extenso, em boa parte pela quantidade de imagens que o ilustram. Está dividido em 3 partes. A primeira diz respeito ao ambiente de avaliação dos trabalhos, conhecido como mooshak. A segunda parte discute como deve experimentar o seu programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores de Windows, a terceira parte do documento explica como instalar uma ferramenta adicional que lhe pode ser bastante útil. Sobre o ambiente de entrega dos trabalhos O seu trabalho será submetido a um sistema de avaliação automática de programas denominado Mooshak. O Mooshak está disponível em http://di90.di.fct.unl.pt/~mooshak/ Quando acede ao servidor, aparece-lhe a seguinte página: Faça login, usando as credenciais que lhe foram atribuídas nas aulas práticas. Finalmente, carregue em Login.

Upload: others

Post on 18-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Sobre o envio de trabalhos para o Mooshak

Nota prévia Este documento é relativamente extenso, em boa parte pela quantidade de imagens que o

ilustram. Está dividido em 3 partes. A primeira diz respeito ao ambiente de avaliação dos

trabalhos, conhecido como mooshak. A segunda parte discute como deve experimentar o seu

programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso.

Finalmente, para os utilizadores de Windows, a terceira parte do documento explica como

instalar uma ferramenta adicional que lhe pode ser bastante útil.

Sobre o ambiente de entrega dos trabalhos O seu trabalho será submetido a um sistema de avaliação automática de programas

denominado Mooshak. O Mooshak está disponível em http://di90.di.fct.unl.pt/~mooshak/

Quando acede ao servidor, aparece-lhe a seguinte página:

Faça login, usando as credenciais que lhe foram atribuídas nas aulas práticas. Finalmente,

carregue em Login.

Page 2: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Ao entrar no Mooshak, deve-lhe aparecer uma janela tal como esta. O primeiro botão a

experimentar é, obviamente, o help! Vejamos o que acontece…

Leia atentamente o conteúdo deste manual, antes de prosseguir… Antes de perguntar alguma

coisa ao docente, tenha a certeza absoluta de que a resposta que procura não está aqui, por

Page 3: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

favor. A razão é simples: se a resposta está aqui e você pergunta à mesma, está a dizer ao

docente que não leu o manual.

Já está? Então, continuemos. Certamente reparou nos problemas A, B, C, e D, no topo da

página. Cada um deles corresponde a uma tarefa do Guião. Seleccione o problema A e

carregue no botão View. Aparece-lhe uma descrição curta do problema, que serve apenas para

complementar a descrição mais completa do guião. A informação disponível no guião, e testes

que lhe estão associados, especifica o formato dos dados de entrada e saída que o seu

programa deve apresentar. Para todos os problemas, serão sempre dados exemplos de uma

sequência de comandos e dos resultados que o programa gera, quando esses comandos são

efectuados.

É ESSENCIAL RESPEITAR ESTE FORMATO.

Repare que ao lado do botão View existe um botão Ask que lhe permite fazer perguntas sobre

este problema. Esta funcionalidade faz parte do Mooshak, mas não é suportada pelos

docentes da cadeira. Se tiver de fazer perguntas, faça-as durante a aula prática, ou nos

horários de atendimento, por favor. Os restantes meios (esta funcionalidade do mooshak, ou

emails enviados aos docentes) poderão não ter resposta.

Vamos admitir que já resolveu a tarefa A e quer tentar uma submissão. Carregue em

Procurar... e escolha o seu ficheiro de código fonte. Tipicamente, deverá ser um arquivo zip,

com o conteúdo da pasta em que está a desenvolver o seu código. Na cadeira de POO, deve

zipar a pasta poo e escolher esse ficheiro como submissão. Depois, carregue em Submit.

Agora, carregue em Submit. Ooops. Algo correu mal. Consulte o link Compile Time Error, para

saber o que aconteceu.

Page 4: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

A mensagem do mooshak é curta, mas informativa.

Quando lhe surgirem erros de compilação, leia atentamente as mensagens dadas pelo

mooshak e tente perceber o que aconteceu. Procure, num livro, ou num recurso online, a

solução para o seu problema, se não souber como o resolver. É claro que também pode

colocar a questão ao seu docente. Mas lembre-se sempre: primeiro, tente descobrir por si. Vai

ver que poupa imenso tempo e aprende muito mais. Poupa tempo porque o docente demora

sempre algum tempo a responder a algo que você pode encontrar em poucos minutos. E

aprende mais porque é obrigado a entender o problema, em vez de simplesmente aplicar uma

solução que lhe dão sem pensar como ela funciona. Neste caso, o mooshak queixa-se de não

ter encontrado o ficheiro poo/Main.java . Ora aqui está uma forma frequente de deitar uma

tentativa para o lixo. Temos de ter o cuidado de criar o zip tal e qual como pretendido. Neste

caso, o meu disparate foi zipar a pasta src, em vez de zipar apenas a pasta poo que se encontra

dentro de src. Agora, mais atento, vou zipar a pasta correcta e submeter o meu programa.

Page 5: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

E pronto. Implemente as tarefas que se seguem e vá submetendo.

Pode ir consultando o ranking, à medida que progride. Depois de submeter as 4 tarefas com

sucesso o ranking fica com este aspecto:

Page 6: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Os valores entre parêntesis indicam o número de tentativas feitas em cada tarefa. Neste caso,

tenho 2 tentativas na primeira e segunda tarefa(esta tarefa B falhada foi omitida na descrição,

para abreviar), e apenas uma em cada uma das restantes. No caso deste guião, havia 10 testes

para cada tarefa. Com 4 tarefas, 40 era a pontuação máxima possível. Missão cumprida. Este

número varia de problema para problema, claro. Em todo o caso, se recebeu o desejado

accepted, isso significa que passou mesmo a todos os testes dessa tarefa.

Como testar localmente o seu trabalho, antes de o enviar ao

mooshak? Há pelo menos três formas de experimentar o seu trabalho. A primeira é executar o programa

a partir do ambiente de desenvolvimento Eclipse, como provavelmente está habituado a fazer

nas aulas práticas. A segunda é através da linha de comandos do seu sistema operativo. Quer

num caso, quer noutro, desenvolverá o seu programa normalmente no Eclipse.

Dentro da pasta em que o seu projecto foi guardado existe uma pasta denominada src onde

está o código fonte do seu programa e uma pasta bin, onde fica a versão compilada, e duas

pastas de testes (a testMooshak é a que vamos usar neste exemplo).

Page 7: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Abra uma janela de linha de comandos do seu sistema operativo (também conhecida como

Consola). No Windows XP, isto faz-se no menu:

Start->All Programs->Accessories->Command Prompt

Deve aparecer-lhe uma consola de comandos.

Vá para a pasta em que guardou o seu projecto (neste exemplo, o guião 2 de 2009/2010 de

POO). Para correr o programa na linha de comandos, escreva java poo.Main na consola e

carregue em return. Na imagem abaixo, o programa entrou em modo de execução,

aguardando agora dados.

Copiar à mão os testes fornecidos, ou outros que você tenha inventado, é fastidioso e

propenso a enganos. É mais prático usar ficheiros de texto com a sequência de comandos.

Assuma que existe um ficheiro denominado t01.in numa pasta testMooshak\A . Como deve ter

reparado numa imagem anterior esta pasta está ao lado de bin, onde nos encontramos,

portanto temos de usar o caminho ..\testMooshak\A\t01.in . Pode consultar o conteúdo do

ficheiro usando o comando type.

Page 8: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Para usar este ficheiro como input, recorra ao mecanismo de redireccionamento do input para

testar o seu código, usando o símbolo ‘<’. Neste exemplo, redireccionamos o input do ficheiro

t01.in para a consola. O resultado é escrito na consola.

Comparar os resultados obtidos com os esperados, a olho, é um convite a desperdiçar

submissões ao mooshak, porque é facílimo deixar escapar um ou outro detalhe essencial do

output. Nada como automatizar a comparação. Para isso, teremos de redireccionar o resultado

de execução num segundo ficheiro, usando o símbolo ‘>’. Por exemplo, vamos gravar o

resultado em t01demo.out. Consulte o ficheiro resultante. Tudo ok?

O passo seguinte é comparar o seu resultado com o resultado esperado. Recomendamos-lhe

que use a ferramenta diff, ou, para quem usa o Windows, em alternativa, o comando fc (file

compare), que já vem instalado de raiz. Compare então o ficheiro que acabou de gerar

Page 9: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

(t01demo.out) com o ficheiro de output de exemplo que tem disponível (neste caso, seria o

ficheiro t01.out).

Sucesso! O fc não encontrou diferenças. Se o mesmo acontecer com os outros testes, o seu

trabalho deverá passar nos testes do mooshak sem problemas.

A vantagem de usar uma ferramenta é que ela nos permite detectar diferenças subtis que de

outro modo nos podem passar despercebidas na inspecção visual dos resultados. A ferramenta

fc recebe dois argumentos, com os nomes dos ficheiros que queremos comparar. Caso existam

diferenças entre ambos os ficheiros, elas serão assinaladas. No exemplo que temos vindo a

construir, os ficheiros t01.out e t01demo.out são iguais. Assim sendo, a ferramenta não dá

nenhum output, além da mensagem de sucesso apresentada. Com o diff, o processo é

semelhante. Em caso de igualdade, aparece-nos apenas de novo a prompt da consola (ver

exemplo abaixo (por acaso, com um screenshot de um projecto de outra cadeira que até foi

programado noutra linguagem de programação). Perfeito. Teste superado!

O sistema de avaliação automática de trabalhos faz isto mesmo. Pega no seu programa, gera

um executável e depois executa o programa com vários ficheiros de input ultra-secretos .

Para cada ficheiro de input, temos sempre um ficheiro com o output respectivo. Se o seu

programa gerar o output esperado, passa no teste. Se o resultado for diferente, nem que seja

num carácter, o programa falha o teste. Isto de ter de passar testes secretos parece

complicado, mas não é. O seu programa porta-se bem, independentemente da sequência de

comandos que seja introduzida, desde que essa sequência seja válida, não é? Aqui, é igual.

Page 10: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Mas em vez de estarmos a repetir uma sequência de comandos manualmente para cada

trabalho, temos umas quantas já prontas a usar, que nos permitem verificar se está tudo bem.

Para cada uma das versões do seu programa, indicamos agora um conjunto de testes de

exemplo. Os testes de exemplo também fazem parte do conjunto de testes secretos do nosso

sistema de avaliação automática. É escusado submeter o seu trabalho ao sistema de avaliação,

enquanto os resultados por ele produzidos não forem os aqui indicados. Mas pode (e deve!)

submeter a sua tarefa A antes de começar a desenvolver a tarefa B, e assim sucessivamente.

Instalação da ferramenta diff O diff está disponível nas distribuições standard de sistemas operativos como o Linux, mas tem

de ser instalado no Windows. Pode obter a ferramenta na Internet, na página

http://gnuwin32.sourceforge.net/packages/diffutils.htm .

Faça download do ficheiro com a descrição “Complete package, except sources”. Execute-o.

Acrescente a pasta de instalação à variável de ambiente Path. Para isso, vá a Start->Control

Panel. Escolha System.

Escolha Environment Variables.

Page 11: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

Escolha Path, em System Variables. Carregue em Edit.

Acrescente o directório de instalação da ferramenta. Neste caso,

C:\Program Files\GnuWin32\bin

Page 12: Sobre o envio de trabalhos para o Mooshak Nota prévia ... · programa, antes de o submeter ao mooshak, para melhorar as suas hipóteses de sucesso. Finalmente, para os utilizadores

E pronto, da próxima vez que abrir a consola do sistema já tem acesso à ferramenta diff.