配列とfor文
では今度も同じ配列を使って、配列の内容を順番に表示させるプログラムを作ってみましょう。var kotae = new Array(3); kotae[0]="コーヒー"; kotae[1]="紅茶"; kotae[2]="ジュース"; alert(kotae[0] + "<br>"); alert(kotae[1] + "<br>"); alert(kotae[2] + "<br>");
このプログラムでは順番に「コーヒー」「紅茶」「ジュース」が改行されて画面に出てきます。それは最後にalertを三回行っているためです。
しかし、このalertの三連続、よく見ると添え字の数字が違うだけです。添え字が0,1,2と順番に続いています。ここを変数にして、繰り返し文を使えば表示部分のalertを一回書くだけですみそうです。
var kotae = new Array(3); kotae[0]="コーヒー"; kotae[1]="紅茶"; kotae[2]="ジュース"; for(i=0;i<3;++i) { alert(kotae[i] + "<br>"); }
今度は最後の三連続alertのところがfor文になっています。for文のカウンタ変数 i は0から2まで変化します。そして、for文の中では alert で kotae[i] を表示しています。
iは最初は0ですからkotae[0]を表示し、次にiが1になってkotae[1]を表示、最後にkotae[2]を表示して繰り返しを終わります。これはやっていることは最初のプログラムと同じですが、alertは一回だけしか書かずにすみます。
では、このプログラムが最初のプログラムより良いのはどういう点でしょうか?
一つには、配列の要素数が増えたときに対処が簡単だからです。今は3個ですが、これが10個になったらどうでしょう。最初の例ではalertを要素数だけ増やさなくてはなりませんのでプログラムがどんどん長くなっていきますが、for文のほうでは3を10に書き換えるだけです。10個ならまだしも100個になるとfor文でなければ大変です。
そして、表示方法を変更したいときにもfor文の方が簡単に対処できます。
たとえば、
alert("飲み物は" + kotae[i] + "<br>");
のように表示したくなったとしましょう。最初の例の場合、alertの全ての行を書き換えなくてはならなくなります。しかし、for文では一カ所しかalertがないのでそこだけ書き換えればいいわけです。
このようにfor文を使って配列を扱うと非常に便利なことがいろいろと出来ます。
for文は配列と相性がいいのです。
問題8-2
数を入力しある値だったら正解、という数あてゲームを5回繰り返す。一回目は5を入力すれば正解、二回目は3、三回目は8、四回目は9、5回目は1を入力すれば正解とする。間違えた場合にも、次の問題に進む。