論理演算子とは,条件式(A>B,A=B など)に付けて用いる演算子(計算等を行う記号)です。
なお,論理演算子は大文字小文字を区別しません。
これは,And の前後の2つの条件式が両方とも成り立っていることを表します。
#prompt
Dim MyName As String, MyAge As Long
Input "あなたの名前は>",MyName
Input "あなたの年齢は>",MyAge
If MyName="Sinryow" And MyAge=19 Then
Print "あなたは本物のSinryowです。"
End If
これは,MyName が「Sinryow」で,なおかつ MyAge が 19 のときのみ「あなたは本物のSinryowです。」と表示します。(19歳というのは,これを書いたときの私の年齢です)
また,3つ以上の条件式がすべて成り立っていることを表すには,「A And B And C」のように「And」を並べていけばよいです。
これは,Or の前後の2つの条件式のうち少なくとも1つが成り立っていることを表します。
#prompt
Dim MailAddress As String
Input "メールアドレスを入力して下さい>",MailAddress
If MailAddress="mail@sinryow.net" Or MailAddress="sinryow@inter7.jp" Then
Print "これはSinryowのメールアドレスです。"
End If
MailAddress の値は,「mail@sinryow.net」であっても「sinryow@inter7.jp」であっても「これはSinryowのメールアドレスです。」と表示されます。(後者のメールアドレスは,以前使っていたものです。)
なお,3つ以上の条件式のうち少なくとも1つが成り立っていることを表すには,And の時と同様「A Or B Or C」のように「Or」を並べていけばよいです。
これは,直後の条件式が成り立たないことを表します。
#prompt
Dim MyName As String
Input "あなたの名前は>",MyName
If Not MyName="Sinryow" Then
Print "あなたはSinryowではありません。"
End If
Not の直後の条件式が成り立たないのですから,この場合は「MyName が『Sinryow』ではない」ときに条件成立です。
他の3つに比べてあまり使用頻度は多くありません。Xor の前後の2つの条件式のうち1つだけが成り立っていることを表します。
#prompt
Dim MyName As String, MyURL As Long
Input "あなたのお名前は>",MyName
Input "あなたのホームページアドレスは>",MyURL
If MyName="Sinryow" Xor MyURL="http://www.sinryow.net/" Then
Print "あなたは偽者のSinryowですね。"
End If
名前が「Sinryow」なのにURLが「http://www.sinryow.net/」でないなら,偽者と判定します。逆も同じです。
Xor は And・Or・Not の組み合わせで表現可能です。
A Xor B
= (A And (Not B)) Or ((Not A) And B)
= (A Or B) And ((Not A) Or (Not B))
なお,算術演算子(計算に用いる演算子)だと「*」「/」が「+」「-」より優先度が高い,というように優先順位があるわけですが,論理演算子も同様に優先順位が存在します。
(優先度高) Not - And - Or - Xor (優先度低)
問12 2つの数値を入力し,「Aが正でBも正」または「Aが正でなくBも正でない」という条件のときのみ「実験成功」と表示せよ。