Win32プログラミング講座 〜 Step2. If文、For文、その他のプログラム制御命令 〜


今回は、プログラムの流れを変える命令を紹介します。ここまでは上から下に向かってプログラムが流れていましたが、ここでは、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)

さて、文字列の内容は無視して、プログラムの流れだけを見ましょう(笑)。
MessageBox関数の第4パラメータのMB_YESNOは、「はい」「いいえ」のボタンを持つメッセージボックスを表示せよ、という意味を指しています。MB_YESNOを指定すると、MessageBoxの戻り値として、IDYES、またはIDNOが返ります。IDYES、IDNOは「定数」と呼ばれ、あらかじめ任意の数値が代入されているものだと思っておきましょう。ここでは、変数UserMsgに戻り値を代入し、If文の条件分岐でアタリ、ハズレを見分けています。

For文でループを行う

ある計算を、任意の回数だけ繰り返して行うのが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になると)ループを抜け出す仕組みになっています。

前へ戻る - 次へ進む
トップへ戻る


©2005 Discoversoft