3.制御(条件判断)

3-1 関係演算子と関係式

 2つのデータの大小などの比較を行う関係演算で用いられる演算子を 表3-1に示す.
表3-1 関係演算子
演算子 意味 用法 解釈
= 等しい a=b a = b
<> 等しくない a <> b a ≠ b
< 小さい a < b a < b
<= 小さいか等しい a <= b a ≦ b
> 大きい a > b a > b
>= 大きいか等しい a >= b a ≧ b
 関係式は「式1 関係演算子 式2」のように関係演算子と式から構成されている.式1が式2に対して関係演算子の意味を満たしている場合,関係式の値はtrue,そうでない場合の値はfalseとなる.

プログラム例3-1:関係式の値を表示する簡単なプログラムを作成してみよう.

3-2 論理演算子と論理式

 論理演算を行う場合は表3-2に示す論理演算子が用いられる.
表3-2 論理演算子
演算子 意味 用法 解釈
And 論理積(かつ) a And b AND演算
Not 論理否定 Not a NOT演算
Or 論理和(または) a Or b OR演算
Xor 排他的論理和 a Xor b XOR演算
Eqv 同値 a Eqv b
Imp 包含 a Imp b

 また,様々な論理値に対する論理演算結果を表3-3に示す.

表3-3 論理演算の真理値表
aの値 bの値a And ba Not ba Or b a Xor ba Eqv ba Imp bNot a
falsefalsefalse true falsefalse true true true
falsetrue false true true true falsetrue true
true falsefalse falsetrue true falsefalsefalse
true true true falsetrue false true true false

プログラム例3-2:AND演算の例をプログラムする.

3-3 条件判断

(1)If 文
 ある条件式を満たしたときに処理を実行したい場合,ブロックif文を用いる.If文は,以下のとおり If ThenとEnd Ifとで対になり,この間にはさまれた実行文を条件が満足された場合に処理する.
  (If文)
If 条件式 Then
 ブロック(処理を記述)
End If
 また,ブロック内にif文を記述することもできる.これを入れ子という.入れ子のブロックにさらに入れ子を設けることができる.以下の図は,条件式1を満たしたとき,ブロック1-1とブロック1-2の処理が実行される.これに加えて,条件式2を満たしたとき,ブロック2の処理が実行される.
  (入れ子のあるif文)
If 条件式1 Then
  ブロック1-1(処理を記述)
  If 条件式2 Then
    ブロック2(処理を記述)
  End If
  ブロック1-2(処理を記述)
End If

プログラム例3-3:numの値が正のときセルA1に”CodeBlock”と表示するプログラムを作成する.この例では,セルB1に入力した値がnumに記憶され,if文を用いることでnumの値に応じて処理するか否かを選択することができる.

(2)Else 文
 判断によって選択する処理が異なる場合,Else文が用いられる.構文は以下のとおりで,If Then文の条件式が真のときはブロック1,偽のときはブロック2の処理が実行される.
If 条件式 Then
  ブロック1
 Else
  ブロック2
End If

プログラム例3-4:入力した値が偶数か奇数で出力文字列を選択するプログラムを作成する.

(3)ElseIf 文
ElseIf 文を用いると様々な条件式に対して処理を選択して実行することができる.下の例は,条件式が3つある場合の例で,条件式1を満たした場合にブロック1が,そうでなく条件式2を満たした場合はブロック2が,条件式1も2も満たさず条件式3を満たした場合にはブロック3の処理が,そして,どの条件式も満たさない場合にはブロック4の処理が実行される.最後のElseとブロック4は必要なければ省略可能である.
  (ElseIf文)
If 条件式1 Then
   …(ブロック1)
  ElseIf 条件式2 Then
  …(ブロック2)
  ElseIf 条件式3 Then
  …(ブロック3)
  Else
   …(ブロック4)
End If

プログラム例3-5:セルB1に入力した値に応じてセルA1にその値が正か負か,あるいは0かを表示するプログラムを作成する.

(4)Select Case 文
 条件式が1つで,その値(定数式)に応じて複数の処理の中から選択し実行したい場合には,Select Case 文が用いられる.下の例は,条件式の値が定数式1の値と一致したときブロック1を,定数式2と一致したときブロック2をどれにも該当しないときブロック3を実行する例である.ブロック3が必要なければCase Elseおよびブロック3は省略可能である.
  (select ~ case文)
Select case 条件式
 Case 定数式1
  処理1
 Case 定数式2
  処理2
 Case Else
  処理3
End Select

プログラム例3-6:プログラム例3-5をSelect Case文でコーディングしなおしてみよう.