Koeficient: 1
Vaším úkolem je vytvořit program, který vypíše na obrazovku všechny pátky třináctého od 1. 1. 1990 do 31. 12. 2020 -- poradíme vám, že 1. 1. 1990 bylo pondělí. V programu nesmíte používat systémové funkce pro práci s datem.
Vypisuje s (několika) chybami | 2 body |
Vypíše vše v pořádku (52 pátků) | 3 body |
Výstup programu je přehledný a v pořádku | 1 bod |
Efektivita -- cyklus přes všechny měsíce (ne přes dny) | 1,5 bodu |
Efektivita -- den v týdnu pro pátek 13 zjišťuje podle minulého měsíce (nepočítá vše znovu od začátku pro každý měsíc) | 1,5 bodu |
Dokumentace | 1 bod |
Koeficient: 3
Napište program, který slouží k počítání slov v zadaném textovém souboru. Slovo je to, co se skládá z písmen anglické abecedy, číslic a podtržítka. Všechny ostatní znaky (i nová řádka) jsou chápány jako oddělovače. Mezi slovy může být libovolný počet oddělovačů. Uživatel si může vybrat mezi jedním z následujících způsobů výstupu:
Ošetření zadání jména souboru a čtení ze souboru | 1 bod |
Správně počítá počty znaků, slov a řádek | 2 body |
Výpis slov podle abecedy | 2 body |
Výpis slov podle četnosti | 1 bod |
Efektivita -- bufferované čtení pomocí BlockRead | 1 bod |
Efektivita -- slova jsou uložena v dynamické struktuře (strom, seznam) | 1 bod |
Efektivita -- při řazení podle četnosti není celý seznam slov kopírován, jsou pouze přeuspořádány ukazatele | 1 bod |
Dokumentace | 1 bod |
Koeficient: 2
Napište program, který bude provádět jednoduché grafické příkazy. Na vstupu bude textový soubor, který obsahuje seznam příkazů a jejich parametrů. Na každém řádku bude pouze jeden příkaz. Souřadnicový systém grafického jazyka je následující: rozsah obou os od 0 do 1, napřed se zadává souřadnice x (vzdálenost od levého okraje), pak souřadnice y (vzdálenost od dolního okraje). Využijte celou plochu obrazovky, pouze v dolní části si nechte místo na jeden řádek textu -- stavovou řádku.
Možné příkazy jsou:
LINE
X1 Y1 X2 Y2POINT
X YBOX
X1 Y1 X2 Y2FILLBOX
X1 Y1 X2 Y2COLOR
CPAUSE
CLEAR
Příkazy je možné psát malými i velkými písmeny. Příkazy a parametry jsou od
sebe odděleny libovolným počtem mezer. Vše se kreslí (i vyplňuje) právě nastavenou
barvou (určenou příkazem COLOR
). Po startu programu je nastavena bílá
barva. V případě chyby vypište do stavové řádky informace o chybě
(číslo řádky a chybný příkaz), počkejte na stisk klávesy a ukončete běh
programu. V grafickém programu se mohou vyskytovat prázdné řádky a
komentářové řádky (začínají znakem '%
' nebo ';
'), které
se ignorují. Umožněte zadání názvu vstupního souboru jako parametru příkazové
řádky.
Ukázkový program:
% Toto je ukázkový program % úhlopříčka LINE 0 0 1 1 % nakreslíme zelené obdélníky COLOR 2 FILLBOX 0 1 0.5 0.5 FILLBOX 0.5 0.5 1 0 PAUSE % obdélníky orámujeme žlutě COLOR 14 BOX 0 1 0.5 0.5 BOX 0.5 0.5 1 0 PAUSE
Tento program nakreslí bíle úhlopříčku, pak vykreslí dva zelené obdélníky přes čtvrtinu plochy obrazovky (vlevo nahoře a vpravo dole), počká na stisk klávesy, obdélníky orámuje žlutě, počká znovu na stisk klávesy a skončí.
Načítá vstupní soubor, umí převzít název z příkazové řádky | 1 bod |
Program rozpoznává bezchybně všechny příkazy, ignoruje velikost písmen | 1 bod |
Program dokáže vykreslit obrázek dodaný se zadáním | 1 bod |
Program vykresluje bezchybně | 2 body |
Program detekuje chybu ve vstupním souboru, reaguje jinak než havárií | 1 bod |
Efektivita -- vstupní soubor se čte pouze jednou | 1,5 bodu |
Efektivita -- přizpůsobivost rozlišení obrazovky (nepředpokládá 640x480) | 1,5 bodu |
Dokumentace | 1 bod |
Koeficient: 1,5
Napište program, který přesně vynásobí maximálně stociferná čísla.
Správné načtení čísel (nejlepe jako řetězce) | 1 bod |
Rozdělení čísla na vhodné části (číslice, dvojice číslic, atd.) | 2 body |
Správné vynásobení jednotlivých částí | 2 body |
Výpis výsledku | 1 bod |
Efektivita | 3 body |
Dokumentace | 1 bod |
Koeficient: 1,5
Vaším úkolem je vytvořit program, který vypíše na obrazovku všechny pátky třináctého od 1. 1. 1990 do 31. 12. 2020 -- poradíme vám, že 1. 1. 1990 bylo pondělí. V programu nesmíte používat systémové funkce pro práci s datem.
Vypisuje s (několika) chybami | 2 body |
Vypíše vše v pořádku (52 pátků) | 3 body |
Výstup programu je přehledný a v pořádku | 1 bod |
Efektivita -- cyklus přes všechny měsíce (ne přes dny) | 1,5 bodu |
Efektivita -- den v týdnu pro pátek 13 zjišťuje podle minulého měsíce (nepočítá vše znovu od začátku pro každý měsíc) | 1,5 bodu |
Dokumentace | 1 bod |
Koeficient: 2
Napište program, který slouží k počítání slov v zadaném textovém souboru. Slovo je to, co se skládá z písmen anglické abecedy, číslic a podtržítka. Všechny ostatní znaky (i nová řádka) jsou chápány jako oddělovače. Mezi slovy může být libovolný počet oddělovačů. Program spočítá počet slov v souboru, počet znaků v souboru a počet řádek (i prázdný řádek je řádek). Na konci přehledně vypište všechny tři získané hodnoty.
Ošetření zadání jména souboru | 1 bod |
Čtení ze souboru | 2 body |
Správně počítá znaky, slova a konce řádek | 3 body |
Efektivita -- bufferované čtení pomocí BlockRead | 3 body |
Dokumentace | 1 bod |
Koeficient: 3
Napište program, který bude provádět jednoduché grafické příkazy. Na vstupu bude textový soubor, který obsahuje seznam příkazů a jejich parametrů. Na každém řádku bude pouze jeden příkaz. Souřadnicový systém grafického jazyka je následující: rozsah obou os od 0 do 1, napřed se zadává souřadnice x (vzdálenost od levého okraje), pak souřadnice y (vzdálenost od dolního okraje). Využijte celou plochu obrazovky, pouze v dolní části si nechte místo na jeden řádek textu -- stavovou řádku.
Možné příkazy jsou:
LINE
X1 Y1 X2 Y2POINT
X YBOX
X1 Y1 X2 Y2FILLBOX
X1 Y1 X2 Y2COLOR
CPAUSE
CLEAR
Příkazy je možné psát malými i velkými písmeny. Příkazy a parametry jsou od
sebe odděleny libovolným počtem mezer. Vše se kreslí (i vyplňuje) právě nastavenou
barvou (určenou příkazem COLOR
). Po startu programu je nastavena bílá
barva. V případě chyby vypište do stavové řádky informace o chybě
(číslo řádky a chybný příkaz), počkejte na stisk klávesy a ukončete běh
programu. V grafickém programu se mohou vyskytovat prázdné řádky a
komentářové řádky (začínají znakem '%
' nebo ';
'), které
se ignorují. Umožněte zadání názvu vstupního souboru jako parametr příkazové
řádky.
Ukázkový program:
% Toto je ukázkový program % úhlopříčka LINE 0 0 1 1 % nakreslíme zelené obdélníky COLOR 2 FILLBOX 0 1 0.5 0.5 FILLBOX 0.5 0.5 1 0 PAUSE % obdélníky orámujeme žlutě COLOR 14 BOX 0 1 0.5 0.5 BOX 0.5 0.5 1 0 PAUSE
Tento program nakreslí bíle úhlopříčku, pak vykreslí dva zelené obdélníky přes čtvrtinu plochy obrazovky (vlevo nahoře a vpravo dole), počká na stisk klávesy, obdélníky orámuje žlutě, počká znovu na stisk klávesy a skončí.
Načítá vstupní soubor, umí převzít název z příkazové řádky | 1 bod |
Program rozpoznává bezchybně všechny příkazy, ignoruje velikost písmen | 1 bod |
Program dokáže vykreslit obrázek dodaný se zadáním | 1 bod |
Program vykresluje bezchybně | 2 body |
Program detekuje chybu ve vstupním souboru, reaguje jinak než havárií | 1 bod |
Efektivita -- vstupní soubor se čte pouze jednou | 1,5 bodu |
Efektivita -- přizpůsobivost rozlišení obrazovky (nepředpokládá 640x480) | 1,5 bodu |
Dokumentace | 1 bod |
Koeficient: 1
Napište program, který průběžně zobrazuje kolik dní, hodin, minut a sekund zbývá do začátku roku 2000.
Zobrazení správného časového údaje | 4 body |
Kvalita grafického zobrazení | 2 body |
Efektivita -- časový údaj se přepisuje jen jednou za sekundu | 3 body |
Dokumentace | 1 bod |
Vytvořte program pro hraní stolní deskové hry Dáma, která se hraje podle následujících pravidel.
Hraje se na klasické šachovnici (8 x 8 polí). Kameny se pohybují pouze po černých polích a pouze ve směru od hráče (to neplatí pro dámu). Má-li hráč možnost vzít soupeři kámen, musí tak učinit (platí i pro vícenásobné braní) a to i dámou. Vyhrává hráč, který soupeři vzal všechny hrací kameny.
Vaším úkolem je zobrazit hrací pole (šachovnici) a hrací kameny. Program umožní hrát dámu dvěma hráčům. Výběr kamene a tah může hráč provést myší nebo klávesnicí. Program umožní odebrání kamenů po skoku a vytvoření dámy při dosažení protějšího konce šachovnice hracím kamenem.
Doplňte program tak, aby bylo možné zapnout kontrolu správnosti tahu kamenem.
Po splnění předchozího úkolu doplňte program tak, aby uměl simulovat jednoho hráče.
Zobrazení hracího pole | 1 bod |
Zobrazení hracích kamenů | 1 bod |
Umožnění tahu kamenem (označení kamene a cílové pozice) | 1 bod |
Kontrola správnosti tahu (nápověda hráči o možném tahu) | 1 bod |
Vytvoření dámy | 1 bod |
Možnost hry druhého hráče počítačem | 1 bod |
Efektivita | 3 body |
Dokumentace | 1 bod |
Za každou úlohu je možno přidělit maximálně 10 bodů, které se poté násobí koeficientem úlohy. 6 bodů je vyhrazeno pro ohodnocení funkčnosti programu, 3 body přísluší pro efektivitu a jeden pro dokumentaci. V dokumentaci se 1/4 bodu hodnotí přehledná úprava zdrojového textu, 1/4 bodu vhodné názvy identifikátorů a 1/2 bodu přísluší pro dobře okomentovaný program.