2021/03/06

7. スクラッチで算数ドリルを作問

1. スクラッチで算数ドリル

 前回の後半で、足し算練習問題出題プログラムを作った。

 掛け算の練習問題を出題するプログラムは、
 足し算のプログラムを次のように 3 箇所変更する。
 + のスプライトを x のスプライトに、
 「a と + と b と は? と聞いて待つ」を「a と x と b と は? と聞いて待つ」に、
 「もし a + b = c なら」を「もし a x b = c なら」に変える。

 引き算の練習問題は答え c が負にならないように出題する必要がある。
 「a と + と b と は? と聞いて待つ」を「a と - と b と は? と聞いて待つ」に、
 「もし a + b = c なら」という部分を「もし a - b = c なら」に変えるだけだと
 c が負になることがある。そこで a < b のとき、a と b を入れ替える。


 このようにすると引き算の練習問題を出題するプログラムは以下のようになる。



 割り算の練習問題は答え c が分数にならないように出題する必要がある。
  b と d に 1 から 9 までの乱数を入れ、a には b x d を入れる。
 すると、a ÷ b = (b x d) ÷ b = d なので、a ÷ b は分数になることはない。
 そこで答え c に対して、それが正しいかは「もし d = c なら」で判定する。

 このようにすると割り算の練習問題を出題するプログラムは、
 足し算のプログラムの a と b を乱数で設定する部分を、
 + のスプライトを ÷ のスプライトにし、
 b と d に 1 から 9 までの乱数を入れ、a には b x d を入れるようにし、
 「a と + と b と は? と聞いて待つ」を「a と ÷ と b と は? と聞いて待つ」に、
 「もし a + b = c なら」を「もし d = a なら」に置き換えればよい。


 足し算、引き算、掛け算、割り算の練習問題(ドリル)を出題するプログラムを、
 スクラッチのホームページ上に共有で公開している。

2. 前回の解説「数字を小さい順に並べてできる 4 桁の数の個数」の続き

 前回は 4 桁の数で右となりの数字が同じか大きくなっている数の個数を、
 スクラッチのプログラムで数えてみた。

 そのプログラムではに対応した方法で 1 を一つひとつ数える。
 前々回、5回目の記事で示したように、この右端の
   d が c から d が 9 になるまで 1 を 10-c 個足し合わせる
 つまり ( ... ((1+1)+1) ... +1) のような足し算をせよという意味の式だ。
 1 を 10-c 個足し合わせれば、その計算結果は足し算をしなくても 10-c である。
 さらにこの結果を使うと、前々回示したように
 1 を足し合わせることをせずに、
 のように c が 0 のとき 10、1 のとき 9、... 、9 のとき 1 を足し合わせればよい。
 この足し算はたす順序を変えて、 1+2+ ... +9+10 と表すことができ、
 上に示したようにと書くことができる。
 
 この式は、足し算の順序を反転した2つの式を加え合わせることによって
 のように計算できることを前々回示した。
 一般にとなることも前々回に示した。

 この公式を用いると
 のように 10-b 個の数の足し算をせずに、
 引き算2回、掛け算1回、割り算1回で計算することができる。

 この式を用いると 3 桁の数で右となりの数字が同じか大きくなっている数の個数は
 のように表すことができる。ここで i=10-b とおくと、
 b=0 のとき i=10、b=1 のとき i=9、... 、b=9 のとき i=1 となることから、上式右辺は
 と変形できる。証明は後日示すが、
 が成り立つ。これを使うと
 となり、 3 桁の数で右となりの数字が同じか大きくなっている数の個数が
 220 個であることがわかる。

 4 桁の数で右となりの数字が同じか大きくなっている数の個数を数式で計算してみよう。
 公式 を用いる。この証明も後日示す。



 数式での計算はちょっと大変だったが、プログラムで数えた個数と同じ結果が得られた。

 プログラムを作るのと、この計算ではプログラムを作る方が楽のようだ。

 問題によってはプログラムの実行時間が非常にかかり、計算機では手に負えなくなる。
 そのようなときは、計算機が無駄な計算をしなくてもよいように、
 数学でわかることを使ってプログラムを作る。数学は強力だ。

0 件のコメント:

コメントを投稿

20. 円錐の半分?

17-19 で三角形、四角形の面積を半分にする問題を解いた。 今回は円錐を半分にする実験をしてみよう。 まず、円錐を作るための図形をスクラッチで描いてみた。 プログラムはここ。 https://scratch.mit.edu/projects/561804896 これを実行すると...