http://vitas.matfyz.cz/cv/contest/navod.html

Pascal-contest -- návod

Motivace

Tyto stránky slouží k procvičení programovaní v (borland) Pascalu. Naleznete zde jednoduché úložky různých obtížností. Výhodou je, že své spravnost výsledků si můžete i zkontrolovat.

Vícenásobné zadání

Zadání úloh je navrženo tak, aby program četl ze standardního vstupu a řešení vypisoval na standardní výstup. Program řeší při jednom spuštění vícero zadání. Vstupy i výstupy jsou definovány poměrně jednoznačně. Díky tomu je možné (více či méně) ověřit správnost programu tím, zda na vzorový vstup odpovídá váš program stejně jako vzorový program.

Vstup je většinou "více ulohový", tedy váš program musí řešit více instancí zadaného problému. Každý řádek je jedním zádáním. Záčíná číslem zadání (a dvojtečkou) následuje opravdové zadání příkladu. Poslední zadání ma číslo 0.

Přiklad: Vybere největší přirozené číslo, ze tří. Vzorový vstup pak bude vypadat nasledovně:

9: 97 66 82
8: 54 75 67
7: 92 46 62
6: 63 74 30
5: 70 69 94
4: 6 33 64
3: 8 44 6
2: 63 23 40
1: 31 3 62
0: 70 60 96

Váš program by měl vygenerovat:

9: 97
8: 75
7: 92
6: 74
5: 94
4: 64
3: 44
2: 63
1: 62
0: 96

Takovýto typ příkladu můžete číst například pomoci této konstrukce:



var
        { cislo zadani  }
        N: Integer;
        { dvojtecka }
        dt: Char;

begin
        repeat
                read(N, dt);

		{ načtení jednoho vstupu a řešení }

        until N = 0;
end.

Obtížnost

Úlohy jsou velmi různorodě těžké. Nějaké znamkování toho jak moc je uloha těžka je taky obtížné, ale přesto jsem vytvořil nasledující kategorie:

Průběh

Procvičování úloh pak může vypadat takto: přečte si zadání příkladu test, vyřešíte, implementujete, odladíte. Stáhnete si vzorový vstup test.in a vzorový výstup test.out. spustíte svůj program na vzorový vstup

test.exe < test.in > test.my

porovnáte test.my a test.out. Pokud budou stejné, je velká pravděpodobnost, že jste odvedli dobrou práci. V případě, že nebudete schopni s úlohou hnout, můžete se nechat inspirovat vzorovým řešením test.pas.

Porovnávání výstupů

Porovnávat soubory může pomocí jednoduché (až prostoduché) utilitky sdiff.pas, která se používá následovně:

sdiff.exe test.my test.out

výsledkem je buď prohlášení, že oba soubory jsou shodné, případně vytiskne první řádek kde se liší.

Disclaimer

Je možné, že v příkladech budou chyby (nejednoznačné či nejasné zadání, nekorektní vstup, špatně vzorově vyřešený příklad). Pokud na takovou chybku narazíte rozhodně si ji nenechávejte pro sebe a ihned pošlete "bugreport" (vitas@popelka.ms.mff.cuni.cz).

Tímto způsobem testování se nedají odhalit uplně všechny zaludnosti, a možné chyby programu. Nicméně pravděpodobnost, že jste postupovali správně je při shodném výsledku vysoká. Co však tento systém neodhalí je "časová složitost" (u některých příkladů je uvedena a pak záleží pouze na vašem svědomí, zda-li je vaše řešení je optimální).

-^-


Zpět: http://vitas.matfyz.cz/cv/contest/navod.html