パソコン活用研究5番街(Visual Basic、Excel(VBA)、BASIC プログラミング研究)
While .... Wend
While ... Wend 使ってますか。おじさんはC言語ではよく使いますが、Basicではあまり使わないですね。
For ... Next や If文とGotoの組み合わせで処理してしまうことが多いです。みなさんもそうかもしれません。
あえてWhile ... Wend 使わなくてもなんとかなることが多いですから。でも、While
... Wend を使った方が便利
な場合も存在します。
今回は、While ... Wend の使い方を研究してみたいと思います。
1 While ... Wend 書式
While 式
...
Wend
という書式で使います。式の値が真(通常は0でない)の場合、While ... Wend
ループが繰り返されます。
例えば以下のように使います。Helloを10回表示するプログラムです。
10 A=0 20 While A<10 30 Print "Hello" 40 A=A+1 50 Wend |
でもこれは、
10 For A=0 to 9
20 Print "Hello"
30 Next
ともっと簡単に書けてしまうし、
10 A=0
20 Print "Hello"
30 If A<10 Then A=A+1: Goto 20
とも書けてしまうので、While ... Wend のありがたみはまったくありません。
2 While ... Wend のありがたみ
データ数の決まっていないデータの読み込みをする場合も非常に多いと思います。このような場合、
For ... Next を使っても記述できますが、While ... Wend の方がスマートな記述ができます。
While ... Wend の場合は、データの終わりを示すマーク(よく-9999とか、/,*などを終わりのマークとする)
が入力されるまで、入力し続けるようにコードを記述します。
例えば、非常によくある例ですが、生徒名とテストの点数を入力するプログラムは、以下のようになります。
生徒名に何も入力しない場合に、終了とすることにします。
10 i=1 20 input"生徒名",name$(i) 30 while name$(i)<>"" 40 input"点数",ten(i) 50 i=i+1 60 input"生徒名",name$(i) 70 wend 100 for k=1 to i-1:print name$(k);ten(k):next |
と、これでほぼWhile ... Wendは終わりですが、上記のプログラムをより実用的にするには、誤入力した場合に
訂正する機能が必要です。誤入力の訂正には、最低1つ前のデータに戻って、入力しなおすことができれば
十分です。ここでは、生徒名に*を入力するとひとつ前に戻って訂正できる機能をつけてみます。
10 i=1 20 input"生徒名",name$(i) 30 while name$(i)<>"" 40 input"点数",ten(i) 50 i=i+1 60 input"生徒名",name$(i) 70 if name$(i)="*" then i=i-1:goto 60 80 wend 100 for k=1 to i-1:print name$(k);ten(k):next |
実行例です。まあ、訂正機能はプリミティブなものですが、一応機能しています。
ま、気がむいたらWhile ... Wend 使ってみて下さい。
TOP PAGE >Basic活用研究目次