今日は、天気は余り良くないとの予報だったが、
朝のうち日が射していた。
途中、曇っては来たが、夜まで雨は降らなかったと思う。
午前中はジムで軽く汗を流した。
一休みして夕方から中学校のパソコン部の支援に出かけた。
しばらく前から1年生を中心に、
Scrattchでピンボールのようなゲームを作らせてきて、
大分出来てきた子も増えた。
プログラムでは、以下の順番に開発してもらった。
・ボールを4つの壁で跳ね返るようにする。
・下部にパドルを配置して左右に動かし、
ボールはパドルに当たると跳ね返るようにする。
・パドルに当たらずに下に着くとゲーム終了にする。
・それをボール5個までプレーできるようにする。
・更に画面の上部にブロックを作って、
ブロック崩しゲームに拡張する。
多くの生徒は、機能を増やしていく時に、
単に機能を追加するだけで、元の処理まで見直さず、
全体を見るところまで出来ていなかった。
これが、しばしば次の拡張の時に、
全体の整合性が取れなくなる原因になっていた。
私はScratchの欠点だと思うが、
書いたプログラムが極めて読みづらい。
特にループや条件判定等のC型ブロックがネストすると
全体がよく分からなくなってしまうし、
少し複雑な計算などをさせようとすると、
1行がどんどん長くなってしまうので、
ますます読解性が悪くなってしまう。
また、きちんとロジカルに構成されたプログラムを作らなくても、
つぎはぎと試行錯誤で適当にやっていればそれなりに動いてしまう。
つまりScratchは、ステージという限定された場で
主にスプライトを使って何かする、ということを、
ビジュアルなブロックを使って視覚的にプログラミングする。
この意味ではプログラミング入門用かもしれないが、
結果的に非ロジカルな生徒を増やしているのかもしれない。
パソコン部の授業が終わってから担当教員と
どうしたらロジカルに組み立てていけるように指導できるか
少し議論して見たが、なかなか良い答えは見つからなかった。
Scratchは読みづらいので、久しく使わなかったフローチャートで
説明する方法も考えられる。
どうすればロジカルなプログラミングをできるように指導するか、
これから試行錯誤していく必要がありそうだ。