カメ太の日記 / 2008-11-06

前の日 / 次の日 / 最新 / 2008-11

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2008-11-06 Thu

1時間で学ぶソフトウェアの仕組み [infoedu][dolittle]

プログラミングは、うまく使うと生徒の集中力や考える力を伸ばします。そして、身の回りの多くのソフトウェアがどのような仕組みで動いているのかを理解できるようになります。

ソフトウェアの仕組みの体験的な学習は、ドリトルを使うと以下に説明する1時間の授業(小中高では45〜50分、大学等では90分)で可能です。オンライン版のドリトルを使えば、あらかじめ教室のパソコンで動くことを確認しておくだけで、インストールの手間もありません。情報関係の授業をなさっている先生は、1時間だけ実施してみてはいかがでしょう。生徒の反応を見てから、改めて数時間の授業に発展させることも可能です。

題材は「宝物拾いゲーム」です。プログラムはテキストのp24にあります(ここでは教えやすいように若干変えてあります)。進め方は簡単で、生徒に見えるように自分の画面で1行ずつ入力しながら、生徒に入力させて、1行ずつ実行させて行きます。本は生徒には見せません。

まず最初に、「ゲームを作るために、画面に主役を作ろう」と言いながら1行入力します。入力が簡単なように、主役の名前はひらがなにしました。また、必要に応じて「=」「!」「。」などの記号の入力方法を伝えます。
  生徒には先生の画面を見ながら同じように入力させ、実行させます。全員が実行できたか見て回りましょう。感度のいい学級では、早くもこの時点で「何か出た!」「カメだ!」と歓声が上がります。

かめた=タートル!作る。


続いて、「次にかめたを操作するボタンを作ろう」と言いながら1行入力します。
生徒が入力したら実行させて、「ボタンを作ったけど、押すとどうなる?」と問いかけます。

左ボタン=ボタン!"左" 作る。


生徒全員がボタンを押しても何も起きないことに気付いたところで、「押したときの動作を教えていないから、コンピュータは何をしたらいいかわからないんだね」と理由を説明します。そして、「押したときの動作をボタンに定義しよう。押したときにかめたを左に回すんだよね」と言いながら、1行入力します。
生徒が入力したら実行させます。キー入力の速い生徒と遅い生徒がいますので、エラーになっている生徒のフォローを含めて、ここで全体を見て回りながら足並みを揃えましょう。

左ボタン:動作=「かめた!30 左回り」。


高校生以上では、ここで「左回転のボタンができたから、右回転のボタンを追加してごらん」と言って、自分で作らせるのも効果的です。
続いて、(自分で作らせた場合は2,3分後に答え合わせを兼ねて)右ボタンを定義します。先生はプログラムをキーボードから入力していきますが、この2行と後から出てくる宝物の定義だけは、コピーして修正するのが便利です。入力が遅い生徒が多い場合には、コピーできることに気付かせるのもよいでしょう。
生徒が入力したら実行させます。ボタンでカメを左右に回転できるようになったことを確認させます。

右ボタン=ボタン!"右" 作る。
右ボタン:動作=「かめた!30 右回り」。


1分くらい操作させたところで「カメを回せるようになったけど、動かないと面白くないのでカメにエンジン(モーター)を付けてみよう」と言いながら2行入力します。
このとき、「いちどに200歩歩くと一瞬で動いてしまうので、0.1秒ごとに10歩ずつ歩くようにしてみよう」という説明を黒板に書くと、アニメーションのように動いて行く原理が伝わります。
生徒が入力したら実行させます。「動いた!」と声が出ることでしょう。すぐに画面から出て行ってしまうので、実行ボタンで何度でも実行できることと、ボタンで操作できることを伝えます。
これで、簡単なドライブゲームになりました。実行は10秒間で終ります。

時計=タイマー!作る。
時計!「かめた!10 歩く」実行。


参考までに、ここまでのプログラムをまとめて書いておきます。小学校では、ここまでのプログラムで十分かもしれません。

かめた=タートル!作る。
左ボタン=ボタン!"左" 作る。
左ボタン:動作=「かめた!30 左回り」。
右ボタン=ボタン!"右" 作る。
右ボタン:動作=「かめた!30 右回り」。
時計=タイマー!作る。
時計!「かめた!10 歩く」実行。


treasure1



生徒には、2,3分遊ばせましょう。その後、「ゲームだから、宝物を拾うようにしてみようか。かめたは花を集めるのが趣味なんだって」と言いながら、1行入力します。

タートル!作る "tulip.png" 変身する ペンなし 100 100 位置。


生徒が入力したら実行させます。宝物は表示されましたが、カメと重なっても何も起きないことを確認させます。
次に、黒板にXY座標を描き、(100,100)の位置を図示しながら説明します。そして、生徒にこの1行をコピーして修正することで、画面上の異なる位置に3個の宝物を置くプログラムを作らせます。
続いて、「最後に宝物を拾えるようにしてみよう。たとえば、かめたと何かが重なったときに相手を消せば、拾ったように見えるよね」と言いながら1行入力します。縦棒記号は普段使わないので、入力方法を説明するとよいでしょう。

かめた:衝突=「|相手| 相手!消える」。


これで宝物拾いゲームは完成です。参考までに、プログラム全体を書いておきます。10行程度ですので、中学校以上であれば、余裕を持って取り組めると思います。

かめた=タートル!作る。
左ボタン=ボタン!"左" 作る。
左ボタン:動作=「かめた!30 左回り」。
右ボタン=ボタン!"右" 作る。
右ボタン:動作=「かめた!30 右回り」。
時計=タイマー!作る。
時計!「かめた!10 歩く」実行。
タートル!作る "tulip.png" 変身する ペンなし 100 100 位置。
タートル!作る "tulip.png" 変身する ペンなし 100 -100 位置。
タートル!作る "tulip.png" 変身する ペンなし -100 100 位置。
かめた:衝突=「|相手| 相手!消える」。


treasure2

進度の速い生徒には、宝物を増やして5個にさせたり、次のように乱数のサンプルを示して、実行するたびに宝物の位置が異なるように拡張させるのも効果的です。

タートル!作る "tulip.png" 変身する ペンなし (乱数(600)-300) (乱数(400)-200) 位置。


また、テキストのように、ボタンの定義に "LEFT" や "RIGHT" を加えて、キーボードからかめたを操作できるようにすることもできます。



授業の最後では、5分くらいで構いませんので、今日体験したことの振り返りを行なってください。たった1時間の実習でしたが、生徒は実にいろいろなことを感じ取っているはずです。生徒から感想を引き出しつつ、次のようなことを板書などを含めて確認してみてください。
最後の「OS」はオペレーティングシステムと呼ばれるソフトウェアで、「Windows」「Macintosh」「Linux」などがあります。少し高度になりますので、最後の部分だけは生徒の反応を見て解説するかどうかを判断してください。

・プログラムがどんなものかわかる
・ゲームなどのソフトはプログラムで作られている
・プログラムは人間が書いている
・プログラムは特別な「言語」で書く
・文法が違うとエラーになる
・間違って書くと間違って動く
・書かれていないことは実行されない
・上から順に実行される
・ある状態になったときに実行される命令もある(ボタン、衝突)
・ソフトは自分たちで作れる
...
・キー入力やマウスカーソルもプログラムが表示している(OS)
...


小中高の授業で扱う多くの場合は、プログラミングの教育が目的ではありません。「ドリトルを教える」「プログラミングを教える」といった「〜を教える」という形の授業ではなく、上記のように適度なヒントを与えながら実習を行ない、そこから生徒が体験的に学んでいく学習が効果的です。

ドリトルを使うと、普段使っているゲーム機や携帯電話、ワープロなどのソフトウェアがどのような仕組みで動いているのかを体験的に学ぶことができます。ぜひ1時間だけでも授業に取り入れて、身近なソフトウェアの原理に触れさせてあげてください。生徒によっては一生に一度の貴重なプログラミング体験になるかもしれません。

中学校「技術・家庭」や高校「情報」の授業では、この実習を1時間やることで生徒が「ソフトウェア」と「プログラム」が何かを理解できるので、その後の授業がやりやすくなると思います。情報システムのような説明はもちろん、情報倫理のような話題でも「コンピュータウィルスは自然にできるものではなく、悪意を持った人間が作っている」と説明したときに、生徒に伝わるリアルさがまったく違って来るはずです。

2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12

最終更新時間: 2012-08-19 23:58

RSS