四則演算を使う ~ プログラムが魔法でないとわかればプログラマになれる 11

計算は真っ先に行われる

プログラムには計算を行う命令があります。足す、引く、掛ける、割る、など数学の式と同じように使うことができます。

let answer = 1 + 2;
alert(answer);

このプログラムをウェブブラウザで動かすと 3 と表示されます。 1行目は 1 + 2answer という名前で呼べるようにする命令です。2行目は alert() (画面に表示するための命令)に answer を入れています。つまり「画面に answer の内容を表示」という意味です。もっといえば「画面に 1 + 2 を表示」となります。さて、画面に 1 + 2 と表示されそうなものですが実際に表示されるのは 3 です。コンピュータはいつの間に計算をしてしまったのでしょうか。

プログラムには動く順番があります。一つの命令の中でもどこから動かすべきなのか順序が決まっています。

let answer = 1 + 2;

この命令には + という記号が使われています。 + の意味は私たちが日常で使う足し算と同じです。命令の中に + が存在するとまず + の計算を先にすることになっています。「1 + 2」が先に計算されますので、次の命令と同じであると言えます。

let answer = 3;

1行目の段階で answer は「1 + 2」ではなく「3」を指していたのです。ですので先ほど述べた「画面に 1 + 2 を表示」は間違いということになります。1行目の段階で 1 + 2 という は消えており 3 という内容だけが残っているのです。

計算を先にする、というルールは + に限らず計算に使う記号であればどれも同じです。四則演算にはそれぞれ - (引き算)、 * (掛け算)、 / (割り算)を使います。「マイナス」「アスタリスク」「スラッシュ」と読みます。

それでは少し複雑な計算を試してみましょう。

let answer = 1 + 2 * 3;
alert(answer);

* は掛け算の記号です。さて、 answer の指す内容は何でしょうか。「1 + 2 * 3」は数学の「1 + 2 x 3」と同じです。数学では足し算よりも先に掛け算を計算しなければなりません。「2 x 3」先に計算して「6」になるので「1 + 6」となり答えは 7 です。プログラムもこの数学のルールと同じ順番で計算します。このプログラムを動かすと画面に 7 と表示されます。

数字と数値

少し意地悪な問題を考えてみましょう。頭の体操だと思ってください。

let answer = 1 + 2;
alert(answer);

このプログラムを動かすと 3 と表示されますが、そうではなく「1 + 2」という式そのものを表示したかったとします。どうすれば良いでしょうか。このままでは 1 + 2 の部分が真っ先に計算されて 3 になってしまいますから、そうさせないために「計算するな」とコンピュータに伝えなければなりません。答えはこうです。

let answer = "1 + 2";
alert(answer);

「1 + 2」の部分を「"1 + 2"」に変更しました。 " を使って式の部分を囲みました。この方法は別のプログラムでも説明しました。

alert("こんにちは");

このとき " で囲む理由を「単なる文字として扱いたいから」と説明をしましたが「1 + 2」を単なる文字として扱う、つまり計算しないでそのままにしておくことをコンピュータに伝えています。

なお「数字」というと、単なる文字としての数なのかコンピュータが計算する数なのか意味が曖昧になりますので、コンピュータが計算する数を「数字」とは言わずに「数値」と言います。


>>続きを読む
>>全記事を見る

<最新話にご興味があればフォローお願いします>

この記事が気に入ったらサポートをしてみませんか?