子供にプログラミングを教える方法

子供の為の最高のプログラミング教育を見つけていきます

小学生向けProject Euler計画 その1

f:id:teramethod:20190916223600j:plain

 

わが子には、プログラミングを学んでもらいつつ、算数・数学の素養も付けてもらいたい。

 

勝手にやろうとしている小学生向けProject Euler計画ですが、サーバを用意するのも今は難しいので、とりあえず問題だけも考えてみようと思います。

 

1問目は、やはり自然数の和を持ってきたい

1+2=3

1+2+3=6

1+2+3+4=10

・・・・

1+2+3+・・・+99+100=?

 

普通の教え方では、まず計算させてみるだろう。5分ぐらい?

手で計算するのは大変であることを実感してもらう。

 

でも、このあたりは対面式での授業でないと厳しいかもしれない。

ネット上だと子供が飽きて試行錯誤せず答えを知りたがる。まあ大人でも一緒ですね。

 

我が子に先ほどの問題を出したことがあったのですが「難しい!」色々考えてみようか。いろんな解き方があるかも。「もう思いつかない!」まあそうだよね。

 

ただ、最近、クイズにハマっているようで、子供用のクイズはもちろん、大人も悩むようなクイズを(正解は無理だとしても)考え続けられることがわかった。

 

たとえば以下のクイズは、移動しながら、何回か中断しながら、色々回答してくれた。

 

なぞなぞランド|超難問スッキリなぞなぞクイズ-4人の囚人

 

謎解きの要素があった方が燃えるのは心情としてはわかるので、自然数の和に絡んだ謎、ミッションを作ってみよう。

 

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 

とんでもない機械を発明してしまった。

増やしたいものを登録すると、かかった分の数が生まれてくるものだ。※5/4 見直すと解りづらい文章だったので修正

 

例えば、ケーキを登録する(ケーキ1つを★にしてみよう。)

1分後 1つできる(★)

  合計 1個

 

2分後 2つできる(★★)

 合計 1+2=3個

 

3分後 3つできる(★★★)

 合計 1+2+3=6個

 

、、、

 

どれか食べてしまうと、もう増えなくなる。1個目から食べないでおいて、何分後に、自分の学校のみんなに分けられるだけ増えるだろう。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 

 

 

 

単純な数の和の問題を、身近なことに紐付ければ興味を持ってくれるかな、、。答えるのは「何分後」なので敷居も低くなった。

 

 

一般的な回答方法としては以下を教えたい 。

けど、「教えない」のも1案かもしれない。

 

 

① 法則を見つけて解く(ガウス

小学校3年生位のガウスという少年の話をすると刺激になるかも。

 

1+2+3+・・・+98+99+100

100+99+98+・・・+3+2+1(逆から並べた足し算を用意する)

それぞれ順番に足すと

(1+100)+(2+99)+(3+98)+・・・+(98+3)+(99+2)+(100+1)

101+101+101+・・・+101+101+101(100個)

101×100=10100

最後に÷2をして 10100/2=5050

 

②平均で解く 

 1+2+3+4+5+6

    →(1+6)/2=3.5 3.5*6=21

   1+2+3+,,,+98+99+100

   (1+100)/2=50.5

 50.5*100=5050

平均の考え方が分からないと難しいか。

図も欲しいな、、

 

③法則を見つけて解く(数式)

n(n +1)/2

シグマ知っている高校生くらいからかな。

 

 

表計算ソフトを使って解く

Microsoftのエクセルやgoogleのスプレットシートで数字を1ずつ増やしたものを全て選択してしまえば、合計がでる。

 

⑤プログラミングのループを使って解く

scratchで書くとこんな感じか

https://scratch.mit.edu/projects/306578930/

 

プログラミングで解くことは簡単ではあるが、知的かどうかというと疑問に思えるかな。

 

今日本屋でみたら、以下の茂木健一郎さんの本でも、子供は「探求心」をもたせると、自分でおのずから進んで勉強に取り組むらしく、今回クイズ形式にしたのはよかったかもしれない。

あとは、小学生のみんなに、考えてもらう工夫だな。。。