来週の後期中間試験で、Squeakを使った情報Bの授業も一区切り
落ちこぼれが皆無という状況。生徒から見るとゲーム性の高い内容を扱ってきているが、順次・反復・条件分岐の基本をしっかり押さえてきた。しかし、これ以上の時間を費やすと他のプログラミング環境を扱えなくなってしまう。具体的には、表計算を用いたシミュレーションとJavaScriptを用いたプログラミングを予定している。
最後に取り上げた内容は、厳密性は抜きにして、電車の車輪の端についているマークが描く軌跡、つまりサイクロイドを描いてみようということ。
まずは、円の縁に「ペンが下りた」点をドロップさせる。この操作により、円と親子関係を結ぶことになる。
そして、円を回転させながら右に進ませ、一定の位置で左端に戻るようにさせた。課題を解決するために、スクリプトを少しずつ進化させていく。

繰り返すが、回転と移動の値は、車輪をシミュレートするには不完全な設定。この問題を解決させるという課題を与えたいところだ。。。
ここでは、円が左端に移動するときの「直線の軌跡」が気になるため、この軌跡が出ないような解決策を提案させる。「戻る前にペンを上げる」ことに気がつくには、時間がかからない。当然、戻ったらペンを下ろす。

これで終わりとしてもよいが、少し応用してサブルーチンを体験させる。
「ペンを上げて戻る」というスクリプトを書き、これをメインプログラムに組み込んだ。生徒は、プログラムにプログラムを組み込むという事例を、全く素直に受け入れた。

スクリプトを表示しながら操作することができるという、Squeakの特徴を活かすことができた。「もっとSqueakをやりたい」「ゲームを作りたい」という声もあり、残念な気もするが今年の授業ではこれでおしまい。
昨年度のように、冬休みに自由作品を宿題にするか。。。
【21日追記】谷川先生よりコメントをいただいた機会に。。
Squeakで教える教材は物理や数学に繋がるものを意図的に選んできた。
実は、Squeakで教える最後の題材としてモンテカルロ法を用意していた。しかし、コンピュータを利活用して求積やπなどの数値を出すための最適手法かというとはなはだ疑問がある。確かにどの教科書にもお決まりのように載っている。しかし、条件を満たす格子点の個数を数えれば結果が得られ、わざわざゴマを乱数で発生させる必要はない。(不定形の図形の面積を求めるならば別だが、そこまで踏み込むとプログラミング嫌いを生んでしまう)


Squeakはプログラミング教育の導入として使いたいと考えている。上記の理由もあるが、モンテカルロ法のために、複雑な思考をさせてここでプログラミング嫌いを作るのは得策ではない。
プログラミング、アルゴリズムを深く学びたい生徒のためには、学校設定科目「コンピュータ技術」と専門教科の科目「アルゴリズム」を設置している。
最近のコメント