1970年代に、スタンフォード大学のRich Pattisという大学院生は、ほとんどのプログラミング言語を特徴付ける複雑さから解放された単純な環境で何らかの方法で基本的な考え方を学ぶことができれば、プログラミングの基礎を教える方が簡単だと判断しました。 Richは、学生が簡単な問題を解決するためにロボットを教えるための入門用プログラミング環境を設計しました。そのロボットはチェコの劇作家にちなんで、カレルと名付けられました。 カレル・チャペック 1923年にRUR( ロッサムのユニバーサルロボット )ロボットという言葉を英語にしました。
Karel the Robotは大成功でした。 Karelは世界中のコンピュータサイエンス入門コースで使用され、何百万人もの学生に教えられてきました。スタンフォード大学の何代にもわたる学生は、プログラミングがどのようにKarelと連携するかを学びました、そしてそれはスタンフォードで使われるコーディングへの優しい入門書です。
カレルはとてもシンプルな世界に住むとてもシンプルなロボットです。 Karelに一連のコマンドを与えることで、その世界の中で特定のタスクを実行するように指示することができます。これらのコマンドを指定するプロセスが呼び出されます プログラミング 。当初、Karelはごく少数の定義済みコマンドしか理解していませんが、プログラミングプロセスの重要な部分は、その機能を拡張する新しいコマンドをKarelに教えることです。
カレルプログラムは、構造が同じで、基本要素も同じです。 Java 、メジャー プログラミング言語 。重要な違いは、Karelのプログラミング言語は非常に小さいため、詳細を習得するのは簡単だということです。そうであっても、あなたは問題を解決することが挑戦的である可能性があることを発見するでしょう。
カレルから始めることによって、あなたは最初から問題を解決することに集中することができます。問題解決はプログラミングの本質です。そしてKarelは想像力と創造性を奨励するので、あなたはその過程でかなり多くの楽しみを持つことができます。
カレルの世界は、行で定義されているrun寧水平方向(東西)と列run寧縦(南北)。行と列の交点はコーナーと呼ばれます。カレルは隅にしか配置できず、4つの標準的なコンパス方向(北、南、東、西)のいずれかを向いている必要があります。 Karelの世界の例を以下に示します。ここでカレルは東を向いて、1行1列の角に位置しています。
この例では、カレルの世界の他のいくつかの要素を見ることができます。カレルの前にある物体はbeeperです。リッチPattisの著書の中で述べたように、 beeper s「は静かなビープ音を発するプラスチックコーン」です。カレルしか検出することができますbeeper 、それは同じコーナーにある場合。図の実線は壁です。壁はカレルの世界の中で障壁として機能します。カレルは壁を通り抜けることはできず、代わりにそれらの周りを回らなければなりません。 Karelの世界は常に端に沿って壁に囲まれていますが、Karelが解決する必要がある特定の問題に応じて、世界は異なる次元を持つことがあります。
Karelは工場から出荷されると、ごく少数のコマンドに応答します。
| コマンド | 説明 |
|---|---|
move(); | move 1ブロック進むようにカレルにmoveする。 Karelはに応答できません move() 道を塞いでいる壁があるならば、命令しなさい。 |
turnLeft(); | カレルに左(反時計回り)に90度回転させます。 |
pickBeeper(); | Karelに1つのbeeperをコーナーから拾い上げるようにbeeper 、 beeperをその無限のbeeper秒を保持できるbeeperバッグにbeeperます。 Karelはに応答できません pickBeeper() 現在のコーナーにbeeperがない限り、コマンド。 |
putBeeper(); | beeperバッグからbeeperて現在のコーナーに置くようにカレルにbeeperします。 Karelはに応答できません putBeeper() コマンドがある場合を除きbeeper sがその中beeperバッグ。 |
コマンドを試してみましょう。下のボタンを使って、「世界」を「目標」に合わせます。
これらの各コマンドに表示される空の括弧は、KarelとJavaによって共有される共通の構文の一部であり、コマンドの呼び出しを指定するために使用されます。結局、あなたが書くプログラムは括弧の間のスペースに追加情報を含めるでしょう、しかしそのような情報はカレルの原始世界の一部ではありません。したがって、これらの括弧は標準のKarelプログラムでは空になりますが、それでもそれらを含めることを忘れないでください。
Karelが壁の中を移動したり、存在しないbeeper手に入れたりするなど、違法なことをしようとすると、エラー状態が発生します。
Karelのコマンドは単独では実行されません。代わりに、それらをKarelプログラムに組み込む必要があります。第2章では、いくつかの簡単なKarelプログラムを見ることができます。