Kdo je Karel Co Karel umí Zápis nových příkazů Psaní komentářů
Vývojové prostředí Město Slovník Nahrávání a ukládání Rychlost pohybu

Kdo je Karel

Robot KAREL 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.

Co Karel umí

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 podmínka splněna. Pokud zjistí, že ano, provede příkazy 1, a pokud ne, provede příkazy 2.

Uvedení slov KONEC, JINAK následovaných příkazy 2 není povinné a může být vynecháno. Ale pozor! Mezera mezi KONEC,<mezera>JINAK musí být uvedena.

DOKUD podmínka
příkazy
KONEC

Karel zjistí, jestli je podmínka splněna a dokud bude platit, bude provádět příkazy.

OPAKUJ počet-KRÁT
příkazy
KONEC

Karel bude opakovat příkazy tolikrát, kolikrát má uvedeno v parametru počet.

Uvedení slova -KRÁT není povinné.

Novinka v zápisu cyklů DOKUD a OPAKUJ je možnost zápisu podmínky 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
podmínka 2

Karel zjistí, jestli je podmínka 1 splněna. Pokud není, přeskočí se celý cyklus. Pokud je splněna, Karel provede příkazy a na konci vyhodnotí podmínku 2. Pokud je podmínka splněna, cyklus končí. Pokud není splněna, Karel se vrací na první řádku cyklu a celý postup opakuje.

Shrneme-li to, cyklus se opouští na začátku tehdy, když NENÍ splněna podmínka 1. Na konci se opouští tehdy, když JE splněna podmínka 2.

OPAKUJ počet-KRÁT
příkazy
podmínka

Karel opakuje příkazy stejně, jako je uvedeno výše u cyklu OPAKUJ. Navíc Karel po každém provedení příkazů vyhodnotí podmínku a, je-li splněna, ukončí opakování.

Opakování příkazů Karel provede nejvíce počet-krát, a pokud je počet větší než 0, příkazy se provedou alespoň jednou.

OPAKUJ
příkazy
podmínka

Tento zápis je podobný cyklu DOKUD. Karel nejprve jednou vykoná příkazy a opakuje je po dobu, kdy není splněna podmínka.

Cyklus končí, když JE podmínka splněna. Příkazy se provedou vždy alespoň jednou.

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ď
ZEĎ
Jestli JE / NENÍ před Karlem postavena zeď, pak je podmínka splněna.
značka
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
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
VÝCHOD
Jestli JE / NENÍ Karel natočen na východ, je podmínka splněna.
sever
SEVER
Jestli JE / NENÍ Karel natočen na sever, je podmínka splněna.
západ
ZÁPAD
Jestli JE / NENÍ Karel natočen na západ, je podmínka splněna.
jih
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 příkazy tak rychle, jak jen dovede. Pokusí se neudělat žádnou viditelnou pauzu a profrčí jak rychlík.

RYCHLE
příkazy
KONEC

Jiný zápis stejného úkolu. Liší se pouze ve slově KONEC na konci.

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 začátek

Zápis nových příkazů

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
OPAKUJ 2-KRÁT
VLEVO-VBOK
KONEC
KONEC
ČELEM-VZAD
VLEVO-VBOK
VLEVO-VBOK

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

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
DOKUD NENÍ ZEĎ
KROK
KONEC
KONEC

s rekurzí

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
Na začátek

Psaní komentářů

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“.

příkaz ; komentář
; komentář
Žá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.
Na začátek

Vývojové prostředí

Vývojové prostředí robota Karla se skládá z těchto čtyř částí:

Na začátek

Město

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.

KarelDomovZeďPolož značkuZvedni značku<mezera>Vyčisti celé městoPosbírej všechny značky

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.


Karel východ

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 domov

Jedním klepnutím myši můžeš přemístit políčko, které bude Karlovým domovem.


Zeď 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, 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ž značku jedna značka

Položí na políčko značku.


Zvedni značku

Zvedne značku z políčka.


Vyčisti celé 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šechny značky

Vyčistí celé město od všech značek.


Na začátek

Slovník

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.

Začni provádět

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.

Ukonči příkaz

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í.

 Příkaz   

Ř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 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.

  

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.

Důležité poznámky ke slovníku a k příkazům

Na začátek

Nahrávání a ukládání

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é.

 Slovník   Město   Slovník 
 Město 

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):

  • zobrazený text označ myší, potom klepni pravým tlačítkem myši a ze zobrazené nabídky vyber volbu „Kopírovat“ (tím se označený text zkopíruje do schránky Windows);
  • spusť nějaký program, který neprovádí další formátování textu (proto ne Word). Je to bezpečnější. Vhodný je například Poznámkový blok (Notepad);
  • v oblasti psaní textu klepni pravým tlačítkem myši a ze zobrazené nabídky zvol „Vložit“ (tím se vloží obsah schránky Windows);
  • nyní můžeš uložit soubor pod nějakým vhodným jménem, abys nezapoměl, co je v něm uloženo důležitého.
  

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):

  • spusť program, ve kterém jsi předtím text uložil. Jednalo se o program Poznámkový blok (Notepad) nebo jemu podobný. Otevři soubor, ve kterém máš text uložen;
  • označ myší všechen text od znaků Karel1.0 až po poslední slovo KONEC, stiskni pravé tlačítko myši a z nabídky vyber „Kopírovat“ (tím se označený text zkopíruje do schránky Windows);
  • vrať se zpátky do okna, ve kterém Tě Karel žádá o vložení textové řádky. Pravým tlačítkem myši klepni na řádku, do které lze psát text, a z nabídky zvol „Vložit“ (tím se vloží obsah schránky Windows).
  • potvrď vložení textu tlačítkem Ok. Budeš vyzván o potvrzení svého záměru. Uvidíš, že Karel ví, že chceš nahrát obsah slovníku nebo města.
Na začátek

Rychlost pohybu

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.

Na začátek

CorteNico (Oldřich Jedlička), 21. 4. 2003