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
.
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.
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:
.c
” no diretório. Se você tiver várias versões (antigas) do seu programa, crie, por exemplo, um diretório chamado backup
e mova para lá todas as versões antigas do seu programa.dadosXX
que irá conter os arquivos de testes com extensão “.in
” e “.res
” (baixados do site do SuSy pelo script).curl
esteja previamente instalado. Caso ele não esteja, uma mensagem de erro será exibida e o script será interrompido.