Milý čtenáři. Tento robot se jmenuje Karel. Jméno Karel mu dal učitel
programování autor prvního programu a knížky Karel
The Robot Richard E. Pattis ze Stanfordské
univerzity. Své jméno získal na počest spisovatele Karla Čapka, autora
divadelní hry RUR Rossums Universal Robots.
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 tyto webové stránky se dostal poprvé až v roce 2002.
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Ž
|
Karel prozkoumá, jestli je
Uvedení slov |
DOKUD
|
Karel zjistí, jestli je |
OPAKUJ
|
Karel bude opakovat
Uvedení slova |
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í / 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.
|
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
|
ČELEM-VZAD
|
VPRAVO-VBOK
|
VPRAVO-VBOK
|
VPRAVO-VBOK
|
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
KE ZDI
|
s rekurzí
KE ZDI
|
KE ZDI
|
KE ZDI
|
Psaní komentářů v příkazech je dovoleno, avšak nejsou uchovávány. To znamená, že veškeré vložené komentáře jsou ztraceny. Možná, že v některé budoucí verzi budou komentáře podporovány. Možnost komentářů je zahrnuta z důvodu snadnějšího přidávání samostatných příkazů ze slovníků vytvořených programem Visual Karel 99. První řádka příkazu, obsahující jeho jméno, je totiž následována komentářem Nový příkaz.
|
Žádný komentář není uchováván všechny jsou
ztraceny. Veškerý text za středníkem ( ; )
i se středníkem samým je zapomenut.
|
Vývojové prostředí robota Karla se skládá z těchto čtyř částí:
Město robota Karla je vlastně šachovnice 10 krát 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 řádek 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. |
![]() |
![]() |
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
|
![]() |
![]() |
Jedním klepnutím myši můžeš přemístit políčko, které bude Karlovým domovem. |
![]() |
![]() |
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, nemůžete 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ží na políčko značku. |
![]() |
Zvedne značku z políčka. |
|
![]() |
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ý. |
|
![]() |
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.
![]() |
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. |
![]() |
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 jsou dvě řady tlačítek. Přímo ke slovníku patří pouze první. 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 pro použití se slovníkem. |
|
Připraví příkazové pole na příjem nového příkazu. Jméno
příkazu je |
|||
|
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ží 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ží 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že vybraný příkaz z Karlovy paměti. Karel příkaz zapomene. |
žluté
barvy
.
KONEC
.
;
).
Jestliže se na řádce kdekoli vyskytne středník, je následující
text i se středníkem zapomenut.
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é.
|
Tlačítka pro ukládání a načítání. |
|
Nabídne nové okno, ve kterém se zobrazí text, který si někam uschovej. Jedná se o jednu dlouhou řádku textu (vidíš ji ale rozdělenou na několik řádek) začínající textem Karel1.0 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):
|
|||
|
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á. |
|||
|
Stejně jako u ukládání je postup obnovy znalostí Karla nebo stavby města nepříliš obtížnou 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 jsou umístěny prvky pro změnu rychlosti pohybu Karla, případně rychlost odezvy internetového prohlížeče při vykonává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
Prodlevy mezi vykonáváním příkazů. 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.
I zde máš možnost ovlivnění volby u Odezvy
prohlížeče. V následující tabulce je ukázáno, kolik příkazů může
Karel vyhodnotit, než předá výpočetní čas prohlížeči.
rychlá | 2 příkazy | |
střední | 5 příkazů | |
normální | 7 příkazů | |
pomalá | 10 příkazů | |
slabá | 15 příkazů |
Na rychlejších počítačích nemá tato volba pražádný vliv. Na pomalejších usnadní Tvoji práci s Karlem.