つるかめ算からコードの世界へ

つるかめ算とは

つるとかめの頭の数は、合わせて10です。足の数は合わせて26本です。つるは何羽、かめは何匹いますか。

小学校で教える解法

  1. もし全部つるなら、足の数は 2×10=20
  2. 足の数は、
    26-20=6 本多い、かめがまじってる!
  3. つるのかわりにかめなら足の数は 2本ふえるから、
    6/2=3
    つる3羽のかわりに、かめ3匹。
  4. つるの数は
    10-3=7羽

したがって、
つる 7羽
かめ 3匹
頭の数 =7+3=10
足の数 =7×2+3×4=14+12=26

以上

これをコード化するとどうなるだろうか。

コードを書くための準備

入力と出力

  • つるとかめの頭の数: a

  • 合せた足の数: b

  • つるは何羽: x

  • かめは何匹: y

2つの整数を入力し、2つの整数を出力する。

  1. 入力は、空白で2つの整数を区切る方法、
a b
  1. 2行に分けて入力する方法、
a
b
  1. または、頭と足、それぞれの数を分けて質問し、入力するやり方もある。
頭の数 a
足の数 b

1,2 の入力は、入力するとき頭の数と足の数を入力する順をまちがえないように注意しないといけないし、もちろん3でも入力者がまちがえると後の計算は意味がなくなってしまう。

このため、入力をチェックすることは、しばしば現実のシステムでは必要だ。しかし、うっかり間違えたときはどうだろうか?意図的に誤った数値を入力されたら?心配するときりがない。

できるだけ、誤入力を防ぐようにコード化するしかない……

ここでは、「3」を採用し JavaScript + HTML で、クライアント・サイドのコードを書くことにする。

<html>
<body>
<div id='input'></div>
<div id='output'></div>
<script type='text/javascript'>
var a = window.prompt('つるとかめの頭の数は合わせて、', '');
var b = window.prompt('足の数は合わせて、', '');
document.getElementById('input').innerHTML = a + ' ' + b;
 

(これは、途中までのコード)

次に、小学校で教わる解法をコード化してみよう。

出力は、次のコードを参考にする。

document.getElementById('output').innerHTML = x;

小学生の学習を補助するアプリ

JavaScript + HTML5 のコードを完成させる。

中学校で習う代数

  1. つるの数を x、かめの数を y とする。
  2. 頭の数を a、足の数を b とする。

1,2 より
x + y = a
2x + 4y = b

これから
2y = b - 2a
y = (b-2a)/2

x = a - y

この代数をつかったやり方でコードを書く

つるかめ算アプリの要求仕様書

練習問題

仕様書を書く。

例)
たとえば、つぎの1,2,3 についてどのようにデザインしてほしいのかを具体的な要求で示す。

  1. 入力画面

    つる、かめの絵を入れる。

  2. 学習補助教材として、つるかめ算の計算過程を生徒に見せる。

    生徒に中間結果を問い、理解力をテストする。

  3. 最終画面

    何問か出題し、正解率などを出す。

    ……