MC102 - Algoritmos e Programação de Computadores

Turmas KLMN - Primeiro Semestre de 2016

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 labXX.c foi compilado gerando um executável com nome labXX. 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:

./labXX < arq01.in

faz com que seu programa labXX 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:

./labXX < 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 no link “Testes”) e repetir os passos anteriores para cada par de arquivos “arqXX.in” e “arqXX.res”.

No entanto, 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 qualquer 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
Exemplo : ./testador.sh mc102klmn 01

Ou seja, você precisa fornecer dois parâmetros para executá-lo: o código da sua turma no SuSy e o número do laboratório no formato XX.

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

Importante: