em tečka pé tečka

Pokud máte v poště informace privátního charakteru, smažte je!
(skok na navigaci)

část 1 - seznamte se, Karel 12.02.2007, 1:34:00 (zoftware)

Karel je robot. Stojí se v jihozápadním (tedy levém dolním) rohu "města", představovaného prostranstvím 10x10 metrů obehnaným cihlovou zdí, dívá se směrem na východ a nedělá vůbec nic.

Ale nebojte se, on začne.

Vypadá to asi takhle:

výchozí pozice

a abyste správně viděli, jak má co vypadat, doporučuji stisknout klávesu F5. změnil jsem totiž styly ... no ... prostě si pro jistotu zmáčkněte F5 :e)

Soutěžní úkol zní: Přinuťte Karla něco udělat!

Jenže jak na to?

Nebude to tak těžké. Karel totiž umí rozeznávat příkazy. Pravda, zatím jenom čtyři.

Příkazem Krok přinutíme Karla, aby se jedním dlouhým krokem přesunul o čtverec dopředu.

krok

Tady pozor. Všimněte si slov "příkaz" a "přinutíme". Karel, stejně jako všechny počítače, je hloupý a velmi poslušný. Když mu přikážu Krok, tak udělá krok, i kdyby trakaře padaly. Kdyby stál na kraji útesu a přikázal bych mu Krok, Karel poslušně udělá krok a poslušně spadne.

Proč to tak rozebírám? Protože to město, ve kterém se náš Karel nachází, je obehnané tvrdou cihlovou zdí. Když bude Karel stát čelem ke zdi, a zrovna mu přikážu Krok, tak se sebere a do té zdi nakráčí. Pak si nabije čumák, ohlásí fatální chybu a skončí. Načež je potřeba ho resetovat.

Když Karlovi přikážeme Vlevo, udělá vlevo vbok, tedy pootočí se o 90 stupňů doleva.

vlevo

Na příkaz Poloz vezme Karel jednu značku ze své zásoby a položí ji pod sebe na zem.

Značka je takový barevný plíšek, který je ve městě dobře vidět. Je možné jich naskládat spoustu na sebe, protože jsou velmi tenké. K čemu je to dobré, uvidíme později.

...a na příkaz Seber se Karel pokusí zvednout ze země pod sebou jednu značku. Když pod ním nějaké značky jsou, sebere tu nahoře a schová si ji. Když tam žádné nejsou, ohlásí chybu.

Tahle chyba ale na rozdíl od blízkého setkání se zdí není fatální. To znamená, že po ohlášení chyby pokračuje Karel v tom, co dělal předtím, žádné resetování se nekoná.

(Posledních dvou si zatím nemusíte tolik všímat, proto k nim ani nejsou obrázky.)

Kromě toho lze pro Karla vyrábět programy. Což je vlastnost pro tento seriál velmi klíčová.

Co to vlastně je ten program? Je to posloupnost příkazů. Tedy řada příkazů za sebou. Nic víc a nic míň. Ale i tak to může mít zajímavé důsledky.

Program pro Karla se skládá z hlavičky se jménem, seznamu příkazů (co řádek, to příkaz) a závěrečné tečky. Jednoduchý program může vypadat třeba takhle:

program TriKroky:
Krok
Krok
Krok
.

Tím jsme vlastně vytvořili úplně nový příkaz jménem TriKroky, který předtím v Karlově jazyce neexistoval. Když tenhle program nahrajeme do Karla, a pak mu přikážeme TriKroky, udělá tři kroky.

V tom se skrývá fígl. Teď můžu napsat další program, ve kterém tenhle nový příkaz použiji.

program SestKroku:
TriKroky
TriKroky
.

Je vhodné zdůraznit, že Karel vykoná příkazy programu přesně v tom pořadí, v jakém mu je napíšete. Podle tohoto programu napřed udělá krok, a pak se otočí vlevo...

program KrokVlevo:
Krok
Vlevo
.

...zatímco podle tohoto programu se nejdřív otočí vlevo, a teprve pak udělá krok:

program VlevoKrok:
Vlevo
Krok
.

Všimněte si tedy: oba programy obsahují úplně stejné příkazy. Zatímco ale prvním programem se Karel z výchozí pozice dostane o čtverec na východ, s tím druhým skončí o čtverec na sever. Na pořadí prostě záleží.

krok/vlevo vlevo/krok

  ---

A to je snad pro dnešek všechno. Teď pár jednoduchých úloh na doma:

1. Napište program Vpravo, který (jaké překvapení) nasměruje Karla o 90 stupňů doprava.

(tahle úloha by měla být směšně triviální. jestli ji nedokážete vyřešit během pěti minut, rozhořčeně mi pište, že jsem to opravdu špatně vysvětlil)

2. Napište program, podle kterého Karel oběhne kolečko (tedy čtvereček) okolo města. To znamená, že poběží stále podél zdi a skončí zase na začátku.

Snažte se napsat program co nejkratší. Podle mých výpočtů to jde na 17 (slovy sedmnáct) řádků včetně hlaviček a teček.

Odpovědi nepište do komentářů, a pokud chcete nějaké vyhodnocení, pošlete mi je do mailu matejcik(zavináč)bloguje.cz

  ---

Pár drobností ke správnému pravopisu Karlova jazyka:

- Slovo program se píše s malým "p", ale všechny příkazy (ty původní čtyři, i ty vaše nové) musí začínat velkým písmenkem.

- Příkazy uvnitř programu by měly být odsazené, tedy neměly by začínat na začátku řádku. Je zvykem před ně napsat několik mezer (vždy stejný počet, většinou se používají dvě nebo čtyři), nebo ještě lépe tabulátor (klávesa Tab, nad Caps Lockem). Tabulátor používám já, ale nejsem si jist, jak moc dobře ho schroupe mail.

- Nezapomínejte na to, že program končí neodsazenou tečkou :e)

- Je slušnost pojmenovávat programy smysluplně. Kolecko je dobrý název, BehejDoKolecka je pořád dobrý, i když možná zbytečně dlouhý. Bdk, P1 nebo Tralala jsou špatné názvy. Myslete na to, že vytváříte nový příkaz – z názvu by mělo být možné uhodnout, co bude ten příkaz dělat.

Komentáře

[1] pilny_student (12.02.2007, 12:29:27): mezery
hm, tak ty mezery nevysly
[2] matejcik (12.02.2007, 13:06:03):
studente studente. co jsem říkal o řešení v komentářích? že se tam nemá psát.
[3] matejcik (14.02.2007, 17:53:02):
jenom test
[4] matejcik (14.02.2007, 17:53:26):
jenom test :e)
[5] (14.02.2007, 19:52:38):
jeeee, karel :) toho znam z gymplu. ten je hrozitansky legracni!








www.140.cz http://last.fm/ SomaFM commercial free internet radio