VBSプログラミング最初の一歩 VBScript

配列とfor文

では今度も同じ配列を使って、配列の内容を順番に表示させるプログラムを作ってみましょう。

Dim kotae(3)

kotae(1)="コーヒー"
kotae(2)="紅茶"
kotae(3)="ジュース"

MsgBox kotae(1)
MsgBox kotae(2)
MsgBox kotae(3)

このプログラムでは順番に「コーヒー」「紅茶」「ジュース」と画面に出てきます。それは最後にMsgBoxを三回行っているためです。

しかし、このMsgBoxの三連続、よく見ると添え字の数字が違うだけです。添え字が1,2,3と順番に続いています。ここを変数にして、繰り返し文を使えばMsgBoxを一回書くだけですみそうです。

Dim kotae(3)

kotae(1)="コーヒー"
kotae(2)="紅茶"
kotae(3)="ジュース"

for i=1 to 3
	MsgBox kotae(i)
next

今度は最後の三連続MsgBoxのところがfor文になっています。for文のカウンタ変数 i は1から3まで変化します。そして、for文の中ではMsgBox で kotae(i) を表示しています。

iは最初は1ですからkotae(1)を表示し、次にiが2になってkotae(2)を表示、最後にkotae(3)を表示して繰り返しを終わります。これはやっていることはMsgBoxの三連続と同じですが、MsgBoxは一回だけしか書かずにすみます。

では、この三連続MsgBoxよりfor文の方がいいのはなぜでしょうか?
一つには、配列の要素数が増えたときに対処が簡単だからです。今は3つですが、これが10個になったらどうでしょう。最初の例ではMsgBoxを要素数だけ増やさなくてはなりませんのでプログラムがどんどん長くなっていきますが、for文のほうでは3を10に書き換えるだけです。10個ならまだしも100個になるとfor文でなければ大変です。

そして、表示方法を変更したいときにもfor文の方が簡単に対処できます。
たとえば、

MsgBox "飲み物は" & kotae(1)

のように表示したくなったとしましょう。最初の例の場合、三連続MsgBoxの全ての行を書き換えなくてはならなくなります。しかし、for文では一カ所しかMsgBoxがないのでそこだけ書き換えればいいわけです。

このようにfor文を使って配列を扱うと非常に便利なことがいろいろと出来ます。
for文は配列と相性がいいのです。

問題8-2
数を入力しある値だったら正解、という数あてゲームを5回繰り返す。一回目は5を入力すれば正解、二回目は3、三回目は8、四回目は9、5回目は1を入力すれば正解とする。
間違えた場合にも、次の問題に進む。