Soutěžní úloha starší žáci
- Název souboru s programem je:
- KNN.přípona, kde K je kategorie Z a NN je startovní číslo autora programu.
Případné pomocné soubory (například knihovny) mají označení KNNxx.přípona.
Karel
- Napište interpret programovacího jazyka Karel. Jazyk slouží k řízení robota
v obdélníkovém městě, které je široké 10 polí a vysoké 15 polí. Město je
ohrazené zdmi. Samotná postavička robota Karla má velikost jednoho pole. Z jeho
vyobrazení musí být zřejmé, kterým směrem se Karel dívá (kam je otočený čelem
– Sever, Jih, Východ, Západ). Na každé pole je možné umístit až 5 značek. Při
startu interpretu je Karel umístěn v levém dolním rohu a je otočený čelem
k východu, tedy doprava.
- Pokus o zvednutí značky z pole, kde žádná není, způsobí ukončení programu
(oznámí chybu a skončí). Stejně se program zachová při pokusu položit značku na
místo, kam už se žádná nevejde, nebo když Karel narazí do zdi. Důvodem
k ukončení programu je i chyba v zápisu Karlova programu.
- Program doplňte o možnost načíst město (rozmístění značek a zdí)
z textového souboru – Karlova města. Ten obsahuje 15 řádek po 10 znacích.
Mezera či nula znamená prázdné políčko, čísla 1 až 5 určují počet značek, X
představuje zeď.
- Název souboru s Karlovým programem bude zadán jako první parametr na
příkazové řádce. Za ním může následovat název souboru s popisem města;
pokud nebude zadán, zůstane město prázdné.
- Při běžném provozu vykonává Karel jeden základní příkaz cca jednu sekundu. Po
stisku klávesy SHIFT Karel 10x zrychlí.
- Interpret bude zpracovávat textový soubor obsahující příkazy, jejichž popis
naleznete níže.
Hodnocení bude probíhat podle splnění jednotlivých takto doporučených kroků:
- Vykreslení prázdného bludiště s Karlem ve výchozí pozici
- Karel umí vykonávat základní příkazy
- Načtení bludiště ze souboru a jeho zobrazení
- Karel umí vykonávat řídící konstrukce
- Karel umí měnit rychlost
Programovací jazyk Karel má jistou množinu základních příkazů a konstrukcí.
- Základní příkazy jsou následující:
- POLOZ položí na políčko, kde Karel stojí, jednu značku
- ZVEDNI zvedne značku z políčka, na němž Karel stojí
- KROK Karel udělá jeden krok (posune se o políčko) ve směru, kam je otočen
- VLEVO-VBOK Karel se otočí vlevo oproti směru, kam je teď otočen
Řídící konstrukce
OPAKUJ n opakuje n krát příkazy
příkaz
příkaz
KONEC
DOKUD podmínka dokud je podmínka splněna, vykonává zadané příkazy
příkaz
příkaz
KONEC
KDYZ podmínka provede zadané příkazy když je podmínka splněna
příkaz
příkaz
KONEC JINAK nepovinná část příkazu KDYZ, příkazy se vykonávají, když podmínka
není
příkaz splněna
příkaz
KONEC
; komentář takovýto řádek je komentářem a nedělá nic
# komentář takovýto řádek je také ignorován
prázdné řádky jsou stejně jako komentáře ignorovány
Pravidla pro tvorbu podmínek jsou následující:
Podmínka začíná slovem JE nebo NENI a za mezerou následuje jedno ze slov ZED,
ZNACKA, SEVER, JIH, ZAPAD, VYCHOD. Značka je testována na políčku kde Karel stojí,
zeď se testuje na políčku před Karlem. Podmínka SEVER je pravdivá když je Karel
otočený čelem k horní zdi, JIH k dolní zdi a podobně (pozn. ZAPAD je
vlevo).