条件付き命令文
条件付き命令文は、プログラミングにとって重要になります。
条件付き命令文がなければ、プログラムを制御することができません。
条件付き命令文(If)
プログラム中のある場所で次に何をどうするか?このような場合はこう動作させたい、という時に条件付き命令文を使用します。
例えば車を運転していて、目の前に十字路が見えたとします。
こんなときは If(もしも) I want to go home(家に帰りたい) Then(と思ったなら) U‐turn(Uターンしよう)というようなプログラムが書けますね。
上記のコードは一行で書く「条件付き1行命令文」になります。
1つの条件:If…Then
変数 $a が 1 ならば、プログラムを終了します。
Dim $a = 1
If $a = 1 Then Exit
2つの条件:If…Else…EndIf
変数 $a が 1 ならば、プログラムを終了し、変数 $a が 1 でないならば、メッセージボックスを表示します。
Dim $a = 2
If $a = 1 Then
Exit
Else
MsgBox(0, "変数 $a の値", " 変数 $a = " & $a)
EndIf
複数の条件:If…ElseIf…Else…EndIf
変数 $a が 1 ならば、プログラムを終了し、変数 $a が 0 ならば文字列のないメッセージボックスを表示。
上記 2つに当てはまらず、変数 $a が 1、または 0 以外ならば、変数 $a の値をメッセージボックスで表示します。
Dim $a = 0
If $a = 1 Then
Exit
ElseIf $a = 0 Then
MsgBox(0, "", "")
Else
MsgBox(0, "変数 $a の値", "変数 $a = " & $a)
EndIf
※ElseIf は、いくらでも追加することができます。
条件付き命令文(Select,Switch)
プログラムを書く中で、10 や 20、またはもっと多い条件を書く場合、「If…ElseIf…Else…EndIf」を使うのはおすすめしません。
プログラムが大きくなるだけでなく、コードの理解に時間がかかり、今後のコードのメンテナンスが容易にできなくなる場合があります。
そのような場合は、Select または Switchを使用してみましょう。
Select…Case…EndSelect
Dim $a = 1, $b = 1
Select
Case $a = 1; もしも $a が 1 なら
MsgBox(0, "", " 変数 $a = 1")
Case $b = 2; もしも $b が 2 なら
MsgBox(0, "", " 変数 $b = 2")
Case Else; もしも $a が 1 以外、かつ $b が 2 以外なら
MsgBox(0, "", " 変数 $a は 1 または 2 ではありません")
EndSelect
Switch…Case…EndSwitch
Switch @HOUR; 24時間表示でのクロックの時刻: 00-23
Case 6 To 11; もしも @HOUR が 6~11 なら
$sMsg = "おはようございます"
Case 12 To 17; もしも @HOUR が 12~17 なら
$sMsg = "こんにちは"
Case 18 To 21; もしも @HOUR が 18~21 なら
$sMsg = "こんばんは"
Case Else; それ以外なら
$sMsg = "まだお仕事中ですか?"
EndSwitch
MsgBox(0, "", $sMsg)
Select と Switch は基本的に同じ効果を持っていますが、状況に応じで使い分けてみてください。
条件付きループ
ループは一部の処理を繰り返し行いたい時に使用します。
ループには条件付きループと無限ループがあります。
For…To…Step…Next
Step 1 はループを1回まわすごとに 1カウント増やすという意味です。
1回まわると $i の値が1になり、2回目では $i の値が2になります。
$i = 0 To 5 $i の値が 0~5 ならばループを継続し、$i の値が 5になるとループを抜けます。
For $i = 0 To 5 Step 1
MsgBox(0, " 変数 $i の値 ", " 変数 $i = " & $i)
Next
MsgBox(0, "ループを抜けた時", " 変数 $i = " & $i)
実行するとわかりますが、ループを抜けた時の $i の値は「6」となっています。
次は Step – 1 となっていますので、ループを1回まわすごとに 1カウント減らすという意味になります。
For $i = 5 To 1 Step -1
MsgBox(0, " 変数 $i の値 ", " 変数 $i = " & $i)
Next
MsgBox(0, "ループを抜けた時", " 変数 $i = " & $i)
ループを抜けた時の $i の値は「0」となります。
例えば何度ループしたいのかがわからない、あるいは常にループしたい場合は無限ループを使用します。
無限ループは2種類あります。
While…Wend
ここでは $i < 100 と条件を指定して、$i の値が 100 になるまでループを繰り返すようにしています。
無限ループにする場合、While 1 または While True に変更します。
$i = 0
While $i < 100
$i = $i + 1
WEnd
MsgBox(0, "$i の値:", $i)
上記のコードを見てわかるように While は、条件が成立すればループし続けます。
While は、まず条件を判断してからループを行っていると言えます。
無限ループの例
$i = 0
While 1
$i = $i + 1
MsgBox(0, "$i の値:", $i)
WEnd
無限ループは主にウィンドウ上で起こっているイベントを取得する際に使用します。
上記のコードのように、無限ループ内に値の加算とメッセージボックスのみを記述した場合、ループを抜けることが出来ず無限ループ内のコードを実行し続けてしまいますので注意してください。
Do…Until
Do…Until は While と反対で、まずループを行ってから条件を判断しています。
ここでは $i < 100 と条件を指定して、$i の値が 100 より小さければループを終了するようにしていますので、結果は 1 になりますね。
$i = 0
Do
$i = $i + 1
Until $i < 100
MsgBox(0, "$i の値:", $i)
上記のコードを見てわかるように、キーワードによって動作が異なりますので、状況に応じて使い分けてみてください。
実際にプログラムを実行して結果を確認してみましょう。
コメント