2021/02/26

6. 数学は強力だけど、Scratch でとりあえず調べてみる。

1. 数字を小さい順に並べてできる 4 桁の数の個数

  以前、数字を小さい順に並べてできる 4 桁の数の個数は 715 個と書いた。
 1万個もある 4 桁の数 のうち、たった 715 個しかないのは驚き。

 そこで前々回(第4回)、715 個しかないのを確かめるためのプログラムを
 スクラッチで作り始めた。

   8. 準備ができたので、まず 0000、0001、・・・ 、 0009 を数えてみよう。
  13. つぎは、0000 から 0099 まで数えてみよう。

 ここまでは、プログラムを作って、動かしてみたと思う。

  14. では、0000 から 9999 まで数えてみよう。これは宿題。
  15. 0000 から 9999 までの数で、
   右となりの数字が同じか大きくなっている数を数えるのは
   どのようにしたらよいだろうか。これも宿題。

 これらの宿題の説明はまだだけど、前回は
 数字を小さい順に並べてできる 2 桁の数の個数を数えるプログラムを作った。
 数学の公式を使うとプログラムで数えなくともよいことがわかった。

 今回はまず、上記の 14. の宿題 0000 から 9999 まで数える から説明する。

 プログラムには、次のように動作をさせたい。

    a b c d カウンター
    0 0 0 0     1
    0 0 0 1     2
    0 0 0 2     3
    ...
    0 0 0 9    10
    0 0 1 0    11
    ...
    0 0 1 9    20
    0 0 2 0    21
    ...
    0 0 8 9    90
    0 0 9 0    91
    ...
    0 0 9 9   100
    0 1 0 0   101
    ...
    0 1 9 9   200
    0 2 0 0   201
    ...
    0 9 9 9  1000
    1 0 0 0  1001
    ...
    1 9 9 9  2000
    2 0 0 0  2001
    ...
    8 9 9 9  9000
    9 0 0 0  9001
    ...
    9 9 9 9 10000

 これは数式では、のように表される。

 そこで、 2 桁の数の個数を数えるスクラッチのプログラムを参考に、
 以下のように、4桁の数の個数を数えるプログラムを作る。


 これらをつなげると、

 のようになる。数式と似ている。
 プログラムは動かすとかなり時間がかかる。数式では、
 のように計算できる。

 つぎに、15. の宿題 
   0000 から 9999 までの数で、
   右となりの数字が同じか大きくなっている数を数える
 を説明する。

 前回、「2 桁の数で、右となりの数字が同じか大きくなっている数の個数」を
 数えるプログラムを、プログラムの中の「d を 0 にする」を 「d を c にする」に
 変えて作った。
 これはに変えたのと同じ。
 このようにすると、c の右となりの数字 d が同じか大きくなる。したがって、
 4 桁の数で、右となりの数字が同じか大きくなっている数の個数を数えるには、
 を計算すればよい。しかし、この計算はちょっと難しい。
 そこでとりあえずスクラッチのプログラムで数えてみよう。

    a b c d カウンター
    0 0 0 0     1
    0 0 0 1     2
    0 0 0 2     3
    ...
    0 0 0 9    10
    0 0 1 1    11
    ...
    0 0 1 9    19
    0 0 2 2    20
    ...
    0 0 8 9    90
    0 0 9 9    55
    0 1 1 1    56
    ...
    0 1 9 9   100
    0 2 2 2   101
    ...
    0 9 9 9   220
    1 1 1 1   221
    ...
    1 9 9 9   285
    2 2 2 2   286
    ...
    8 9 9 9   714
    9 9 9 9   715

 先ほどの 4 桁の数を数えるプログラムの
  「b を 0 にする」を 「b を a にする」に、
  「c を 0 にする」を 「c を b にする」に、
  「d を 0 にする」を 「d を c にする」に
 に入れ替える。

 
 このプログラムのなかの「0.1 秒待つ」を削除すると、すぐに数え終わり、
 4 桁の数で右となりの数字が同じか大きくなっている数の個数が 715 個である
 ことがわかる。

 の計算については、次回以降に説明する。

2. スクラッチの簡単なプログラム

 スクラッチで足し算練習問題出題プログラムを作ってみよう。


  1. a+b=c の a と b に 1 桁の数が表示され、
  2. 計算結果をキーボードから入力すると、c にその値が表示される。
  3. 足し算の結果と入力した数が合っていれば、「正解です!」と表示する。
  4. 上記を10回繰り返し、何問正解したかを表示する。

 上記の + や = は、スプライトを編集して作る。


 この筆の印の場所をクリックすると、スプライトと言う図柄を作る編集の画面が
 中央に現れる。


 T を選択し、キーボードから + の記号を入力する。
 矢印を選択し + の大きさと位置を調節する。


 = のスプライトも同じように作る。

 スクラッチのプログラムは以下の通り。


 これを分解してみる。


 この部分は10問出題し、正解の数を p に蓄え、最後に正答数を表示する。


 この部分は乱数を用いて、1 から 9 までの数を a と b に入れる。
 0 から 99 までの乱数にしたり、4桁や5桁の乱数にすることもできる。


 この部分は計算式を表示し、キーボードからの入力を待つ。
 入力結果を c に入れる。


 この部分は a+b の値と入力した答え c が同じか調べ、
 同じときは「正解です!」と表示し、正答数を数える p に 1 加える。

 このプログラムをすこしかえたものや、引き算、掛け算、割り算、分数の計算の
 問題を出題するプログラムを、スクラッチのホームページ上に共有で公開した。


0 件のコメント:

コメントを投稿

20. 円錐の半分?

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