MC102 - Algoritmos e Programação de Computadores

Turmas QRST - Primeiro Semestre de 2015

Voltar à pagina inicial da disciplina

Script para Auxílio nos Testes dos Laboratórios


Redirecionamento de entrada e saída

Quando escrevemos programas que fazem leitura ou escrita de dados (por exemplo, utilizando scanf e/ou printf), é comum utilizarmos o que chamamos de redirecionamento.

Suponha, por exemplo, que o seu programa labXXy.c foi compilado gerando um executável com nome labXXy. Considere que existe um arquivo texto chamado arq01.in com os valores que seu programa deve ler (como é o caso dos arquivos com extensão “.in” que estão disponíveis no SuSy). Podemos fazer o redirecionamento da entrada utilizando o símbolo “<”.

O comando a seguir:

./labXXy < arq01.in

faz com que seu programa labXXy leia os valores que estão armazenados em arq01.in (ao invés de você ter que digitar cada um dos valores manualmente) e imprima o resultado na saída padrão.

Para fazermos o redirecionamento de saída utilizamos o símbolo “>”.

O comando a seguir:

./labXXy < arq01.in > arq01.out

faz com que o seu programa leia os valores armazenados em arq01.in e que a saída seja armazenada em um arquivo chamado arq01.out.


Comparação dos resultados

No SuSy, também são liberados arquivos com extensão “.res” referentes a cada um dos arquivos “.in”. Se você utilizou o comando de redirecionamento de saída e tem um arquivo arq01.out gerado pelo seu programa, e se você salvou o arquivo arq01.res (a saída esperada pelo SuSy para a entrada arq01.in), então o comando:

diff arq01.res arq01.out

verifica quais são as diferenças entre os arquivos arq01.res e arq01.out. Se nenhuma mensagem for exibida, então os dois arquivos são idênticos. Caso contrário, seu programa não está gerando a saída esperada.

Note que, por exemplo, um único espaço em branco a mais ou a menos na sua saída faz com que seu programa seja considerado errado pelo SuSy.

Fazendo a comparação com todos os arquivos de teste do SuSy

Para testar seu programa com todos arquivos de testes disponíveis no SuSy, você pode baixar todos arquivos com extensão “.in” e “.res” (disponíveis em Testes) ou baixar o arquivo “testes.zip” (disponível em Arquivos Auxiliares), com todos os arquivos de testes, e repetir os passos anteriores para cada par de arquivos “arqZZ.in” e “arqZZ.res”.

Para facilitar o processo de testes, preparamos um script que compila o programa a ser testado, faz o download dos arquivos necessários, executa o programa com todos os casos de testes e faz as comparações com as saídas esperadas pelo SuSy.

Esse script é um arquivo de texto simples que contém uma sequência de comandos que só podem ser entendidos por sistemas Linux. Você pode ver o conteúdo desse arquivo (usando qualque editor de textos), mas é recomendado que você não tente alterá-lo.

Primeiro passo: Baixe o script testador.sh .

Segundo passo: Faça com que o computador entenda que o script é um arquivo executável. Para isso, execute o seguinte comando:

chmod a+x testador.sh

Terceiro passo: Execute o comando:

./testador.sh

e perceba que ele irá imprimir a seguinte mensagem:

Uso: ./testador.sh

Ou seja, você precisa fornecer um único parâmetro para executá-lo: o código do laboratório, no formato XXy, onde XXy é composto por dois dígitos e y é uma letra minúscula ( “a” ou “b”).

Exemplo de execução: Supondo que você queira testar seu programa para o laboratório 02a, você deverá executar o script da seguinte forma:

./testador.sh 02a

Você pode executar esse comando quantas vezes forem necessárias.

Importante: