V 70-tých letech, Stanford postgraduální student jmenoval Rich Pattis rozhodl, že to by bylo snazší učit základy programování jestliže studenti mohli nějak se učit základní myšlenky v jednoduchém prostředí bez složitostí, které charakterizují většinu programovacích jazyků. Rich navrhl úvodní programovací prostředí, ve kterém studenti učí robota řešit jednoduché problémy. Ten robot se po českém dramatikovi jmenoval Karel Karel Čapek , jehož 1923 hraje RUR ( Rossumovy univerzální roboty ) dal slovo robot do anglického jazyka.
Karel Robot byl docela úspěšný. Karel byl používán v úvodních kurzech počítačové vědy po celém světě a byl vyučován milionům studentů. Mnoho generací Stanfordových studentů se naučilo, jak programování pracuje s Karlem, a je to stále jemné představení kódování používané ve Stanfordu.
Karel je velmi jednoduchý robot žijící ve velmi jednoduchém světě. Tím, že Karlu dáváte řadu příkazů, můžete jej nasměrovat k plnění určitých úkolů ve svém světě. Zavolá se proces určování těchto příkazů programování . Karel zpočátku chápe jen velmi malý počet předdefinovaných příkazů, ale důležitou součástí procesu programování je naučit Karla nové příkazy, které rozšiřují jeho možnosti.
Programy Karla mají mnohem stejnou strukturu a zahrnují stejné základní prvky jako Jáva , hlavní programovací jazyk . Kritický rozdíl je v tom, že Karelův programovací jazyk je extrémně malý a detaily se tak snadno zvládnou. I tak však zjistíte, že řešení problému může být náročné.
Začněte s Karlem a můžete se soustředit na řešení problémů od samého počátku. Řešení problémů je podstatou programování. A protože Karel povzbuzuje představivost a kreativitu, můžete si po cestě užít spoustu legrace.
provádění svět je definován řadami provádění horizontálně (východ-západ) a sloupci provádění vertikálně (sever-jih). Průsečík řádku a sloupce se nazývá roh. Karel může být umístěn pouze v rozích a musí směřovat k jednomu ze čtyř standardních směrů kompasu (sever, jih, východ, západ). Vzorový svět Karla je uveden níže. Zde se Karel nachází v rohu 1. řady a 1. sloupu, orientován na východ.
V tomto příkladu je vidět několik dalších složek Karlova světa. Objekt před Karlem je kuzel . Jak je popsáno v knize Rich Pattis, kuzel s jsou „plastové kužely, které vydávají tichý pípavý zvuk.“ Karel dokáže detekovat pouze kuzel pokud je ve stejném rohu. Plné čáry v diagramu jsou stěny. Stěny slouží jako bariéry v Karlově světě. Karel nemůže projít zdí a musí je obejít. Karelův svět je vždy ohraničen zdmi podél okrajů, ale svět může mít různé rozměry v závislosti na konkrétním problému, který Karel potřebuje vyřešit.
Když je Karel expedován z továrny, reaguje na velmi malou sadu příkazů:
| Příkaz | Popis |
|---|---|
move(); | move Karla na move vpřed o jeden blok. Karel nemůže odpovědět a move() příkaz, pokud je zeď blokována. |
turnLeft(); | Požádá Karla, aby otočil o 90 stupňů doleva (proti směru hodinových ručiček). |
pickBeeper(); | Požádá Karla, aby vyzvedl jeden kuzel a kuzel do své tašky kuzel , která může pojmout nekonečné množství kuzel s. Karel nemůže odpovědět a pickBeeper() pokud není v aktuálním rohu kuzel . |
putBeeper(); | Požádá Karla, aby si vzal kuzel z pytle kuzel a položil ho na aktuální roh. Karel nemůže odpovědět a putBeeper() povel, pokud ve své tašce kuzel není kuzel s. |
Vyzkoušíme příkazy. Pomocí tlačítek níže přejděte na „svět“ tak, aby odpovídal cíli:
Prázdný pár závorek, který se objeví v každém z těchto příkazů, je součástí společné syntaxe sdílené Karlem a Javou a slouží k určení vyvolání příkazu. Nakonec programy, které píšete, budou obsahovat další informace v prostoru mezi závorkami, ale tyto informace nejsou součástí Karlova primitivního světa. Tyto závorky budou tedy ve standardních Karelových programech prázdné, ale musíte je pamatovat na jejich zahrnutí.
Pokud se Karel pokouší udělat něco nezákonného, jako je pohyb po zdi nebo vyzvednutí neexistujícího kuzel , dojde k chybovému stavu.
Karelovy příkazy nejsou prováděny samy. Místo toho je musíte začlenit do programu Karel. Budete mít možnost vidět několik jednoduchých Karlových programů v kapitole 2!