U nás se objevil poprvé zásluhou docenta Hvoreckého, CSc. Robota Karla se ujala spousta lidí, mezi nimi i ing. Tomáš Bartovský, CSc., a ing. Rudolf Pecinovský, CSc., kteří zjednodušením „pravidel“ jazyka robota Karla více přiblížili dětem. Oproti americkému Karlovi přidali také rekurzi.
Pro Tebe a všechny české a moravskoslezské přátele ho v roce 1999 znovu oživil a v roce 2001 pro Internet připravil vysokoškolský student Oldřich Jedlička. Na webové stránky se dostal poprvé až v roce 2002 a nového zpracování se dočkal v roce 2006.
Karel je především robot. Jako každý správný robot i Karel plní něčí příkazy. Tou váženou osobou, která mu může dávat příkazy, jsi Ty.
Karel zná několik příkazů, kterými ho můžeš vést jeho městem.
KROK |
Udělá jeden krok vpřed. Jít mimo město, stejně jako lézt na zdi, se nedá. Karel Tě sám upozorní, že nemůže příkaz provést. |
VLEVO-VBOK |
Otočí se o 90° proti směru hodinových ručiček. Otáčet se může stále, netočí se mu totiž hlava. |
POLOŽ |
Karel vezme ze svého kouzelného batohu, který má na zádech, značku a položí ji. Do jednoho políčka se vejde osm značek. |
ZVEDNI |
Zvedne značku a dá si ji zpátky do batohu. |
Teď už víš, jakými příkazy můžeš vést Karla po městě. Při pohybu může ujít jeden krok, který je vždy stejně dlouhý, nebo se otočit přesně o 90° proti směru hodinových ručiček – vyjádřeno jako v zeměpise, může být otočen pouze na sever, západ, jih a východ. Tato dvě omezení, totiž že může učinit pouze celý krok, ne třeba půlku nebo jeden a půl kroku, a že se může otočit pouze do čtyř směrů, dovolují představit si Karlovo město jako šachovnici, jehož políčka jsou přesně tak dlouhá, jako je Karlův krok. Tuto představu mohou využít všichni, kteří nemají zrovna přístup k počítači – stačí si vzít šachovnici, jež bude představovat Karlovo město, a figurku koně, která bude představovat Karla.
Mimo tyto příkazy zná Karel ještě další. Některé mu umožňují se lépe rozhodnout, jestli má udělat krok, nebo vzít značku, a další mu řekne, že má příkaz opakovat několikrát.
KDYŽ podmínka příkazy 1 KONEC, JINAK příkazy 2 KONEC
|
Karel prozkoumá, jestli je
Uvedení slov |
DOKUD podmínka příkazy KONEC
|
Karel zjistí, jestli je |
OPAKUJ počet –KRÁT příkazy KONEC
|
Karel bude opakovat
Uvedení slova |
Novinka v zápisu cyklů DOKUD
a OPAKUJ
je možnost zápisu podmínky AŽ
podmínka
na konci
cyklu, která dokáže cyklus předčasně ukončit. Další novinkou je zápis cyklu
OPAKUJ
bez uvedení počtu opakování. Tyto novinky
fungují jen v javascriptové verzi, windowsová verze Visual Karel je mít nebude.
Níže je uveden přehled možných zápisů. Přehled není úplný, autor zcela záměrně zatajil jednu variantu, protože Tě nechce mást blbostmi.
DOKUD podmínka
1 příkazy AŽ podmínka
2 |
Karel zjistí, jestli je
Shrneme-li to, cyklus se opouští na začátku tehdy, když NENÍ splněna |
OPAKUJ počet -KRÁT příkazy AŽ podmínka |
Karel opakuje
Opakování |
OPAKUJ příkazy AŽ podmínka |
Tento zápis je podobný cyklu
Cyklus končí, když JE |
Slovo příkazy
označuje libovolný sled příkazů,
které
Karel zná. Při učení Karla novému příkazu můžeš mezi příkazy
zapsat i tento nový příkaz. Takovému zápisu
se říká rekurze. Příklad použití uvidíš v odstavci Zápis nových příkazů.
Podmínka
je jedno slovo, případně spojení dvou
slov.
Může to být spojení slova JE
, které je nepovinné,
nebo NENÍ
, a jednoho dalšího slova:
ZEĎ
|
Jestli JE / NENÍ před Karlem postavena zeď, pak je podmínka splněna.
|
ZNAČKA
|
Jestli JE / NENÍ na políčku ve městě, kde Karel právě stojí,
umístěna
značka, pak je podmínka splněna.
|
DOMOV
|
Jestli JE / NENÍ políčko, na kterém Karel stojí, označeno písmenem
D (DOMOV), Karel se nachází či nenachází doma a podmínka je
splněna.
|
VÝCHOD
|
Jestli JE / NENÍ Karel natočen na východ, je podmínka splněna.
|
SEVER
|
Jestli JE / NENÍ Karel natočen na sever, je podmínka splněna.
|
ZÁPAD
|
Jestli JE / NENÍ Karel natočen na západ, je podmínka splněna.
|
JIH
|
Jestli JE / NENÍ Karel natočen na jih, je podmínka splněna.
|
Protože Karel někdy udělá pauzu při vykonání příkazů (podrobnosti najdeš v odstavci Rychlost pohybu), můžeš mu říci, aby žádnou prodlevu nedělal a příkazy provedl co nejrychleji. K tomu slouží následující zápis:
RYCHLE příkazy POMALU
|
Karel provede bez prodlení všechny |
RYCHLE příkazy KONEC
|
Jiný zápis stejného úkolu. Liší se pouze ve slově |
Posledním příkazem, který Karel umí, je:
STOP |
Karel zastaví svou činnost a uvede se do stavu, ve kterém znovu přijímá nové příkazy. |
Na několika jednoduchých příkladech Tě seznámím s použitím základních příkazů a jejich skládáním. Protože cest k cíli vede vždy více, ani možnost zápisu jednoho příkazu není jediná. Následující ukázky si ale nekladou za cíl být úplným výčtem všech možností zápisu.
ČELEM-VZAD VLEVO-VBOK VLEVO-VBOK KONEC
|
ČELEM-VZAD OPAKUJ 2-KRÁT VLEVO-VBOK KONEC KONEC
|
VPRAVO-VBOK VLEVO-VBOK VLEVO-VBOK VLEVO-VBOK KONEC
|
VPRAVO-VBOK OPAKUJ 3-KRÁT VLEVO-VBOK KONEC KONEC
|
VPRAVO-VBOK ČELEM-VZAD VLEVO-VBOK KONEC
|
VPRAVO-VBOK VLEVO-VBOK ČELEM-VZAD KONEC
|
Karel při vykonávání uživatelských příkazů bere příkaz za příkazem. Pokud při činnosti narazí na uživatelský příkaz, zapamatuje si, který příkaz následoval, a začne ten uživatelský příkaz vykonávat.
A nyní několik příkladů s podmínkami. Vyskytuje se v nich slovo
rekurze. Je to mocný nástroj, který Ti mnohokrát pomůže a usnadní řešení
nejednoho problému. Na následujícím příkladu jistě vidíš, že příkaz KE ZDI
je použit sám v sobě. A právě použití příkazu,
který se Karel zrovna učí, v těle tohoto příkazu, se označuje honosným
slovem rekurze. Při psaní vlastních programů s rekurzí si dej pozor,
abys vždy měl podmínku, která cyklus volání sebe sama ukončí. V tomto
případě to je podmínka KDYŽ NENÍ ZEĎ
, která se
jednou musí stát nepravdivou (Karel, pokud pokaždé udělá krok, musí ke zdi
dojít). V posledním příkladě příkazu KE ZDI
je situace
stejná – zamysli se nad ním.
bez rekurze |
s rekurzí |
||
KE ZDI DOKUD NENÍ ZEĎ KROK KONEC KONEC |
KE ZDI KDYŽ NENÍ ZEĎ KROK KE ZDI KONEC KONEC |
KE ZDI KDYŽ NENÍ ZEĎ KROK KE ZDI KONEC, JINAK KONEC KONEC |
KE ZDI KDYŽ JE ZEĎ KONEC, JINAK KROK KE ZDI KONEC KONEC |
Psaní komentářů v příkazech je dovoleno a od verze 2.0 webového robota Karla jsou ukládány společně s příkazy. Stejně tak jsou zachovávány prázdné řádky, avšak pokud vynecháš více prázdných řádek, bude uložen pouze jeden.
příkaz ;
komentář ; komentář
|
Veškerý text za středníkem (; ) je považován za
komentář. Pokud se nachází komentář za příkazem, je při ukládání umístěn na
samostatnou řádku.
|
Vývojové prostředí robota Karla se skládá z těchto čtyř částí:
Město robota Karla je vlastně šachovnice 10 × 10 polí. Mimo město Karel nemůže jít, je sám ve svém světě a Ty mu děláš společnost. Jedno políčko ve městě je nadepsáno písmenem D a označuje Karlův domov. Do města můžeš přistavovat zdi. Protože je Karel jenom jednoduchý robot, neumí lézt na zdi, a proto je pro něj zeď nepřekonatelnou překážkou.
Pod městem je řádka nástrojů, s jejichž pomocí můžeš Karlovi město přikrášlit. Následující přehled Ti řekne, co všechno lze ve městě udělat po tom, co si klepnutím myši zvolíš určitý nástroj. |
Karel
|
|
Jedním klepnutím myši ve městě Karla přemístíš na jiné políčko. Samozřejmě, že
ho nelze donutit lézt na zdi, to Karel neumí. Dvojitým klepnutím myši můžeš
Karla otočit doleva. Je to stejný případ, jako by měl učinit
VLEVO-VBOK .
|
Domov
|
|
Jedním klepnutím myši můžeš přemístit políčko, které bude Karlovým domovem. |
Zeď
|
|
S pomocí tohoto nástroje můžeš me městě stavět zdi. Pokud je na políčku nějaká značka, Karel si ji nejprve uschová do svého batohu. Políčko, které je Karlovým domovem, nelze zastavět zdí. Kde by potom Karel bydlel! Stejně tak nelze postavit zeď na stejné políčko, kde stojí Karel. Tím bys ho postavil na zeď, ze které by neuměl slézt. |
Polož
|
|
Položí na políčko značku. |
Zvedni
|
Zvedne značku z políčka. | |
Vyčisti město
|
Vyčistí celé město od všech zdí a značek. Karel se postaví do levého dolního rohu, jak je vždy na začátku práce zvyklý. | |
Posbírej vše
|
Vyčistí celé město od všech značek. |
Všechny příkazy, které Karel umí vykonat, jsou uloženy v jeho slovníku. Jistě jsi si všiml, že v něm nejsou zobrazeny všechny. Ukázány jsou pouze ty, které může Karel provést okamžitě, takže můžeš ve městě pozorovat nějakou změnu. Jak budeš Karla učit novým příkazům, tak se bude i jeho slovník rozšiřovat. Klepnutím na tlačítko vedle příkazu řekneš Karlovi, že bys byl rád, aby příkaz vykonal. Tlačítko může změnit svůj vzhled; jak a co to znamená, Ti hned povím.
Spustit
|
Karel začne vykonávat příkaz uvedený vedle tlačítka. Až ho naučíš nové příkazy, může se během delšího provádění změnit na následující tlačítko. |
Zastavit
|
Při vykonávání delšího příkazu můžeš vykonávání zastavit. Karel se přeci může dostat do bezvýchodné smyčky a bude se například točit stále dokola. Karel je ale robot, tak mu to nevadí. Bude se stále točit a jediné východisko z této situace je stisknout tlačítko pro zastavení. A to můžeš udělat jedině Ty. |
Pod slovníkem je řada tlačítek a pod tlačítky je místo, kde lze měnit příkazy a zadávat nové. Je tam název měněného příkazu a velký obdélník, do kterého můžeš psát příkazy – proto mu dále budeme říkat příkazové pole. Do příkazového pole můžeš zapisovat nové příkazy ve stejné formě, jak byly ukázány v odstavci Zápis nových příkazů. Tvé příkazy sice nebudou plné barev, ale nezoufej, Karel jim i tak porozumí.
Řada tlačítek umístěná těsně pod slovníkem. |
Řada tlačítek umístěná nad polem příkazů. |
Nový
|
Připraví příkazové pole na příjem nového příkazu. Jméno příkazu je NOVÝ PŘÍKAZ . Pokud již Karel takový příkaz zná, je za název
příkazu přidána pořadová číslice 2, 3, 4 atd.
|
Ukaž
|
Nejprve vyber ve slovníku příkaz, který chceš zobrazit. Potom klepni na toto tlačítko a příkaz se Ti v příkazovém poli celý zobrazí. Nyní můžeš změnit jeho jméno, opravit chybný sled příkazů, přidat další příkazy, prostě měnit, co se Ti zlíbí. |
Ulož
|
Uloží příkaz z příkazového pole do Karlovy paměti. Tím se Karel příkaz naučí. Jestliže jsi nejprve zobrazil nějaký jiný příkaz a pak ho upravoval, je v Karlově paměti přepsán a je mu dán nový název. |
Ulož nově
|
Uloží příkaz z příkazového pole do Karlovy paměti. Poznáš, že je to dobrý nástroj v případě, že jsi předtím zobrazil nějaký jiný příkaz, upravil jsi ho, a nyní ho chceš uložit pod jiným jménem, ale starý příkaz, původně zobrazený, chceš zachovat. |
Smaž
|
Smaže vybraný příkaz z Karlovy paměti. Karel příkaz zapomene. |
Reset
|
Reset paměti. Vymaže všechny příkazy z Karlovy paměti. |
žluté barvy
.
KONEC
. Pokud na
konec svého příkazu zapomeneš zapsat nějaký KONEC
, Karel je může při ukládání s Tvým svolením
sám doplnit.
KROK
,
VLEVO-VBOK
,
POLOŽ
a
ZVEDNI
.
Po těžké práci a učení robota Karla si jistě budeš chtít uchovat výsledek své práce. I tato možnost je ve vývojovém prostředí zahrnuta. Ukládání je pro město a slovník oddělené, nahrávání (načítání) je společné.
Řada tlačítek pro ukládání pod městem. |
Řada tlačítek umístěná nad slovníkem. |
Uložit
|
Nabídne nové okno, ve kterém se zobrazí text, který si někam uschovej. Jedná se o jednu dlouhou řádku textu (můžeš ji vidět rozdělenou na několik řádek) začínající slovem Karel a končící slovem KONEC. Nedoporučuji Ti text ručně opisovat, je to zdlouhavé. Nejsnadnější způsob, jak zachovat svou práci, je v systému Windows tento (používá se tzv. schránka):
|
Exportovat do
verze 1.2 |
V novém okně se, stejně jako v případě stisku tlačítka „Uložit“, zobrazí jedna dlouhá řádka začínající slovem Karel a končící slovem KONEC. Postup uchování se vůbec nemění. Rozdíl oproti běžnému uložení je v tom, že se nyní ukládá do formátu vhodného pro starší webovou verzi Karla - verzi 1.2. Protože ale tehdy Karel zapomínal úplně všechny komentáře, nebudou raději žádné komentáře uloženy. |
Exportovat do
formátu K99 |
V novém okně se zobrazí text, který si můžeš uschovat. Postup je naprosto stejný, jako u tlačítka „Uložit“. Text je určen pro program Visual Karel 99, který ho umí přečíst. Jako příponu ukládaného souboru je vhodné použít K99, protože tu program sám používá. |
Načíst
|
Stejně jako u ukládání je postup obnovy znalostí Karla nebo stavby města nepříliš složitou záležitostí. Po stisknutí tlačítka vidíš, že po Tobě Karel žádá vložení „jediné dlouhé řádky“, kterou jsi předtím obdržel při ukládání. Pokud jsi použil výše uvedený postup, pak je způsob obnovy informací následující (opět používáme tzv. schránku):
|
Pod městem robota Karla je umístěn prvek pro změnu rychlosti pohybu Karla.
Pomalu
Rychle
Středně rychle
|
Nastavení rychlosti provádění příkazů. |
Nyní potřebuješ vědět, jak robot Karel vykonává příkazy, které jsi ho naučil.
Karel vezme jeden příkaz a vyhodnotí ho. Pokud narazil na příkaz, který po něm
nechce žádnou práci, pak vezme další příkaz a úplně stejně ho prozkoumá. Takto
pokračuje, dokud nenarazí na nějaký pracovní příkaz –
KROK
,
VLEVO-VBOK
,
POLOŽ
nebo
ZVEDNI
.
Protože by Karel chtěl okamžitě po provedení akce zkoumat další příkaz, máš možnost mu dát chvilku oddech. Ten řídíš nastavením velikosti prodlevy mezi vykonáváním příkazů na stupnici – malá prodleva napravo, velká prodleva vlevo. Tím se také určí Karlova rychlost – malá prodleva znamená velkou rychlost a velká prodleva zase malou.
Při některých příkazech se Karel mnohokrát rozhoduje a nenaráží na žadný pracovní příkaz. To může způsobit pomalejší odezvy Tvého internetového prohlížeče. Pro zamezení zablokování je rozhodování časově omezeno na 25 ms – po vypršení časového limitu je kontrola předána prohlížeči.