Com usar els jocs de prova dels projectes

Índex

Acompanyem cada un dels projectes d'Informàtica amb un conjunt de jocs de prova. Un joc de prova està constituït per dos grups de fitxers: els corresponents a les dades que ha de llegir el programa i els corresponents als resultats que ha d'escriure. A continuació presentem diferents situacions en funció d'on llegeix les dades el programa i on escriu els resultats: els canals estàndard o fitxers seqüencials de text.

Dades pel canal estàndard d'entrada i resultats pel canal estàndard de sortida

Suposem, per exemple, que el programa xyz llegeix les dades del canal estàndard d'entrada i escriu els resultats al canal estàndard de sortida. Suposem també que disposem de tres jocs de prova numerats del 0 al 2. El joc de prova k-èssim està format per dos fitxers:

k-etst
Conté les dades que el programa llegirà del canal estàndard d'entrada.
k-stst
Conté els resultats que el programa hauria d'escriure al canal estàndard de sortida

És a dir, el fitxer 0-etst conté les dades del primer joc de prova i el fitxer 0-stst conté els resultats. Els fitxers 1-etst i 1-stst contenen respectivament les dades i els resultats del segon joc de prova, i així successivament.

Per tal d'executar el programa subministrant-li com a dades pel canal estàndard d'entrada el contingut del fitxer 0-etst cal fer el següent:

xyz < 0-etst

El símbol < indica a l'intèrpret de comandes que el canal estàndard d'entrada es redirigeix cap al fitxer 0-etst. Per executar el programa amb les dades dels jocs de prova 1 i 2 només cal substituir 0-etst per 1-etst o 2-etst en la comanda anterior.

Com que el programa xyz escriu els resultats al canal estàndard de sortida, hauríem de comprovar que el resultat escrit pel programa coincideix amb el contingut del fitxer 0-stst.

És possible comprovar automàticament que el resultat del programa xyz coincideix amb el contingut del fitxer 0-stst. Per això caldrà redirigir la sortida de xyz cap a un fitxer temporal, tmp per exemple, fent el següent:

xyz < 0-etst > tmp

Ara cal comprovar automàticament que el contingut dels fitxers 0-stst i tmp coincideix, tal i com s'explica en el document Com calcular les diferències entre dos fitxers.

Dades i resultats en fitxers seqüencials de text

Suposem, per exemple, que el programa lmn rep les dades de dos fitxers seqüencials de text anomenats fe1 i fe2, i que calcula els resultats en tres fitxers seqüencials de text anomenats fs1, fs2 i fs3. Suposem també que disposem de tres jocs de prova numerats del 0 al 2. El joc de prova k-èssim està format per cinc fitxers:

k-fe1 i k-fe2
Contenen les dades que el programa llegirà dels fitxers fe1 i fe2.
k-fs1, k-fs2 i k-fs3
Contenen els resultats que el programa hauria d'escriure en els fitxers fs1, fs2 i fs3.

És a dir, els fitxer 0-fe1 i 0-fe2 contenen les dades del primer joc de prova i els fitxers 0-fs1, 0-fs2 i 0-fs3 contenen els resultats. Els fitxers 1-fe1, 1-fe2, 1-fs1, 1-fs2 i 1-fs3 contenen les dades i els resultats del segon joc de prova, i així successivament.

Per tal d'executar el programa subministrant-li les dades del joc de prova 0, abans cal copiar el contingut dels fitxers 0-fe1 i 0-fe2 en fe1 i fe2 respectivament, que són els fitxers d'on llegirà el programa, fent el següent:

cp 0-fe1 fe1
cp 0-fe2 fe2
lmn

El programa lmn llegirà les dades dels fitxers fe1 i fe2, que coincideixen amb les del joc de prova 0, i escriurà en els fitxers fs1, fs2 i fs3. Podem comprovar automàticament que cada un dels fitxers resultants coincideix amb el resultat que esperem comparant el fitxer fs1 amb 0-fs1, fs2 amb 0-fs2 i fs3 amb 0-fs3 com s'explica en el document Com calcular les diferències entre dos fitxers.

Per executar el programa lmn amb les dades del joc de prova 1 i comprovar que el resultats coincideixen amb els que proporciona el joc de prova 1 només cal substituir 0- per 1- en els dos paràgrafs anteriors.

Dades i resultats en fitxers i canals estàndard

Suposem, per exemple, que el programa opq llegeix les dades de canal estàndard d'entrada i del fitxer fe1, i escriu els resultats al canal estàndard de sortida i al fitxer fs1. Suposem també que disposem de tres jocs de prova numerats del 0 al 2. El joc de prova k-èssim està format per quatre fitxers:

k-etst
Conté les dades que el programa llegirà del canal estàndard d'entrada.
k-fe1
Conté les dades que el programa llegirà del fitxer fe1.
k-stst
Conté els resultats que el programa hauria d'escriure al canal estàndard de sortida.
k-fs1
Conté els resultats que el programa hauria d'escriure en el fitxer fs1.

És a dir, els fitxer 0-etst i 0-fe1 contenen les dades del primer joc de prova i els fitxers 0-stst i 0-fs1 contenen els resultats. Els fitxers 1-etst, 1-fe1, 1-stst i 1-fs1 contenen les dades i els resultats del segon joc de prova, i així successivament.

Per tal d'executar el programa subministrant-li les dades del joc de prova 0, abans cal copiar el contingut del fitxer 0-fe1 en fe1, que és el fitxer d'on llegirà el programa, i en executar el programa cal redirigir l'entrada cap a 0-etst i la sortida cap a un fitxer temporal tmp fent el següent:

cp 0-fe1 fe1
opq < 0-etst > tmp

El programa opq llegirà les dades del fitxer fe1 i del canal estàndard d'entrada que hem redirigit cap a 0-etst, que coincideixen amb les del joc de prova 0. El programa escriurà en el fitxer fs1 i el canal estàndard de sortida que hem redirigit cap al fitxer tmp. Podem comprovar automàticament que cada un dels fitxers resultants coincideix amb el resultat que esperem comparant el fitxer fs1 amb 0-fs1 i tmp amb 0-stst com s'explica en el document Com calcular les diferències entre dos fitxers.

Per executar el programa lmn amb les dades del joc de prova 1 i comprovar que el resultats coincideixen amb els que proporciona el joc de prova 1 només cal substituir 0- per 1- en els dos paràgrafs anteriors.


Valid XHTML 1.0 Transitional Valid CSS! Viewable With Any Browser