ドリトルについて(その2)
の続きです。
タートルオブジェクトには、「右回り」、「左回り」という命令があります。進行方向を回転させる命令です。
90 右回り
と指定することで、進行方向を右回り90度回転させることができます。
さて、「歩く」と「右回り」を使って一辺が100ドットの正方形を描いてみてください。
…
…
…
…。
できましたか? いくつか例を挙げて説明したいと思います。
例1)
かめた=タートル!作る。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。
実行画面は以下の通りです。

100歩いて、右に90度回るを4回繰り返せばよいので上記のようになります。正方形を描くだけなら最後の右回りは余計ですが、コピーしてペーストを3回するということでそのままにしています。
冗長な表現になっています。そこで、前回同じオブジェクトには連続して命令する記述できることを書きましたので、次のように記述できます。
例2)
かめた=タートル!作る。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。
一つの動作がワンセットになっていて見やすくなりました。もっと進めると
例3)
かめた=タートル!作る。
かめた!100 歩く 90 右回り 100 歩く 90 右回り 100 歩く 90 右回り 100 歩く 90 右回り。
とも書けますし、もっと言えば、この後かめたに二度と命令しないのであれば、かめたと名前を付けずに、最初の一行とも合体させることも可能です。
しかし、これはやりすぎ。見にくくなってしまいました。プログラミングは「可読性」といって、後からでも読みやすいコードを書く、ということも大切です。
さて、同じ動作が何回も連続するときに簡単に記述する方法があります。次のように記述します。
例4)
かめた=タートル!作る。
「かめた!100 歩く 90 右回り。」!4 繰り返す。
ずいぶん簡単になりました。
「 」で一連の動作をブロック化することができます。このブロックも「ブロックオブジェクト」というオブジェクトになります。ブロックオブジェクトに使える命令として、「実行」「繰り返す」等があります。条件判断の時に、ある条件ならひとかたまりの動作をさせたいときなどにも使います。
ここでは、繰り返しの対象である
かめた!100 歩く 90 右回り。
を「 」で括ってブロック化しています。そのブロックオブジェクトに対する命令なので「!」が続き、4回というパラメータが先に来て「繰り返す」命令を実行させています。「 」の中が複数行になってもちゃんと閉じられている中全体をブロック化してくれますので、少し長いものを繰り返したいときは行を分けるのもいいでしょう。C言語やJAVAのようにインデントを使って、
例5)
かめた=タートル!作る。
「
かめた!100 歩く。
かめた!90 右回り。
」!4 繰り返す。
と記述しても構いません。
さて、同じようにして
・一辺が100ドットの正三角形はどのように描けるでしょうか。
角度が問題になってきます。また、左回りにすれば頂点が上の正三角形を作れますね。同様に、
・正六角形を描いてください。
・正五角形を描いてください。
・☆形はどのように作れるでしょうか。
答えは次回までの宿題にしたいと思います。
ここで余談ですが、「単位」について触れておきます。
ドリトルでは数字の後に連続して何か文字が記述されていても無視されます。これの何が良いかというと、
かめた!100歩 歩く。
かめた!90度 右回り。
や
「かめた!100歩 歩く 90度 右回り。」!4回 繰り返す。
のような記述が可能になるのです。つまり「単位」を付けることができます。違う文字になっても動作は全く変わらないので本来の意味での単位ではありませんが、この方が見やすいということであれば付けることも可能だということです。
今日はこの辺にしましょう。