第3回 合計を出してみよう

 当館のフォートランの部屋に合計を出すプログラムがおいてあります。同じことをJavaScriptでやってみましょう。フォートランと同じように合計を出すには、ループ文つまり繰り返し計算をおこないます。JavaScriptでのループ文は、for文を使います。ベーシックに似てますね・・・。フォートランだとDo文です。JavaScriptでループ文の構造は

for(初期値;終了条件;継続処理){
任意の実行文;
}

のように記述されます。これをベーシックで書くと
for I=○○ to ○○ step ○○

next I

という記述になります。構造自体は同じです。表記方法がちがうだけです。 ベーシックでのstep幅のところが継続処理です。具体的な例を出したほうがわかりやすいでしょうね。たとえばiの値が1から10まで、1づづ増加していくループ文を作るなら

for(i=1;i<=10;i++){
任意の実行文;
}

と記述すればよいみたいです。ここでループの終了の条件ですがi=10でも良さそうなのですが、なぜか終了条件につかえる演算子は< > <= >= の4つだけです。(経済学の非負条件みたい・・・棒が多いけど、このコメントがわかるあなたは同業者でしょう)
 合計を出すなら、ループ文のなかには配列変数を使うのが便利です。JavaScriptでの配列変数は、まず次のような配列の宣言をおこなってから使用します。

X=new Array(10);

これで配列変数として10個の数値が代入できます。この配列の添え字は、かならず0から始まるそうです。フォートランやベーシックに慣れて人ほど、違和感をおぼえるはずです。きまりごとだから仕方ないですね。それではこの配列変数とループ文を組み合わせて1から3までの数を合計するプログラムを書いてみましょうか。

<SCRIPT language="JavaScript">
<!--
x=new Array(3);
total=0;
x[0]=10;
x[1]=20;
x[2]=50;
for(i=0;i<=2;i++){
total+=x[i];
}
document.write(total);
//-->
</SCRIPT>

このプログラムを実行すると80が答えとして表示されます。ここで間違いやすいのが、x[1]=20;をみると分かるように、配列変数は()でなく[]が使われているところです。私もここでつまづきました・・・。でもこれだと汎用性が全くないですね。そこで、第2回で学んだボタンを押すと入力を促す画面が表示されて、結果を表示するようにしてみましょう。

<SCRIPT language="JavaScript">
<!--
function quiz2(){
x=new Array(3);
total=0;
for(i=0;i<=2;i++){
x[i]=prompt("xの値を入力してください");
x[i]=eval(x[i]);
total+=x[i];
}
alert(total);
}
//-->
</SCRIPT>
<FORM><INPUT type="button" name="ボタン" value="押してね" onClick="quiz2()"></FORM>

このプログラムのポイントは、x[i]=eval(x[i]);の部分です。実はこれをいれないと数値を入力しても文字列として処理されて、計算結果が文字列の足し算になってしまいます。evalは文字列を数値として評価する(evaluate)関数です。では、以下の押してねというボタンを押してみてください。入力を促す画面が表示されるので、適当な数値を入力してください。繰り返し計算は3回にしているので3回入力してください。合計値が表示されますので。