1.3 四則計算と変数

(1/1)
ENIAC
ENIAC
1946年(昭和21年)、世界最初の汎用電子式コンピュータ ENIAC (エニアック)  が、アメリカ陸軍の大砲の弾道計算を行うために開発された。厳密に言うと ENIAC は、今日のようにプログラムを記憶装置に読み込んで動かすものではなく、配線を組み替えて計算手順を指定するコンピュータだった。その後、1954年(昭和29年)、IBMのジョン・バッカスらにより、科学技術計算ができる世界最初の高水準プログラミング言語 FORTRAN が考案された。
シャープ CS-10A
シャープ CS-10A
電卓が登場するのは、これよりさらに後の1960年代である。写真は、1964年(昭和39年)に発売された「[/culture/numbers/year/j1957-jp.shtm#Sharp_CS-10A:title=シャープ CS-10A」だ。

コンピュータとプログラミング言語は、科学技術計算からスタートした。そこで今回は、四則演算の書き方と、変数を使った計算式について学ぶことにしよう。

目次

サンプル・プログラム

四則演算

add1.html

   9: <script>
  10: document.write(1 + 2);
  11: </script>

"add1.html" は、$ 1 + 2 $ の計算結果を表示するプログラムだ。

前回の "hello.html" では、write メソッドに渡すメッセージをシングルクォーテーション(またはダブルクォーテーション)で囲んだが、今回はそれがない。シングルクォーテーション(またはダブルクォーテーション)で囲まないと、JavaScriptはそれを数式とみなして計算(評価)し、その結果を表示する。

JavaScriptには四則演算を行うための演算子が用意されており、足し算は +、引き算は - で、この2つは算数と同じだ。
かけ算は *(アスタリスク)、割り算は /(スラッシュ)で、算数の記号(×、÷)とは異なるので注意が必要だ。

変数

add2.html

   9: <script>
  10: let c;
  11: c = 1 + 2;
  12: document.write(c);
  13: </script>

数学で $ x $ や $ y $ を使うのと同じように、プログラミング言語にも変数という仕組みがあり、計算結果などを一時的に保存できる。保存されるのはプログラムが動いている間だけで、プログラムを終了すると、その内容は消えてしまう。
先ほどのプログラムを改造し、$ 1 + 2 $ の計算結果を変数 c に保存し、その c の内容を表示するプログラム "add2.html" にしてみた。= は、$ 1 + 2 $ の計算結果を変数 c代入するという意味で、等号ではない点に注意してほしい。

まず、let により、変数 c を使うことを宣言する。
JavaScriptの場合、変数を宣言しなくても動いてしまうのだが、多くのプログラミング言語では事前に変数を宣言することを求めている。
また、あとでプログラムを改造するとき、どんな変数を使っているのかを分かりやすくする意味でも、プログラムの冒頭で変数宣言をしておいた方がよい。

変数名として使える文字は、プログラミング言語によって異なる。
JavaScriptでは、半角英字(大文字・小文字を区別する)、半角数字、_(アンダースコア)、$(ドル記号)を変数名に使える。ただし、1文字目に数字を使うことはできない。長さに制限はない。

変数名の付け方(命名規則)は、さまざまな考え方がある。会社によっては命名規則を定めているところもある。チームでプログラム開発するとき、その変数が何を意味するか一目で分かるようにするためだ。
方程式で使う係数のようなものは a, b, c‥‥、方程式における変数は x, y などとすることが多い。また、整数には i(integer), j, k、または n(number), m を使い、メッセージ(文字列)には s ではじまる英単語を使うことが多い。
こうした命名規則は、追い追い説明していくことにする。

add3.html

   9: <script>
  10: let c = 1 + 2;
  11: document.write(c);
  12: </script>

"add3.html" のように、変数宣言と同時に計算結果を代入することもできる。

add4.html

   9: <script>
  10: let a = 1, b = 2;
  11: let c = a + b;
  12: document.write(c);
  13: </script>

"add4.html" のように、1つの let で複数の変数をまとめて宣言することもできる。このとき、変数どうしを ,(カンマ)で区切る。

割り算と小数

div1.html

   9: <script>
  10: let a = 1, b = 2;
  11: let c = a / b;
  12: document.write(c);
  13: </script>

"div1.html" は、割り算プログラムである。
$ 1 \div 2 $ は割り切れるので 0.5 と表示する。

div2.html

   9: <script>
  10: let a = 7, b = 3;
  11: let c = a / b;
  12: document.write(c);
  13: </script>

"div2.html" も割り算プログラムだが、$ 7 \div 3 $ は割り切れないので 2.3333333333333335 と表示する。
電卓と同じで、JavaScriptの数値計算は整数または小数で、分数を扱うことはできない。$ 7 \div 3 $ の答えは本来 2.333‥‥ と続く循環小数だが、JavaScriptは決められた桁数で打ち切った近似値を表示する。末尾が 5 になっているのは、この打ち切りによる誤差である。

剰余算

mod1.html

   9: <script>
  10: let a = 7, b = 3;
  11: let d = a % b;
  12: let c = (a - d) / b;
  13: document.write(c);
  14: document.write('...');
  15: document.write(d);
  16: </script>

小学3年生の算数では「あまりの出る割り算」を習う。
JavaScriptには余りを求める剰余演算子 %(パーセント記号)が用意されており、これを使うと、$ 7 \div 3 $ が 2 あまり 1 であることを 2...1 という形で表示できる。"mod1.html" をご覧いただきたい。
まず剰余演算子を使って余り d を求める。次に、割られる数 a から余り d を引き、それを割る数 b で割れば、商 c を求めることができる。

練習問題:四則計算と変数

コラム:プログラム電卓

カシオ FX-502P
カシオ FX-502P
私が初めてプログラムらしいプログラムを作ったのは、1979年(昭和54年)のこと。まだパソコンが一般に普及していない時代で、中学生にとっては大型電算機にアクセスするつてもなく、生徒会ではタイガー計算器が現役だった。
そんな中、カシオのプログラム電卓「FX-502P」を購入した。「プログラム・ライブラリ」という分厚い書籍が同梱されており、基本的なアルゴリズムから統計処理まで、この書籍を読みながらプログラムを打ち込んで勉強した。
やがて、目的とするハレー彗星の位置予報プログラムが完成した。このあたりの経緯は「プログラム電卓『FX-502P』でプログラミングを学ぶ」で紹介している。
そういう意味では、私も科学技術計算からプログラミングを始めた人間である。

コラム:テキストエディタのすすめ」に書いたように、私は様々なプログラミング言語を経験してきたが、それぞれの言語には、プログラムを書くためのセオリー(文法)がある。ただ、大雑把に言えば、科学技術計算向きのプログラミング言語の文法は、JavaScriptとよく似ている。LispやPrologのプログラムを書くのでなければ、本シリーズで学んだ知識が役に立つだろう。
(この項おわり)
header