Soutěžní úloha mládež
- Název souboru s programem je:
- KNN.přípona, kde K je kategorie M 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í měnit rychlost
- Karel umí vykonávat řídící konstrukce
- Karel umí vytvářet a používat vlastní příkazy (podprogramy)
Programovací jazyk Karel má jistou množinu základních příkazů a konstrukcí.
Příkazy je možné rozšiřovat o vlastní příkazy (podprogramy).
- 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
-
- PRIKAZ nový_příkaz definuje nový příkaz (podprogram), ten lze vyvolat jako
ostatní příkazy,
- příkaz příkaz může volat i sám sebe
- 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).