1946年(昭和21年)、世界最初のコンピュータ ENIAC が、アメリカ陸軍の大砲の弾道計算を行うために開発された。厳密に言うと ENIAC はプログラミング可能なコンピュータではなかったが、1954年(昭和29年)、IBMのジョン・バッカスらにより、科学技術計算ができる世界最初のプログラミング言語 FORTRAN が考案された。
電卓が登場するのは、これより後、1960年代のことである。
コンピュータとプログラミング言語は、科学術計算からスタートした。そこで今回は、四則演算の書き方と、変数を使った計算式について学ぶことにしよう。
コンピュータとプログラミング言語は、科学術計算からスタートした。そこで今回は、四則演算の書き方と、変数を使った計算式について学ぶことにしよう。
サンプル・プログラム
四則演算
9: <script>
10: document.write(1 + 2);
11: </script>
"add1.html" は、\( 1 + 2 \) の計算結果を表示するプログラムだ。
前回、"hello.html" を表示するプログラムでは write メソッドの中のメッセージをシングルクォーテーション(またはダブルクォーテーション)で囲んだが、今回はそれがない。シングルクォーテーション(またはダブルクォーテーション)で囲まないと、JavaScriptはそれを数式をみなして計算(評価)し、その結果を表示する。
計算に使う四則演算子があり、足し算は +、引き算は -。この2つは算数と同じだ。
かけ算は *(アスタリスク)、割り算は /(スラッシュ)となる。注意が必要だ。
前回、"hello.html" を表示するプログラムでは write メソッドの中のメッセージをシングルクォーテーション(またはダブルクォーテーション)で囲んだが、今回はそれがない。シングルクォーテーション(またはダブルクォーテーション)で囲まないと、JavaScriptはそれを数式をみなして計算(評価)し、その結果を表示する。
計算に使う四則演算子があり、足し算は +、引き算は -。この2つは算数と同じだ。
かけ算は *(アスタリスク)、割り算は /(スラッシュ)となる。注意が必要だ。
9: <script>
10: let c;
11: c = 1 + 2;
12: document.write(c);
13: </script>
プログラミング言語にも変数という仕組みがあり、計算結果などを一時的に保存できる。プログラムを終了すると、その内容は消えてしまう。
先ほどのプログラムを改造し、\( 1 + 2 \) の計算結果を変数 c に保存し、その c の内容を表示するプログラム"add2.html" にしてみた。= は、\( 1 + 2 \) の計算結果を変数cに代入するという意味で、等号ではない点に注意してほしい。
まず、let により、変数 c を使うと宣言する。
JavaScriptの場合、変数の宣言を行わなくても動くのだが、多くのプログラミング言語では事前に変数の宣言を求めている。
また、あとでプログラムを改造するとき、どんな変数を使っているのかを分かりやすくする意味でも、プログラムの冒頭で変数宣言をしておいた方がよい。
変数名として使える文字は、プログラミング言語によって異なる。
JavaScriptでは、半角英数字(大文字・小文字を区別する)、_(アンダースコア)、$(ドル記号)ではじまる文字を変数名として使える。長さに制限はない。
変数名の付け方(命名規則)は、さまざまな考え方がある。会社によっては命名規則を定めているところもある。チームでプログラム開発するとき、その変数が何を意味するか一目で分かるようにするためだ。
方程式で使う係数のようなものは a, b, c‥‥、方程式における変数はx, yなどとすることが多い。また、整数はi(integer), j, k、またはn(number), m。メッセージ(文字列)はsで始まる英単語にすることが多い。
こうした命名規則は、追い追い説明していくことにする。
先ほどのプログラムを改造し、\( 1 + 2 \) の計算結果を変数 c に保存し、その c の内容を表示するプログラム"add2.html" にしてみた。= は、\( 1 + 2 \) の計算結果を変数cに代入するという意味で、等号ではない点に注意してほしい。
まず、let により、変数 c を使うと宣言する。
JavaScriptの場合、変数の宣言を行わなくても動くのだが、多くのプログラミング言語では事前に変数の宣言を求めている。
また、あとでプログラムを改造するとき、どんな変数を使っているのかを分かりやすくする意味でも、プログラムの冒頭で変数宣言をしておいた方がよい。
変数名として使える文字は、プログラミング言語によって異なる。
JavaScriptでは、半角英数字(大文字・小文字を区別する)、_(アンダースコア)、$(ドル記号)ではじまる文字を変数名として使える。長さに制限はない。
変数名の付け方(命名規則)は、さまざまな考え方がある。会社によっては命名規則を定めているところもある。チームでプログラム開発するとき、その変数が何を意味するか一目で分かるようにするためだ。
方程式で使う係数のようなものは a, b, c‥‥、方程式における変数はx, yなどとすることが多い。また、整数はi(integer), j, k、またはn(number), m。メッセージ(文字列)はsで始まる英単語にすることが多い。
こうした命名規則は、追い追い説明していくことにする。
9: <script>
10: let c = 1 + 2;
11: document.write(c);
12: </script>
"add3.html" のように、変数宣言と同時に計算結果を代入することもできる。
9: <script>
10: let a = 1, b = 2;
11: let c = a + b;
12: document.write(c);
13: </script>
"add4.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 と表示する。
\( 1 \div 2 \) は割り切れるので 0.5 と表示する。
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.33333‥‥ と表示する。
電卓と同じで、JavaScriptの数値計算は整数または小数で、分数を扱うことはできない。割りきれない数は、このように循環小数となってしまう。
電卓と同じで、JavaScriptの数値計算は整数または小数で、分数を扱うことはできない。割りきれない数は、このように循環小数となってしまう。
剰余算
9: <script>
10: let a = 7, b = 3;
11: let d = a % 3;
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 であることを表示できる。"mod1.html" をご覧いただきたい。
まず剰余演算子を使って余り d を求める。次に、割られる数から余り d を引き算して割ってやれば、商 c を求めることができる。
JavaScriptには余りを求める剰余演算子 %(パーセント記号)が用意されており、これを使うと、\( 7 \div 3 \) が 2 あまり 1 であることを表示できる。"mod1.html" をご覧いただきたい。
まず剰余演算子を使って余り d を求める。次に、割られる数から余り d を引き算して割ってやれば、商 c を求めることができる。
練習問題:四則計算と変数
コラム:プログラム電卓
私が初めてプログラムらしいプログラムを作ったのは、1979年(昭和54年)のこと。まだパソコンが無かった時代で、中学生にとっては大型電算機にアクセスするつてもなく、生徒会ではタイガー計算器が現役だった。
そんな中、カシオのプログラム電卓「FX-502P」を購入した。「プログラム・ライブラリ」という分厚い書籍が同梱されており、基本的なアルゴリズムから統計処理まで、この書籍を読みながらプログラムを打ち込んで勉強した。
そんな中、カシオのプログラム電卓「FX-502P」を購入した。「プログラム・ライブラリ」という分厚い書籍が同梱されており、基本的なアルゴリズムから統計処理まで、この書籍を読みながらプログラムを打ち込んで勉強した。
やがて、目的とするハレー彗星の位置予報プログラムが完成した。このあたりの経緯は「プログラム電卓『FX-502P』でプログラミングを学ぶ」で紹介している。
そういう意味では、私も科学技術計算からプログラミングを始めた人間である。
「コラム:テキストエディタのすすめ」に書いたように、私は様々なプログラミング言語を経験してきたが、それぞれの言語には、プログラムを書くためのセオリー(文法)がある。が、大雑把に言うと、科学技術計算向きのプログラミング言語の文法は、だいたいJavaScriptに似ている。LispやPrologのプログラムを書くのでなければ、本シリーズで学んだ知識が役に立つだろう。
そういう意味では、私も科学技術計算からプログラミングを始めた人間である。
「コラム:テキストエディタのすすめ」に書いたように、私は様々なプログラミング言語を経験してきたが、それぞれの言語には、プログラムを書くためのセオリー(文法)がある。が、大雑把に言うと、科学技術計算向きのプログラミング言語の文法は、だいたいJavaScriptに似ている。LispやPrologのプログラムを書くのでなければ、本シリーズで学んだ知識が役に立つだろう。
(この項おわり)