小学生向けのプログラミング教育でやる内容が難しい。
高木です。おはようございます。
2020年度から小学校でプログラミング教育が必修になるといいます。
私の娘もギリギリそれに引っ掛かる年齢なわけですが、これまでまったく関心がありませんでした。
しかし、せめて簡単に内容だけでも把握しておいたほうがいいだろうということで、「小学校プログラミング教育の手引(第一版)」にざっと目を通してみました。
どうやら小学5年生では、正多角形を描画するプログラムを学ぶようです。
といっても、VRAMに画素を書き込むようなハードウェア寄りの部分を学ぶわけでもなく、Bresenhamのアルゴリズムを使って線分を描画させるわけでもありません。
先ほど紹介した「小学校プログラミング教育の手引(第一版)」には次のような図が掲載されています。
実際には「3回繰り返す」前の段階として、同じ処理を3回ベタベタに並べて書いた図もありました。
プログラミング初学者、しかも小学生がいきなりループを書けるとも思えませんので当然でしょうね。
いったんベタベタに書くところから始めて、ループに持っていくようです。
正多角形ということなので、正三角形以外も考えてみたいと思います。
正四角形、すなわち正方形の場合であれば、右に90°曲がりながら4回繰り返せばいいことになります。
正六角形なら、右に120°曲がりながら6回繰り返せば描画することができます。
では、正五角形ならどうでしょう。
これはかなり半端な角度を扱わないといけません。
すなわち、右に108°曲がりながら5回繰り返すことになります。
まだ角度が整数になるだけマシですね。
では、正127角形ならどうでしょう。
今度は右に177.16535433070866141732283464567…°曲がりながら127回繰り返すことになります。
始点と終点がピッタリ合う気がしません。
こういう体験を経て分数の重要性が理解できるのかもしれません。
小数ではうまく表現できなくても、分数で\(\frac{22500}{127}\)とすれば、ピッタリ始点と終点が合うことが期待できます。
小学生のプログラミング教育なので、機械誤差がどうとかいう問題はとりあえずなしです。
このようにいくつかの正多角形について試しているうちに、一般的に正n角形ならどうかるかを考えるようになるのではないでしょうか?
小学校では代数について本格的に学ぶわけではないですが、「正多角形の辺の数を指定して、それを描画するプログラムを作る」といった表現なら可能でしょう。
この場合、正多角形の内角が\(\frac{180\times(n-2)}{n}\)という式で表されることを、まずは導かないといけません。
この辺りはプログラミングではなく単なる数学であり、机上で行うべきことです。
とはいえ、小学5年生には相当ハードルが高いと思います。
ハードルは高いですが、いくつかのケースから帰納的に統一的な表現を導くことができるようになると、プログラミングは急激に面白さが増すようになります。
そういう思考は、プログラマーに限らず誰にでも必要になることだと思います。
統一的な表現を導けるところまでいかなくても、母国語を使って自分の意思を正確に相手に伝える訓練をするためにも、プログラミング的思考は必要です。
人間が相手だと、ついつい相手が好意的に察してくれることに期待して、あいまいで不正確で不十分な伝え方をしてしまいがちです。
プログラミングではそうはいきません。
子供たちの国語力を養うためにも、プログラミング的思考を学ばせるのはよいことだと思います。
できれば大人に対してもそのような教育の場があればいいですね。
今回書いた内容は間違っています。
週末にでも訂正記事を投稿する予定ですが、ぜひ間違いを見つけてみてください。