計算機を作ろう その2

「状態」とは何かを知ろう

説明

普通に計算してもつまらないので、計算機に少し面白い機能を追加していきましょう。

皆さんの「kadai.js」は現在このようになっているのではないでしょうか?

21行目にコメントがありますよね。
「kotae」という変数には、四則演算の結果が保存されています。

課題


それでは課題です。
この21行目以降に、コメントに書かれている通り「bakuhatsu」関数を呼び出すように変更してください。

プログラムの変更が上手くできると、画像のように、答えが3の倍数の時に、計算機が爆発します。

計算機が爆発したところ

3の倍数の特徴はみなさん分かりますよね。
そうです。3で割り切れるということです。
if」を使って、「kotae」が3で割り切れるかどうかという条件判定をして、この条件を満たす場合だけ「bakuhatsu」関数を呼び出せば良いのです。

if (3の倍数なら) {
  bakuhatsu(); // JavaScriptは行の最後に;(セミコロン)が必要です。
}
javascript

さて、3の倍数の時に、「bakuhatsu」関数を呼び出し、画像のように9➗3の時に爆発させることができたでしょうか?

ところで、一度、爆発させると、次に1+1などを入力して、その答え3の倍数ではない時にも、爆発したままになりませんか?

この計算機のプログラムは以下の2つの「状態」があります。

  • 普通の計算機の状態
  • 爆発した計算機の状態

「状態」という言葉は、一般的な言葉ですが、システム開発の現場でも良く使われます。

それでは、3の倍数ではない時には、普通の状態に戻す「reset」関数を呼び出すようにしてみましょう。

if (3の倍数なら) {
  bakuhatsu();
} else {
  reset();
}
javascript

あるいは、

reset();
if (3の倍数なら) {
  bakuhatsu();
}
javascript

このようにして、条件にかかわらず「reset」関数を呼び出しても良いですね。
ただ、もし3の倍数だった時に、「reset」関数と「bakuhatsu」関数が続けて呼び出されてしまい、「reset」関数を呼び出すことが無駄になってしまう(「bakuhatsu」関数で背景がどのみち上書きされる)ので、前者の方がより良いでしょう。

答え合わせ

さて、うまく変更ができ、爆発した状態と普通の状態が切り替わるところを確認出来たでしょうか。
作った計算機が実際に他のユーザーに使われるシーンを想像してみると、「状態」という言葉の意味への理解がより深くなるでしょう。

今回の授業はここで終わりです。お疲れさまでした。
こちらのリンクから全体の変更を反映した「kadai.js」をみることができます。
ご自分の変更と見比べてみてください。