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 桁の数で右となりの数字が同じか大きくなっている数の個数を、
スクラッチのプログラムで数えてみた。
d が c から d が 9 になるまで 1 を 10-c 個足し合わせる
つまり ( ... ((1+1)+1) ... +1) のような足し算をせよという意味の式だ。
1 を足し合わせることをせずに、
この足し算はたす順序を変えて、 1+2+ ... +9+10 と表すことができ、
のように計算できることを前々回示した。
この公式を用いるとは
のように 10-b 個の数の足し算をせずに、
引き算2回、掛け算1回、割り算1回で計算することができる。
b=0 のとき i=10、b=1 のとき i=9、... 、b=9 のとき i=1 となることから、上式右辺は
となり、 3 桁の数で右となりの数字が同じか大きくなっている数の個数が 数式での計算はちょっと大変だったが、プログラムで数えた個数と同じ結果が得られた。
プログラムを作るのと、この計算ではプログラムを作る方が楽のようだ。
問題によってはプログラムの実行時間が非常にかかり、計算機では手に負えなくなる。
そのようなときは、計算機が無駄な計算をしなくてもよいように、
数学でわかることを使ってプログラムを作る。数学は強力だ。
0 件のコメント:
コメントを投稿