条件分岐 ( If...Then...Else )
if文とは、ある条件によって行なう処理を分岐させたいときに使用します。 ある条件を指定してその条件に合うのか否かを判定し、その判定に応じた処理をしたい時に使います。 If文の基本的な使用方法を記述しますので、それぞれどのような動作をするのか見てください。
ある条件が真の時だけ特定の処理を実行したい場合に使用
[ 表記法 ]
If 条件 Then
処理ブロック
End If
[ フローチャート ]
実行するステートメントが1行のみの時 End If は省略する事が出来る
[ 表記法 ]
If 条件 Then 処理ブロック
[ フローチャート ]
真の時/偽の時の処理も記述出来ます。 ( else )
[ 表記法 ]
If 条件 Then
条件が真の処理
Else
条件が偽の処理
End If
[ フローチャート ]
真の条件を複数記述する場合( ElseIf 〜Then )
[ 表記法 ]
If 条件1 Then
条件1が真の処理
ElseIf 条件2 Then
条件2が真の処理
End If
[ フローチャート ]
多岐分岐 ( Select...Case )
select 文とは、ある条件の値によって、複数の処理ブロックのいずれかを実行させる時に使用します。
[ 表記法 ]
Select Case 値
Case 条件
処理ブロック
Case 条件
処理ブロック
Case Else
処理ブロック
End Select
[ 表記法 ]
Select Case wk
Case 1
Response.Write("Sun")
Case 2
Response.Write("Mon")
Case 3
Response.Write("Tue")
Case 4
Response.Write("Wed")
Case 5
Response.Write("Thu")
Case 6
Response.Write("Fri")
Case 7
Response.Write("Sat")
Case Else
Response.Write("Error")
End Select
この Select ステートメントは変数 wk の値によって出力するメッセージを変更します。 wkが 1であれば [ Sun ] と出力し wkが 2であれば [ Tue ] 、 wkが 7であれば [ Sat ] と出力します。もし wk が 1〜7 の範囲外であれば Case Else の処理ブロックが実行されます。
Caseはこのような一つの数値ではなく [ 変数 > 1 ] のような条件を指定する事が出来ます。 ここで少し疑問が沸いてきます 「 複数の Case文で真となる場合はどうするんだろう? 」 と言う事です。 しかしこのような場合は、 初めに真となった Caseブロックを終了した時点でこの Select文から抜ける事になります。
繰り返し ( Do Until...Loop , Do While...Loop )
処理を指定回数繰り返し行ないたい場合、VBScriptでは Do 〜 の繰り返し命令を使用する事が出来ます。 指定された条件が真 (True) になるまで、または、条件が真 (True) である間処理ブロックを繰り返し実行します。
指定された条件が真(True)になるまで処理ブロックを繰り返す
Do Until 条件
処理ブロック
Loop
[ 1〜10まで出力する ]
Cnt = 1
Do Until Cnt > 10
Response.Write(Cnt)
Cnt=Cnt+1
Loop
指定された条件が真(True)の間処理ブロックを繰り返す
Do While 条件
処理ブロック
Loop
[ 1〜10まで出力する ]
Cnt = 1
Do While Cnt <= 10
Response.Write(Cnt)
Cnt=Cnt+1
Loop
後判定
いままで上で説明してきたのは全て 前判定と呼ばれる判定方法になります。 前判定/後判定とは何かと簡単に言ってしまうと、[ ループの何処で条件の判定を行うか ] と言う事です。 つまりステートメントを実行する前に条件を判断するのが前判定で、ステートメントの実行後に条件を判断するのが後判定となります。
[ 後判定の例 ]
Do
Response.Write("Hello World")
Loop Until 11 > 10
上のサンプルが後判定の構文になります。条件を見ると 11 > 10 で初めから真となっていますね。前判定ではステートメントを実行せずにループを抜けますが、後判定なのでステートメントを実行後条件を判定しているのです。 [ 後判定では少なくとも一回はステートメントを実行する ] という事が言えます。
繰り返し ( While...Wend )
指定された条件が真 (True) である間処理ブロックを繰り返し実行します。
[ 表記法 ]
while 条件
処理ブロック
Wend
[ フローチャート ]
繰り返し ( For / For Each )
繰り返し ( For..Next )
for 文は回数指定で処理する場合や配列の要素全てに処理する場合に良く使用されます。 ※終了条件は Perl では偽になるまで、VBScript では真になるまでと異なりますので Perl に慣れている方は注意して下さい。
for 初期値 To 終了条件 Step 増分値
処理ブロック
Next
[ カウンタがある数値になるまで処理を繰返す ]
For a = 1 To 10 Step 1
Response.Write(a)
Next
a の値を初期値で指定した1から増やしながら終了条件である 10になるまでステートメントを繰り返します。カウンタとして使用されている aは1ずつカウントアップされていきます。1であればこの指定は省略する事が出来ます。
繰り返し ( For Each...Next )
配列やコレクションの各要素を全て参照して、全ての要素を参照し終わった時点で繰り返しを終了します。
For Each 変数 in ( 配列/コレクション )
処理ブロック
}
[ 配列の全ての要素に対して処理を行う ]
Dim intArr(10)
Dim intTmp
For intTmp = To 10
intArr(intTmp)=intTmp
Next
For Each intTmp in intArr
Response.Write(intTmp)
Next
配列 intArrは 0〜10の要素を持つ配列です。上の Forで初期化して下で参照しているだけですが、下の For では For Each を使用しているので、 配列の要素全てが順に変数 intTmpに代入されて、要素全てを参照し終わった段階でこのループを自動的に抜けてくれます。 非常に使い勝手の良い命令なのでぜひとも使いこなしたいですね。
ループ制御
Exit Do / Exit Forステートメントはそれぞれ Do...Loop / For...Next の繰り返しの途中で使用する事が可能で、使用すると実行している1番内側のループを抜けます。
Do While 1
Exit Do
Loop
終了条件に真となる1を指定している事により、何もしなければこの記述は永久ループになってしまいます。 Exit Doステートメントを実行する事でこの繰り返しを抜ける事が出来ます。
|