今日は ここ数日の寒さが嘘のような とっても良いお天気です。朝7時過ぎに家を出るのですが、その準備をしていると玄関が開く音が。
犬の散歩から帰ってちゃんと閉めなかったかな?なんて思っていたら、リビングの扉が開いて小さい男の子がこっちを見ています。
だれ? と思って固まっていたら、後ろから次男坊が「こたろーくん!」と飛んできました。保育園のお友達でした。お母さんがお仕事に出かけるときに公園で遊ぶと家を出て、10分ほど離れたところにある我が家に遊びに来たようでした。
田舎あるあるです。
ま、そんなことはさておき、本日の午前の部はスクラッチがメインの授業です。その前に前回のやり残しを確認。前回は同じ動作を2種類のプログラムで表したのです。それのどっちが良いかを考えてもらって、その理由を述べてもらうことからスタートしました。
この後に、自分の選ばなかった方の良いところはないかを考えてもらいました。色んな視点が持てることもとても大切です。柔軟な発想を育てる第一歩です。
それから、前回完成したプログラムを新しい知識で手直しします。それは繰り返し処理。
3回同じ動作を繰り返すプログラムだったのですが、順次処理の表現だったものを繰り返し処理の表現に改めました。そうすると、ループという処理に戸惑う生徒が出てきました。
これまでの順次処理とは違う動きをするんですね。まずは間違って正解!なのです。
まとめが終わったらいよいよ本題のスクラッチへ。家でも少しいじるようになってるのかな?スクラッチを開いたらどんどん好きなことをやり始めます。すごい成長だなぁ。
とりあえずは軌道修正して授業を開始。すると思いのほか自由にいじってくれたので既に画面がブロックでいっぱい。こちらの想定は6コのブロックをどう組み上げるかで悩んでほしいので、これは参ったなぁ。まぁ能動的なことの結果なので嬉しいことなのです。
たった6個のブロックですが、これの組み上げ方が初心者には結構難しいのです。1から10を数えさせるというだけの単純なものなのですが、0から9になったり、最後の10だけを表示するだけだったり、そもそも動いてくれなかったり。ちょっと長いですが、悪戦苦闘しながら理解をしていく様子をご覧ください。
数え上げができたら、その数字を大きくすることでどれくらい処理に時間がかかるかを実感することができます。ただ、それにはちょっと工夫が必要です。目にもとまらぬ速さで動いていることを知ってもらうには、数え上げるのが目で見える速さではダメなのです。そこで早く動かすにはどうしたらいいか?を考えてプログラムを変更してもらっています。とてもいい反応をしてくれた生徒が出て、それをあとからみんなで検証しています。こういう場面は集団ならではですね。
鉄道を動かすプログラムは目の前の電車が動いてくれるのでプログラムが動いているかどうかがハッキリ分かりました。ところが今回のプログラムは動いているかどうかが分かりません。でもそれをしっかり見抜いてくれる子どももいます。
普段のパソコンでプログラムが完成したら復習も兼ねて、塾にあるたくさんのパソコンのスピードも測ってもらうことにしました。すごいのは全員が何も見ないでプログラムを組み上げたこと。ちゃんと頭が動いていないとできないことです。素晴らしい!
そして最後はちょっとお遊び。このお遊びも授業の一環です。今日は座標という概念にあたり判定を体験してもらうお遊びです。
座標やマイナスやといった言葉が出てきてますが、完全に中学数学の範囲です。でも遊びながらこういうことに触れておけば、実際に中学で習ったときの理解と実感が段違いになりますよね。
さて、午後の部ではプログラムを汎用化しよう!という大層なタイトルをつけて取り組んでいきます。順次処理と繰り返し処理にサブルーチンとして関数を使ったプログラムを完成させました。ここに変数を組み込むことでプログラムの骨格を維持したまま、最低限の変更で複数のロボットの制御が可能になるようにしようという内容です。
というわけで、今まで隣の人が動かしていた列車を動かすという列車チェンジをしまして、お互いにデータを盗み見ながら、もとい、いただきながら、プログラムを変えていきます。
どこのデータを変更する必要があるかが分かったらその部分を変数化していく準備をします。準備なのでそれが終わっても「なんでこんな無駄なことしてるんだろう?」って思うのです。そう思えたら大成功。効率化って最初は無駄に感じるものなのです。
どんどんと変数を作っていきます。変数には自由に名前がつけられるので、プログラムに意味づけができて分かりやすくなります。長くなってしまうので美しくないのでしょうが、今の生徒にとってはこれが見直しのしやすさにもつながるからちょうどいいのです。
たくさんの変数を作ったのでずいぶん複雑に見えます。確かにひと月前だったら訳が分からなかったはずです。でも、今はしっかり理解できるんですね。
そして完成形。きちんと動作するかも検証して、この単元もクリア!となりました。