2019年2月21日、明星学苑・明星小学校にて、6年生の算数で、スクラッチを使った授業を行いました。

この授業は、明星学苑・明星小学校とベネッセコーポレーションとの2018年度共同研究の枠組みで実施しました。従来の算数の授業に、プログラミング的思考を導入すれば、より理解が深まる学習内容があるのではないかという仮説のもと、今回は、授業者の千田先生がいつも「場合の数」で実施している「階段の登り方」の授業にスクラッチ教材を導入しました。

階段の登り方

問題は、「階段の登り方が、1段ずつ、または、2段ずつ(1段飛ばし)の2通りあるとき、階段の段数ごとに、登り方の場合の数を求めましょう」という内容です。例えば、階段の段数が3段だったら、下図のように、(1,1,1)、(2,1)、(1,2)の3通りの登り方があります。

このような階段の絵で示すと、3段ぐらいならまだいいのですが、4、5、6段・・・と階段の段数が増えるにつれて、登り方の曲線が重なって数えにくくなります。わかりやすく数えるにはどうすればいいのか、児童それぞれの考え方で、いろいろな図表現がありました。5段の場合、(図1)のような樹形図、(図2)のような2の個数で分類するなど、さまざまです。

スクラッチ教材では、階段を上から見て、(図3)のように、長さ1(1段ずつ)と長さ2(2段ずつ)のたての矢印で表現することにしました。この方法なら、矢印が重複することなく、場合の数を数えることができます。千田先生のクラスでも、同様の見方で、横の矢印で表現した児童がいました。

1、2、3段・・・と階段の段数が増えるにしたがって、場合の数がどう変化するのか、表にまとめます。

段数 1 2 3 4 5 6 7 8
通り 1 2 3 5 8 13 21 ?

 

数列のきまりを見つければ、例えば、(2段の場合の数)+(3段の場合の数)=(4段の場合の数)になっていることがわかります。このきまりを使えば、8段の場合の数は、6段と7段の場合の数の和なので、13+21=34通りであることが予想できます。従来、このきまり(フィボナッチ数列)で階段の登り方の場合の数を求めてきたのですが、先生も児童も、本当に34通りあるのか、書き出したことがなく、また、なぜフィボナッチ数列になるのか理由を考えたことがありませんでした。

1時間目できまりを見つけ、2時間目(本時)では、1)きまりが成り立つ理由を考え、2)その考え方をプログラミングしたコードを読む活動をしました。考え方をコンピュータに命令することで、矢印を書く作業が自動化されるというプログラミングの役立ちを感じてもらうためです。3)そして、もし登り方が、1段ずつ、2段ずつ、3段ずつの3通りになったときには、どのようなきまりになるのかを予想し、4)1段ずつ、2段ずつの2通りの登り方のプログラムのどこを修正すればいいのかを考えました。

なぜ、4段の登り方は2段と3段の登り方の和なのか?

2時間目(本時)の最初に、板書した2段と3段と4段の矢印の図を見せて、「なぜ、2段と3段の登り方の和が4段の登り方になるのか、理由を考えてみましょう」と問いかけました。考えたことを近くの人と相談してもいいことにしたため、活発に意見が出ました。日頃から理由を考える習慣があるクラスなのかもしれません。発言者の3人目の女子が、(図4)のように、2段の登り方の下に長さ2の矢印、3段の登り方の下に長さ1の矢印を書き足して、4段の登り方ができることを説明しました。

(図4)

そして、スクラッチ教材で、5段の場合をシミュレーションして、同じきまりになっていることを全員が確認しました。

(図5)

考えたことを、プログラミングする

4段=3段+2段、5段=4段+3段、・・・というきまりがわかったので、一般化してN段=(N-1)段+(N-2)段が成り立つことが予想できます。場合の数の矢印を描画するスクラッチ教材では、どのようにプログラミングされているのでしょうか?ゼロからプログラミングするのは難しいので、登り方が1段だけの場合と、1段または2段の場合のプログラムを比較し、どこが違うのかを読むことにしました。緑の旗をクリックすると起動するメインのプログラムは(図6)の通りです。

(図6)

考え方1の関数を1段ずつの場合(図7)と、1段ずつ、2段ずつの場合(図8)とを比較してみると、(図8)の赤枠部分が、(図7)に追加されたプログラムです。

(図7)1段ずつの場合       (図8)1段ずつ、2段ずつの場合

1段、2段、3段ずつの3通りの登り方のときどうなるか?

もし、登り方に3段ずつが加わって、1段、2段、3段ずつの3通りの登り方になった場合には、N段の登り方は、(N-1)段と(N-2)段と(N-3)段の登り方の和になっているのではないか、と想像します。そして、(図8)のプログラムにどのような命令を追加すれば、3通りの登り方を描画するプログラムになるかどうかを考えました。2クラス合計47人中、無答の児童はゼロで、自分の考えをなんらか追記していました。

(図9)は、ある女子の解答です。解答用紙の裏面にも、N=1、2,3の場合について、プログラムに代入して確かめていました。プログラムを読んで、条件を変えた場合に何を追加したらいいのかを考えることは、かなり高度な思考だと思いますが、6年生なら根気よく考えられるのだということが確かめられました。

児童の意見を反映してプログラムを修正してみると、以下のように正しく描画できました。

場合の数を段数ごとに調べてみると、例えば、6段の場合の数=5段+4段+3段の場合の数の和になっていることが確かめられます。

段数 1 2 3 4 5 6 7 8
通り 1 2 4 7 13 24 44 81

 

この授業を通じて、前までの場合の数を元に考えるという漸化式の考え方、前までの場合のプログラムのどこを追加すればいいのかを考え、その考えをコンピュータに命令することで面倒な描画も自動化されるというプログラミングのよさが伝わったのではないでしょうか。

この教材と指導案は、からお知らせいただければ幸いです。改善のために参考にさせていただきたいと思います。