next up previous contents index
: for による繰り返し : JavaScript 言語を通してみる情報処理のしくみ : JavaScript による計算   目次   索引

変数と簡単なプログラム

JavaScript では変数を利用できる.

例題 2.3   半径 R を入力したら, R を半径とする円の面積 と周の長さを出力するプログラムを書け. 半径 $0$ を入力するとプログラムを終了するように書くこと.

次のようなファイル ex3.html を作成せよ.

<script language="JavaScript">

  R = 1;
  while( R > 0) {
    R = prompt("半径をいれて 
         (0 以下の数をいれると終了) ",0);
    document.write("面積=", 3.14*R*R,"<BR>");
    document.write("円周=", 3.14*2*R,"<BR>");
  }

</script>

while 文は次のように書く:

while (条件) { 条件が成立するときに実行するコマンド列 }
コマンド列はセミコロン ; で区切る必要がある. この場合は, 条件に R > 0 が入っているので, R が正である限り, 何度でもこのループを実行する. while ループについては, 3.1 節も参照.

R = prompt() は, 入力を求める window を開く. 入力された数字を変数 R に格納する.

if (R == 0) { A } R$0$ に等しいとき A を実行せよという意味である. while 文は条件がみたされた場合, あとに続くブロックを何度でも 繰り返すが, if 文は条件がみたされた場合, あとに続くブロックは 1 度だけ実行される.

R を明示的に数値データに変換するには, 関数 eval を用いる. いまの場合は次のように eval で数値データに変換 しておく方がトラブルが少ない.

    R = prompt("半径をいれて",0);
    R = eval(R);

実行例 ($3$ を半径として入力した場合):

面積=28.259999999999998
円周=18.84

``かつ''(and), ``または''(or), ``否定''(not) などは, 高校数学で 習ったことと思う. 計算機のプログラムを書く場合は, これらを括弧で合成してより複雑な 条件判断を行うことが多い. これらにつき詳しく述べることはこの講義の目的ではないので, ここでは, 条件判断のための表現をまとめておくにとどめる.

記号 意味
== ひとしいか? X == 1 ( ${\tt X}=1$ か?)
!= ひとしくないか? X != 1 ( ${\tt X}\not=1$ か?)
! でない(否定) !(X==1) ( ${\tt X}\not=1$ か?)
&& かつ (X < 1) && (X > -2) ( ${\tt X} < 1 かつ {\tt X} > -2$ か?)
|| または (X > 1) || (X < -2) ( ${\tt X} > 1 または {\tt X} < -2$ か?)
念のために, ``かつ'' と ``または'' の定義を復習しておく. 次の表では, T で 真 (True) を, F で 偽 (False) を表す.
A B A && B
T T T
T F F
F T F
F F F
    
A B A || B
T T T
T F T
F T T
F F F

条件判断を括弧でくくって合成してもよい. たとえば

((1 == 1) || false) && true
は真 (T) となる.

無限ループについて
さて 次のようなプログラムを考えよう.

<script language="JavaScript">

  R = 1;
  while( R > 0) {
    R = prompt("半径をいれて (0 以下の数をいれると終了) ",0);
    R = eval(R);
    document.write("面積=",
                   3.14*R*R,"<BR>");
    document.write("円周=",
                   3.14*2*R,"<BR>");
    R = eval(1);
  }

</script>
R = eval(1); があるために while の条件が常にみたされて, このプログラムの while ループは永遠に繰り返される. 永遠に終わらないループを無限ループと呼ぶ.

条件文を間違えるとかのプログラムミスで 不幸にして無限ループに陥り, プログラムを停止しなければいけない事態になったときは, 停止したいプログラムをマウスで選択しておいて, ctrl を押しながら, alt を押しつづけ, さらに del を押す. この操作を ctrl-alt-del と書くことが多い. ``スリーフィンガー'' と呼ばれることもある.

変数名:
JavaScript では, 英字 A-Z, a-z または _ で始まる 英数字または _ からなる文字列を変数名として利用可能である. 大文字と小文字が区別される.

練習 2.3   入力した数の平方根を出力するプログラムを作成せよ.

参考: 計算機の主要部分は

CPU(中央演算装置)メモリー(記憶装置)
である. 変数に格納されるデータはメモリーに 2 進数(0, 1 のみからなる数) として格納される. またプログラム自体もメモリーに格納されている. メモリーは有限の大きさしか持たない. 四則演算や条件判断文 (if 文) は, 機械語に変換されたあと, CPU で実行されている. 機械語というのは, 計算機言語の一種であるが, JavaScript より 命令の種類がはるかに制限されている. JavaScript 言語は, C 言語や Java 言語に似た文法をもつある程度抽象化された 言語であるが, それが実際の計算機で機械語に翻訳されたあと, どのように実行されるのか 常に想像しながら使用するのと, そうでないのとは, 大きな違いがある. 達人への道を歩もうという人は, 抽象化された 言語で書かれていようが, 実際の計算機でどのように実行されるのか をわかっていないといけない. プログラム実行中のメモリ使用の様子を手にとるように 描写できるようになれば, 計算機の達人への道は間違いなしである.


next up previous contents index
: for による繰り返し : JavaScript 言語を通してみる情報処理のしくみ : JavaScript による計算   目次   索引
Nobuki Takayama 平成15年12月5日