Programování pro hračičky/Opičky/Lekce 3

Z Wikiverzity
Jak používat klasifikační nálepkuTato stránka je součástí kurzu:
středoškolská
Příslušnost: skupinová

Složené příkazy[editovat]

Jednoduchými příkazy, jaké jsme si ukázali v minulé lekci, můžeme sice opičku přimět k pohybu po herním světě i k zacházení s ním, ale s výrazným omezením, že příkazy musíme zadávat jednotlivě a že pro vyslovení příkazu musíme být přítomni ve stejné místnosti jako opička. Opička nás sice poslouchá, ale samotnými jednoduchými příkazy není programovatelná.

Programovat můžeme opičku pomocí zvláštního příkazu pozor. Ten dokáže spojit vícero příkazů, jež má opička postupně provést, do jednoho nového příkazu. Když následně opičce zadáme tento nový složený příkaz, bude postupně provádět jeho jednotlivé kroky už nezávisle na nás. Příkaz pozor musí být následován jménem nového příkazu (toto jméno si zvolíme my jakožto programátoři) a slovem znamená, po němž následují příkazy, které má opička postupně provést, odděleny čárkou,[1] například:

'ájo pozor přines znamená západ, vem sušenku, východ, polož sušenku
'ájo pozor kolečko znamená sever, západ, jih, východ, tvař se vítězoslavně

Od chvíle, kdy jsme takto pomocí pozor naprogramovali nový příkaz, můžeme jej v řízení opičky používat stejně jako jakýkoli jiný, tedy:

'ájo přines
'ájo kolečko

Nově naprogramovaný příkaz můžeme nadále používat i při programování dalších příkazů:

'ájo pozor dvojkolečko znamená kolečko, kolečko
'ájo pozor vvled znamená otevři ledničku, vezmi všechno z ledničky, zavři ledničku
'ájo pozor semstim znamená sever, vvled, jih, polož všechno

Význam naprogramovaných příkazů můžememe měnit tím, že je pod stejným jménem naprogramujeme znovu s jiným obsahem:

'ájo pozor kolečko znamená tvař se přeprogramovaně, sever, východ, jih, západ

Poté, co je příkaz kolečko takto změněn, projeví se změna i ve všech dalších příkazech, v nichž byl příkaz kolečko použit. Necháme-li tedy opičku následně provést třeba výše definovaný příkaz dvojkolečko, bude se opička při obou dílčích kolečkách tvářit přeprogramovaně a bude obíhat ve směru hodinových ručiček.

Naprogramovaný příkaz můžeme rovněž opět úplně zrušit. Dělá se to příkazem: zapomeň:

'ájo zapomeň kolečko

Když je příkaz zrušen, tak mu opička nerozumí ani přímo, ani v rámci složených příkazů. Je-li tedy zrušen příkaz kolečko, pak nejenže nemůžeme opičce přímo přikazovat kolečko, nýbrž také přestane fungovat příkaz dvojkolečko, v němž se příkaz kolečko používal.

Příkazy, které takto nově programujeme, můžeme pojmenovávat jakýmkoli slovem, resp. shlukem písmen. Je však vhodné volit pro ně taková pojmenování, abychom si podle nich dobře pamatovali jejich význam, a také dávat pozor, abychom si definicí nového příkazu nezměnili fungování jiných příkazů, tedy abychom omylem nepředefinovali příkaz někde jinde používaný. Obzvlášť záludné to může být s příkazy standardními — kdybychom například předefinovali příkazy jez a sněz, opička by se už nemohla najíst. Naštěstí v takovém případě stačí nechat opičku nově naprogramovaný příkaz zapomenout, a začne opět fungovat příkaz standardní, protože ten se z paměti opičky vymazat nedá.

Herní využití složených příkazů[editovat]

Složené příkazy nabízejí hráči už mnohem větší škálu využití opičky jako spolupracovníka ve hře. Jedna z možností jsou snadnější přesuny opičky mezi místy, na kterých často něco konáme:

'ájo pozor smetjoz znamená jihozápad, severozápad, jihozápad, jih, východ
'ájo pozor jozsmet znamená západ, sever, severovýchod, jihovýchod, severovýchod

Opět o něco snazší je se složenými příkazy i péče o opičku. Můžeme mít například příkaz, který ji po návratu do hry na obvyklé místo nakrmí a napojí:

'ájo pozor nakrm znamená západ, vem sušenku, jez sušenku, vem sušenku, jez sušenku, východ
'ájo pozor napoj znamená sever, sever, pij vodu, pij vodu, pij vodu, jih, jih
'ájo pozor krmpoj znamená nakrm, napoj

Mnoho hráčů využívá opičku jako poslíčka, který dokáže přinést potřebné předměty z nedaleké místnosti:

'ájo pozor semsuš znamená západ, vem všechny sušenky ze stolu, východ, dej všechny sušenky šnekovi
'ájo pozor svíčku znamená sever, severozápad, vem svíčku, jihovýchod, jih, polož svíčku

Podobně je možné po opičce posílat vzkazy — opička sice neumí mluvit, ale má k dispozici všechny citové příkazy, a zejména příkazem tvař se jde sdělit téměř všechno:

'ájo pozor help znamená jih, tvař se jako opička volající všechny na pomoc na sever

Kdykoli opička vykonává nějaký složený příkaz, oznámí svému majiteli jeho dokončení. Když je majitel ve stejné místnosti, pak se to dozví z toho, jak se opička svědomitě rozhlíží, když je majitel v jiné místosti, tak na něj přide tušení, že opička dokonala všechny uložené příkazy. Stejně se majitel dozví o případných chybách, na něž opička narazila při postupném vykonávání příkazů.

Chyby, které nám opička takto ohlásí, mohou být způsobeny naším vlastním programátorským pochybením (například že jsme si neuvědomili, že opička musí dveře nejprve otevřít, a pak jimi teprve může projít), ale také nečekanými překážkami na cestě (například že cestou opičce nějaký člen zlodějského cechu ukradl lahev, do níž měla nabrat vodu). Někdy se takovou chybovou hláškou dozvíme, že opička určitě nebude moci splnit svůj úkol, ale přitom jí čeká ještě docela dlouhá část programu, který by měla vykonat. Pak může být smysluplné opičce říci (pokud jsme v její blízkosti), anebo zahřímat (pokud je někde dál od nás) příkaz konec, a opička vykonávání programu okamžitě ukončí:

'ájo konec
hřímej ájo konec

Udržení pořádku v programátorských výtvorech[editovat]

Po vytvoření několika prvních složených příkazů si pravděpodobně budeme ještě velmi dobře pamatovat, co přesně který dělá. S odstupem času, ale také s přibývajícím množstvím příkazů, které jsme opičce naprogramovali, začneme ztrácet přehled, jak se který jmenuje a co dělá.

Pokud jsme svědomitě udělali všechno, co bylo popsáno a doporučeno v první lekci, pak se nemusíme začít děsit, protože naše opička má nasazený obojek. Prohlédněme si ho — jsou na něm napsány všechny příkazy, které se už opička naučila, a my si je můžeme přečíst všechny najednou i každý jednotlivě. Pokud jsme obojek opičce zatím nenasadili, udělejme to teď, a uvidíme, že se na něm všechny dosud naprogramované příkazy objeví. Pokud jsme obojek z nedbalosti nechali někde ležet, nemůžeme to sice vyzkoušet hned, ale také si nemusíme zoufat — jakožto účastníkům kurzu nám bude nový obojek vygenerován při příštím přihlášení do hry.

Samotný obojek nám ovšem ještě nezaručí pořádek v námi naprogramovaných příkazech. Ten si musíme udržovat sami — především tím, že své příkazy budeme smysluplně pojmenovávat a že budeme obratem mazat příkazy nepovedené, zastaralé, použité jen na vyzkoušení té či oné programátorské konstrukce.

Mazání nepotřebných příkazů má ještě další výhodu: uvolňujeme tím paměť opičky pro příkazy potřebné. Opička je schopna si zapamatovat jen příkazy omezené délky, a těch zase jen omezené množství. Nicméně její schopnosti v tomto ohledu narůstají se zvyšující se důvěrou vůči majiteli a zvyšující se zkušeností majitele. A důvěra opičky se zvyšuje nejen tím, že jí projevujeme city (jak jsme se dozvěděli v první lekci), ale i tím, že jí ukládáme příkazy, které se jí podaří zdárně vykonat. Takže čím více programujeme, tím lépe to jde nám i opičce.

Úkoly[editovat]

  • Naprogramujte pro svou opičku procházku po okolí, tedy složený příkaz, jímž opička vyjde z určitého místa a po projití několika dalšími místnostmi se do tohoto výchozího místa vrátí z jiného směru.
  • Naprogramujte složený příkaz, jímž Vám opička z místnosti vzdálené aspoň dva kroky přinese určitý předmět.
  • Naprogramujte složený příkaz, jímž opička pantomimicky předvede určitou krátkou příhodu.
  • Přečtěte si na obojku opičky všechny příkazy, které jste naprogramovali.

Pracovní odkazy[editovat]

Poznámky[editovat]

  1. Na mezery kolem čárek se nehledí, tedy sever,západ bude fungovat úplně stejně jako sever, západ nebo sever , západ.