while文
while文はfor文のように繰り返す回数を指定するのではなく、条件だけを指定します。たとえば、n が 10 のときに繰り返す、といった感じです。
n = 10 while n=10 str = InputBox("10を入力するとまた出ます") n = CInt(str) wend
このプログラムではまずnに10を代入しています。それからwhile文で条件 n = 10 を指定しています。この条件を満たしている間、プログラムを繰り返すわけです。while文の繰り返し命令はwhileの行から wendの行までです。繰り返し命令の中では値を入力するようにしています。入力した値をn の中に代入しているので、10を入力すればまた「値を入力してください」と出てきます。10以外を入力すれば、while文の条件を満たさなくなり、while文を抜けてプログラムは終了します。
☆while文の書き方1 while 条件式 繰り返す命令 wend
while文で注意しなければならないのは、いつかは条件が成立しなくなって、while文を終わるようにしなければならない点です。
たとえば、以下のプログラムを見てください。
n = 10 while n=10 MsgBox "test" wend
このプログラムのwhile文の条件式は n = 10 です。nには最初に10の値を代入していますから繰り返し命令の中に入ります。ところが、繰り返し命令では"test"と表示するだけでnの値を変化させることがありません。ですからnはいつまでたっても10のまま、ということになり永遠に繰り返しを続けます。この場合、プログラムを強制終了するしかありません。このように永遠に回り続けるループを「無限ループ」といいます。
無限ループにならないようにするためには、while文の条件部分で判定する変数が、繰り返しの中で変化しなければならないという点です。上の例で言うと変数nが繰り返しの中で変わっていかなければ、いつまでたってもnは10のままです。必ずnが変化するようにしておく必要があります。
では、while文の他の例も見てみましょう。
たとえば、入力された数から3を何回引けることが出来るか、というプログラムを作ってみましょう。
str = InputBox("値を入力してください") n = CInt(str) count=0 while n >= 3 n = n - 3 count = count + 1 wend MsgBox count
入力された数から3を何回引けるかがわからないので、これは回数を指定するfor文よりもwhile文が適しています。まず、nに入力された数を入れ、数を数えるための変数 count を0に初期化しておきます。次にwhile文を書きます。条件は nが3以上であることです。なぜならnが3以上でないと3を引くことが出来ないからです。そしてwhile文の中ではnから3を引き、countに1を加えます。そしてまだnが3以上であるならば同じことを行います。
while文を終了したときにはcountには何回3を引いたかが入っています。なぜなら、countは、nから3を引くたびに1を加えていたからです。
問題7-11
サイコロを振り(1~6の乱数を出し)その数を合計していきます。ただし、1が出たらそこで終了です(1も合計します)。それまでの合計を表示します。さいころを振るたびに値を表示してください。