今回は、条件付き命令文の 「If ~Then」を使用する際によく使う、論理演算子「Not」の間違った使い方、正しい使い方を紹介します。
条件付き命令文は、プログラム中のある場所で次に何をどうするか?このような場合はこう動作させたい、という時にある条件を判断する際に使います。
プログラミングを始めたばかりの方は、どうも使い方が分からないという場合が多いです。
正しい使い方と間違った使い方両方を知っておくと今後のプログラミングに役に立つと思いますので、是非覚えてください。
論理演算子の「Not」とは
論理演算子の「Not」は「False」(偽)という意味です。
日本語に直すと「~ではない」となります。
「Not」は、True (真)(1)なのか、False (偽)(0)なのかを判断する際にも使用します。
演算子には、優先順位があり、Not は優先順位が一番高い演算子になります。
論理演算子の「Not」の間違った使い方
次のコードは「Not」の間違った使い方です。
$temp = 5 で $temp に値 5 を代入したとします。
例1
If Not $temp = 4 Then
MsgBox(0, 0, $temp)
Else
MsgBox(0, 0, "$temp の値は「4」である")
EndIf
一見あっているかと思いますが、結果はどうでしょうか?
実際に実行して確認してみてください。
「$temp の値は「4」である」というメッセージが表示されますね。
このコードを見てみると、If Not $temp = 4 Then となっています。
日本語に直してみると、「もしも $temp は ではない 4 が 真 なら」となってしまいます。
構文がおかしいことが分かるかと思います。
例2
If $temp = Not 4 Then
MsgBox(0, 0, $temp)
Else
MsgBox(0, 0, "$temp の値は「4」である")
EndIf
こちらもあっているように見えますが、結果はどうでしょうか?
「$temp の値は「4」である」というメッセージが表示されます。
このコードを見てみると、If $temp = Not 4 Then となっています。
日本語に直してみると、「もしも $temp は ではない 4 が真なら」となってしまいます。
Not の優先度が高いので同じ結果になりますね。
論理演算子の「Not」の正しい使い方
If | Not | ~ | Then |
もしも | ではない | 何が | 真なら |
If Not ~ Then という順番で書くのが正しい書き方です。
例1、例2の正しい書き方
If Not ($temp = 4) Then
MsgBox(0, 0, $temp)
Else
MsgBox(0, 0, "$temp の値は「4」である")
EndIf
「$temp = 4」を「( )」で囲みます。
If Not ($temp = 4) Then を日本語に直すと、「もしも $temp が 4 ではない が真なら」となり、正しく判断することができるようになります。
「( )」で囲むことによって $temp = 4 を1つにまとめることができます。
例えば「6」という結果が欲しいが、 「1+2*3 = 」というように計算すると、結果は「7」になりますね。
掛け算は足し算より優先度が上です。
なので、この場合 「(1+2)*3 =」と書くのが正しいですね。
「( )」の中の計算が優先となります。
真偽の判断
Not は、真偽の判断にも使います。
True (真)なのか、False (偽)なのか。
True (真) | False (偽) |
1またはデータが空ではない | 0またはデータが空である |
1またはデータが空ではない場合、True (真)となりますので、次のコードの場合、値が空ではないので結果は真(True)になります。
$temp = 5
If Not $temp Then
MsgBox(0, 0, "$temp は偽(False)です。")
Else
MsgBox(0, 0, "$temp は真(True)です。")
EndIf
こちらのコードの場合、値が空なので結果は偽(False)となります。
$temp = ""
If Not $temp Then
MsgBox(0, 0, "$temp は偽(False)です。")
Else
MsgBox(0, 0, "$temp は真(True)です。")
EndIf
最初は理解するのに時間がかかるかと思いますが、理解ができると楽しくなってきますので、是非覚えていってください。
コメント