デスクロボ第3号のテーマは,表紙にも書いてあるようにプログラムの制御構造の代表であるくり返し処理をプログラミングすることだ。

 2月10日。「ほのちゃん,デスクロボ第3号はプログラム,プログラムしとるけど,やってみる?」と,富山弁で小学3年生の娘ほのに聞いてみた。ちなみに,日経ソフトウエア2008年4月号に「8歳のほのちゃん」と紹介されていたが,正しくは9歳である。紹介記事を読んだ本人は「ほのは2年生じゃない!」とプンプンしていた。(<--本当に済みません!(編集部))

 「うーん,うーん」としばらく悩んで,「ちょっとぞぉーとします。でも,やる」と答えたので,この日記が書けるわけだ。

 まず,テキストの図を説明してみる。人間が移動するときは,「右足を動かす,左足を動かす」をくり返すから目的地にたどりつけるのだという図解だ。ほのは,そんなもんかねーという顔をしている。あえて言わせてもらうと,このテキストの説明は少々かたい。

 「ごはんをいっぺんで,ガバーと全部食べられないよね。何度もはしを口に運んで食べるよね」と身振り手振りで説明する。ほのはガハハと笑う。

 くり返しをコントロールするプログラミング・ブロックを説明して,自力でテキストを進めるよう促す。ほのはきれいなおつくわいをして,パソコンとテキストに向かう(富山弁解説 おつくわい:正座のこと。「おつくばい」とも言う)。

 永久ループ(無限ループ),時間ループ,カウントループを音やサウンド・ファイルを鳴らすことで確認していく。

 次にタッチセンサーループブロックを使って,タッチセンサーが押されるまでロボットをまっすぐ走らせるプログラムを作る。

 ポートを指定して,タッチセンサーが押されたらループを抜けるようにプロパティを設定する。

ロボットはタンスにぶつかり,きちんと止まった。実はテキストの課題はロボットをジグザグに走らせるだったのだが,そうすると不都合なことが出てきたのだ。

 最初にデスクロボ第1号の通りにロボットを組み立ててみた。ところが,ギヤがきちんとかんでいない状態で片側のタイヤだけを回していると,モーターにつながった小さなギヤがへたってきてしまったのだ。両側のタイヤを回す直進の時なら問題ないのだが,片側が止まっているときは抵抗が強すぎるのか,駆動させようとしている方のギヤがどうしてもずれてくるのだ。変な音がしたときは,すぐにギヤをきちんとかませた方がよい。

 次に,黒い線を見つけるまで前進と停止をくり返すプログラムを作成する。ほのはポートや暗い,明るいを指示する不等号の向きを間違えながらも何とか目的を達成した。注意が必要な点は,モーターを動かす回転数や秒数を長めに指定すると,黒い線を見つけてもその間は動きを止めないことだ。結果,間延びした制御になってしまう。
 
 さて,筆者はC言語やPHPの解説記事などをこれまでも書いてきたが,くり返しや条件分岐といった制御構造の解説は難しい。普通に書くと教科書ぽくなってしまうし,制御構造を使ったおもしろいサンプル・プログラムというのはなかなか頭に浮かばない。制御構造を扱った回はどうも地味になってしまう。そんなわけで,今回はこんな風に言い訳で終わる。