If…Then…Else…EndIf
指定された条件分岐にしたがって命令を実行します。
書式
(1) If条件式 Then
ステートメントT1
.
.
[ElseIf 条件式 Then]
ステートメントT1
.
.
[Else]
ステートメントF1
.
.
EndIf
(2) If 条件式 Then ステートメントT1 [;ステートメントT2...] [Else ステートメントF1 [;ステートメントF2...]]
パラメーター
- 条件式
- 真偽値 (True/Falseの値)が戻る有効な条件式です。真 (True)の場合は"0"以外の数値を、偽 (False)の場合は、"0"を返します。 (下記の条件式例を参照してください。)
- ステートメントT1
- 条件式の値が真 (True)のとき、つまり、条件が満たされたときに実行されます。 (複数のステートメントをIf...Then...Else形式のブロックの中に記述できます。)
- ステートメントF1
- 条件式の値が偽 (False)のとき、つまり、条件が満たされなかったときに実行されます。(複数のステートメントをIf...Then...Else形式のブロックの中に記述できます。)
解説
(1) If...Then...Else は、条件が満たされたときにステートメントT1以降を実行します。条件が満たされなかったときは、ステートメントF1以降を実行します。If...Then...Else命令のElse部分は省略可能です。Else部分を省略し、条件が満たされなかったときは、EndIf以降のステートメントが実行されます。If...Then...Else ステートメントのブロックは、Elseの有無にかかわらず、EndIfで閉じてください。
(2) If...Then...Elseは、ブロック以外の形式で用いることも可能です。If...Then...Elseのステートメントをすべて同じ行に記述する方法です。この方法でIf...Then...Elseを用いる場合には、EndIfは必要ではありません。この行で記述されている条件式が満たされれば (条件式に対して真値 (True)であれば)、ThenとElse間のステートメントが実行されます。条件式が満たされなければ (条件式に対して偽値 (False)であれば)、Elseに続くステートメントが実行されます。If...Then...ElseのElse部分は必須ではありません。条件式が満たされない場合 (条件式に対して偽値 (False)の場合)でElseキーワードがなければ、制御はプログラム中の次のステートメントに移行します。
注意
条件式サンプル
- a = b: aとbが等しい
- a < b: aがbより小さい
- a >= b: aがbより大きいかまたは等しい
- a <> b: aとbが等しくない
- a > b: aがbより大きい
- a <= b: aがbより小さいかまたは等しい
論理演算子And, Or, Xorなども使うことができます。
条件式にTrueを使用する場合
定数 Trueの値は-1ですが、Boolean型なので、他の型の変数との比較条件に使用する場合注意が必要です。
Function main Integer i i = 3 If i = True Then Print "i=TRUE" EndIf Fend上記プログラムを実行すると "i=TRUE"が表示されます。これは、Boolean型を含む条件判定は、"0"か"非0"かで行われるためです。
"i"の値が"0"でない場合は条件成立と判定され表示が行われます。プロジェクトプロパティ>コンパイラーで「変数型チェック」を有効にすると、コンパイル時にBoolean型と数式との比較をエラーとして検出できます。
参照
Select...Case, Do…Loop
If/Then/Else使用例
[1行のIf...Then...Else]
下記例は、特定の出力のオンオフを決定するために、入力をチェックする簡単な例です。このようなタスクは、常に動かしておくI/Oタスクなどに使用します。
Function main
Do
If Sw(0) = 1 Then On 1 Else Off 1
Loop
Fend
[ブロック形式のIf...Then...Else]
下記は、いくつかの入力をチェックして、その入力の状態を出力する簡単な例です。
If Sw(0) = 1 Then Print "Input0 ON" Else Print "Input0 OFF"
'
If Sw(1) = 1 Then
If Sw(2) = 1 Then
Print "Input1 On and Input2 ON"
Else
Print "Input1 On and Input2 OFF"
EndIf
Else
If Sw(2) = 1 Then
Print "Input1 Off and Input2 ON"
Else
Print "Input1 Off and Input2 OFF"
EndIf
EndIf
[その他の書式の例]
If x = 10 And y = 3 Then GoTo Label50
If test <= 10 Then Print "Test Failed"
If Sw(0) = 1 Or Sw(1) = 1 Then Print "Everything OK"
← I ImportPoints →