「論理演算子(ろんりえんざんし)」とは?
今回は「論理演算子」について解説いたします。
前回は「比較演算子」について学びました。
比較演算子は、データの値と値を比較して「True」と「False」で真偽を判定しました。
しかし比較演算子だけでは、例えば『「変数Aが変数Bより大きい」かつ「変数Cは変数Aと同じ値」』という比較ができません。
または『「変数Aが変数Bより大きい」もしくは「変数Cは変数Aと同じ値」』という比較もできません。
つまり、複数の条件が存在した時、比較演算子だけでは不可能です。
そこで登場するのが「論理演算子」です。
論理演算子を使えば、複数の条件を組み合わせて判定する事が可能です。
論理演算子は全部で6つあります。
比較演算子の時は算数のようでしたが、論理演算子は数学的な要素が含まれています。
算数や数学が苦手な人は、プログラムは難しいと思うかもしれませんが、1つ1つ分かりやすい所からマスターしていけば難しくありません。
よって6つある論理演算子の内、基本的な3つを解説いたします。
今回もソースコードを使って解説します。
Sub test7()
'Boolean型による変数宣言
Dim Answer1 As Boolean
Dim Answer2 As Boolean
Dim Answer3 As Boolean
Dim Answer4 As Boolean
Dim A As Integer
Dim B As Integer
Dim C As Integer
A = 5
B = 10
C = 5
Answer1 = (A > B) And (A = C) '「条件式1 かつ 条件式2」両方が真か?
Answer2 = (A > B) Or (A = C) '「条件式1 もしくは 条件式2」どちらかが真か?
Answer3 = Not (A = B) '条件式の否定
Answer4 = Not (A = C) '条件式の否定
MsgBox (Answer1) 'False
MsgBox (Answer2) 'True
MsgBox (Answer3) 'True
MsgBox (Answer4) 'False
End Sub
論理演算子「And」:論理積(かつ)
Answer1 = (A > B) And (A = C) '「条件式1 かつ 条件式2」両方が真か?
まず2つの比較演算子を使った条件式があります。
それが「(A > B)」と「(A = C)」です。
そして「And」アンドが論理演算子になります。
この「And」は論理積と呼ばれ、「And」で比較する両方の条件式の真偽を比較し、共に真なら「True」になります。
もう少しひも解いてみましょう。
まず変数Aは「5」変数Bは「10」変数Cは「5」です。
最初の条件式「(A > B)」は偽(False)です。
次の条件式「(A = C)」は真(True)です。
つまり「(A > B) And (A = C)」は「偽(False) And 真(True)」という事になります。
片方が偽(False)のため、共に真(True)ではありません。
したがって、変数Answer1は「False」になります。
「And」の場合、あくまで全て真(True)でなければ、真(True)を返しません。
- 「偽(False) And 偽(False)」 ・・・ 偽(False)
- 「真(True) And 偽(False)」 ・・・ 偽(False)
- 「偽(False) And 真(True)」 ・・・ 偽(False)
- 「真(True) And 真(True)」 ・・・ 真(True)
論理演算子「Or」:論理和(または)
Answer2 = (A > B) Or (A = C) '「条件式1 もしくは 条件式2」どちらかが真か?
2つ目の論理演算子は「Or」オアです。
「Or」は論理和と呼ばれ、「Or」で比較する両方の条件式の真偽を比較し、1つでも真なら「True」になります。
「And」の場合は、両方の条件式が真(True)でなければ真(True)を返しませんでしたは、「Or」の場合は片方でOKです。
「And」の際に「(A > B) And (A = C)」は「偽(False) And 真(True)」と解説しました。
つまり片方が真(True)であるため、変数Answer2は「True」になります。
- 「偽(False) And 偽(False)」 ・・・ 偽(False)
- 「真(True) And 偽(False)」 ・・・ 真(True)
- 「偽(False) And 真(True)」 ・・・ 真(True)
- 「真(True) And 真(True)」 ・・・ 真(True)
論理演算子「Not」:論理否定(~ではない)
Answer3 = Not (A = B) '条件式の否定
Answer4 = Not (A = C) '条件式の否定
3つ目の論理演算子は「Not」ノットです。
「Not」は論理否定と呼ばれ、条件式が真のときに偽となり、偽のとき真となります。
難しいく聞こえますが、真と偽がこの「Not」を使うとひっくり返るだけです。
「Not (A = B)」の場合、「(A = B)」の部分は、変数Aが「5」変数Bが「10」のため偽(False)です。
しかし「Not」が付く事により、偽(False)は真(True)に変わります。
したがって、変数Answer3は「True」になります。
変数Answer4も「(A = C)」が真(True)のため、「Not」が付く事により、ひっくり返って「False」となります。
<補足情報>「論理演算子」の種類
演算子 | 書式 | 説明 | 使用例 |
---|---|---|---|
And | 条件1 And 条件2 | 論理積:条件1 と 条件2 の両方満たす | A AND B |
Or | 条件1 Or 条件2 | 論理和:条件1 か 条件2 のどちらかが満たす | A OR B |
Not | Not 条件 | 論理否定:条件ではない | NOT(A = B) |
Eqv | 条件1 Eqv 条件2 | 論理等価演算:「条件1 と 条件2 の両方満たす」 もしくは「条件1 と 条件2 の両方を満たさない」 | A Eqv B |
Imp | 条件1 Imp 条件2 | 論理包含演算:「条件式1を満たし 条件式2を満たさない」 以外は真になる | A Imp B |
Xor | 条件1 Xor 条件2 | 排他的論理和:条件式1と条件式2の真偽が一緒の場合は真になる | A Xor B |