日経ソフトウエア本誌の方で新連載『C言語で始めるプログラミングの基礎』を開始しました。これからプログラミングを勉強しようという人やコンピュータの仕組みをもうちょっと深く知りたいという方を対象に連載を書いています。というのは表向きの話です。本当のことを言うと,今回の連載は明確にターゲットというか対象とする読者を絞り込んでいます。その一人は,中学3年生の息子こうしろうです。実は原稿の段階で「読んでくれ」と渡し,わかりにくいところがないか確認しています。

 そして,もう一人は北海道の苫小牧に住むS君です。S君はこうしろうと同じ中学3年生で,以前にこの日記を読んでメールをくれました。それが縁で,こうしろうとメールのやり取りをしてくれています。私も一度,C言語についての質問をもらい,答えたことがあります。

 こうしろうに語りかけるように,そして顔は思い浮かべることができないのですが(吹雪の中に中学生が立っている映像ばかりが浮かぶのは「北の国から」の影響でしょうか),苫小牧のS君に説明するイメージで書いています。従来書いていたAccessやPHPの連載は社会人を主なターゲットに定めていました。今回は中学生以上を対象に書いています。わかりやすいプログラミングの入門記事にしたいと思っています。ぜひ読んでみてください。

 さて,中学生未満にはMindStromsです。かずは相変わらず,ROBO Sportsのチャレンジを楽しんでいます。

5月25日 かずはアイスホッケーを模したPUCKOBOTSのレベル2に挑む。走ってきて,パックを見つけたらゴールに向かってシュートするロボットである。

デザイン仕様は,
*1つ目のモーターで走る。
*2つ目のモーターでパックを打つ。
*ライトセンサーでパックを見つけ,アームで打つ。
である。



 ちょっと見えにくいが,アームの付け根の横に取り付けたライトセンサーが白いテストシート上に置かれた黒いパックを検出する。

 チャレンジのレベル2ではプログラム作成ボタンを押すと,完成したプログラムが表示される。



 ボールを見つけdark(暗い)と判断すると,off Aで前進を止め,on C for 10でパックをゴールに滑り込ませる。しかし,このアームではパックは10センチも飛ばなかった。「運んで打つようにしようか」とかずがプログラムを直し始める。「パックを見つけたら,しばらく運んで,バック・スイングをしてから打つ」と言いながらかずが改良したプログラムが以下である。



 「かず,でもこれじゃバック・スイングしないよな。どうすんが?」と聞くと「モーターの配線,逆にすんが」とかずは答える。ご存知の通りMindStormsでは,RCXとモーターをつなぐコードもブロックで留めるので,ブロックの向きを変えるだけで回転方向を変えることができる。でもプログラムで直した方がもっと簡単なのである。「かず,そうじゃなくて,プログラムで直せばもっと簡単だろ」とアドバイスするが「僕の思たようにしたら,だめながけ」と富山弁で譲らない。「小学6年生って反抗期だったけ,それともかずは案外,強情なのかな」などと考え,こうしろうはこの頃どうだったっけと思い出してみるがはっきりしない。プログラムの方は直してみせれば,はっきりする。



 set direction A > C < と最初のモーターCの回転方向を変えただけである。「あっ,そっか」とかずは,ブロックの向きを変えるのと同じことだと納得がいったようだ。



 パックも首尾よくゴールに入った。