If文

(動作は問題ないがクイズに問題がある。
1問目の答えがダートマス大学が正解なのに2問目はベル研が不正解。これはおかしい 直した。)


今回は、プログラムの流れを変える命令を紹介しまっせ。ここまでは上から下に向かってプログラムが流れとったんやが、ここでは、If文、For文をはじめとする機能を利用してプログラムの流れを制御していきまんねん。

まずはIf文の構造を見てみまひょ。

If 条件式 Then
    条件が真の場合に実行するプログラム
Else
    条件が偽の場合に実行するプログラム
End If

この構造を見ていただければ、あまり込み入った解説はいりまへんなぁ。これや以外にも、If文の書き方は色々あるんやが、ここでは省略しておきまっせ〜(ねちっこくはヘルプファイルをご覧おくんなはれ)。

試しに、○ペケクイズを出題するプログラムを作ってみまひょ(管理人のセンスが問われる微けったいな内容やけど…)。


Dim UserMsg As Long
Dim q1 As String
Dim q2 As String
Dim Answer As String

q1="初代BASIC言語はハーバード大学で作られた。○(はい)か×(いいえ)か?"
q2="初代C言語はベル研究所で作られた。○(はい)か×(いいえ)か?"

UserMsg=MessageBox(0,q1,"問題1",MB_YESNO)
If UserMsg=IDYES Then
	Answer="ハズレ。"
Else
	Answer="アタリ。"
End If
Answer=Answer+"ダートマス大学が正解です。"
MessageBox(0,Answer,"解答1",MB_OK)

UserMsg=MessageBox(0,q2,"問題2",MB_YESNO)
If UserMsg=IDYES Then
	Answer="アタリ。"
Else
	Answer="ハズレ。"
End If
MessageBox(0,Answer,"解答2",MB_OK)



For文

(コンパイル→Avira AntiVirが反応…)

ある計算を、任意の回数だけ繰り返して行うのがFor文の役目や。

For カウンタ変数=初期値 To 終値 [Step 増分]
    ループ内部のプログラム...
Next

"Step 増分" を省略すると、増分に1がセットされまんねん。試しに、For文を利用して1+2+3+...+10の計算を行ってみまんねん。

Dim i As Long
Dim sum As Long
Dim buffer As String

For i=1 To 10
	sum=sum+i
Next

buffer="1+2+3+...+10=" + Str$(sum)
MessageBox(0,buffer,"For文のテスト",MB_OK)

このプログラムでは、"sum=sum+1" ちう演算が10回行われることになるんですわ。変数iの値が10を超えると(11になると)ループを抜け出す仕組みになっとりまんねん。