Karel - simulátor

Karlův jazyk

Karel se pohybuje ve velmi jednoduchém světě. Svět má tvar čtvercové mřížky a na každém políčku může být jen velmi málo různých věcí:

Karel umí jen pár příkazů:

Karlův program se skládá z posloupnosti deklarací funkcí za kterou následuje jeden příkaz "RUN jmeno-funkce", který udává jméno "hlavní" funkce (tj. funkce, která se má spustit jako první). Níže na této stránce máte uvedeny dva příklady, které vám zápis programů ozřejmí.

Simulátor

Abyste si mohli Karlův programovací jazyk vyzkoušet, dáváme vám k dispozici jednoduchý simulátor. Stejně jako Karlův jazyk, i simulátor je velmi prostý (časem možná bude k dispozici i trochu graficky hezčí verze).

Pomocí tlačítek vpravo nahoře můžete přímo měnit Karlův svět (přidávat či rušit zdi a značky, umisťovat Karla). Do okna vlevo dole píšete vaše programy. Okno vpravo dole slouží k výpisu chybových hlášení. Jakmile zapíšete program, tak ho "načtete". Pokud načtení proběhne v pořádku, tak můžete zkusit program simulovat: buď po jednotlivých krocích nebo ho rovnou spustíte celý a podíváte se na konečný výsledek. Před dalším spuštěním musíte program znovu načíst.

Značky jsou reprezentovány čárkami "=", "-" (pokud je někde více jak 8 značek, používáme značení "moc"). Karel je reprezentován šipkou "v" nebo "<" nebo ">" nebo "^".

Příklady

Příklady si můžete rovnou vyzkoušet přetažením do simulátoru.

Příklad 1

Předpokládejme, že na ploše nejsou na začátku žádné značky. Po provedení následujícího programu bude na každém políčku řádku, na kterém Karel na začátku stál, jedna značka.

DEFINE TURNNORTH
IFNORTH SKIP LEFT
IFNORTH SKIP TURNNORTH
END

DEFINE GOTOWALL
IFWALL SKIP STEP
IFWALL SKIP GOTOWALL
END

DEFINE GOTOWALLMARK
IFWALL SKIP STEP
PUT
IFWALL SKIP GOTOWALLMARK
END

DEFINE MAIN
TURNNORTH
LEFT
GOTOWALL
LEFT
LEFT
PUT
IFWALL SKIP GOTOWALLMARK
END

RUN MAIN

Příklad 2

Předpokládejme, že Karel stojí před hromádkou značek a jeho úkolem je přenést je všechny o políčko dál.

DEFINE TAKEONE
TAKE
STEP
PUT
LEFT
LEFT
STEP
LEFT
LEFT
TAKEALL
END

DEFINE TAKEALL
IFMARK TAKEONE SKIP
END

DEFINE MAIN
STEP
TAKEALL
END

RUN MAIN