06.論理演算


さて、前回の項目では条件分岐のひとつ『if』文に関してやりました。
今回はif文とは切っても切り離せない『論理演算』についてやろうかなと。

論理演算。英訳すると『Logical Operation』。なんかカッコイイですね(`・ω・´)
詳しい説明は以下をご覧くださいまし。

【5分で覚えるIT基礎の基礎】あなたは論理演算がわかりますか?

なんかすっげぇ難しい内容のようですが……(;・∀・)
あれです。よく使われるのはif文。
例外もありますが、条件分岐の際に利用されますね。
特に、『and』『or』に関しては、2つ以上の条件式を連結する際に多様されます。

論理演算には、以下の3つを多用します。

  1. 論理和
  2. 論理積
  3. 否定

んでは一個ずつみていきまっしょい(`・ω・´)

1.論理和
これは、日本語で『または……』といわれるやつでして。
2つの条件式のうち、どちらかを満たせばOKてやつです。
『||』、『or』で表現されます。おれはよく『or』の方を使います。分かりやすいから。
実際に以下のようなソースを組んでみました。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite = "巨乳"

#内容の表示
print "name = ",name,"\n"
print "favorite = ",favorite,"\n"


#フェチ判断
if (favorite == "巨乳") or (favorite == "貧乳") then
  print name," は、おっぱいフェチです(`・ω・´)"
else
  print name," は、おっぱいフェチではありません(´・ω・`)"
end

おれの発想がアホすぎて、こういうのしか思い浮かばなかった(;・∀・)

if (favorite == "巨乳") or (favorite == "貧乳") then

実際に論理和の論理演算を利用している部分はこちら。
ここでfavoriteの値が『巨乳』か『貧乳』の場合に、条件が成立したと判定されます。
というわけで、favoriteを色々と変えて、走らせてみました。
01-1
01-2 01-3
こんな感じで、『巨乳』でも『貧乳』でもどちらでもif文の条件式が成立してます。

2.論理積
こちらは『かつ……』と言われるやつでして、
2つの条件式が両方とも成立した場合にOKと判定されるやつです。
『&&』、『and』で表現されます。おれはよく『and』の方を使います。

というわけで、andの挙動を見るために以下のソースを組んでみました。
相変わらず妙なソースです。誰かフェチ以外に思いついたソースがあれば教えてくれ。
こんなことに楽しみを見出すしか無いんだおれは(;・∀・)

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite01 = "巨乳"
favorite02 = "貧乳"

#内容の表示
print "name = ",name,"\n"
print "favorite01 = ",favorite01,"\n"
print "favorite02 = ",favorite02,"\n\n"


#フェチ判断
if (favorite01 == "巨乳") and (favorite02 == "貧乳") then
  print name," は、真のおっぱい星人です(`・ω・´)"
else
  print name," は、真のおっぱい星人ではありません(´・ω・`)"
end

こんな感じ。実際に論理積の演算を行っているのは、こちら。

if (favorite01 == "巨乳") and (favorite02 == "貧乳") then

ここで、『favorite01が巨乳』かつ『favorite02が貧乳』の場合のみ、if文の条件が成立します。
では色々と値を変えて、実際にプログラムをはしらせてみまっしょい。
02-1 02-3 02-2 02-4
こんな感じ。条件式が2つとも成立しないと、if文が成立したとみなされません。

ちなみに、if文とelsif文に加え、論理和と論理積を使いまくって、
こんな感じで複雑な条件分岐を作ることも出来ますぃ。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite01 = "巨乳"
favorite02 = "貧乳"

#内容の表示
print "name = ",name,"\n"
print "favorite01 = ",favorite01,"\n"
print "favorite02 = ",favorite02,"\n\n"


#フェチ判断
if (favorite01 == "巨乳") and (favorite02 == "貧乳") then
  	print name," は、真のおっぱい星人です(`・ω・´)"
elsif (favorite01 == "巨乳") or (favorite02 == "貧乳") then
  	print name," は、普通のおっぱい星人です。"	
else
		  print name," は、おっぱい好きではありません(´・ω・`)"
end

この条件分岐は、
『巨乳が好き』かつ『貧乳が好き』なら、『真のおっぱい星人』、
『巨乳』と『貧乳』どちらかが好きなら『普通のおっぱい星人』、
どちらも好きではないようなら、『おっぱい好きではありません』と表示されます。
結果を見てみましょうや。
03-1
03-3
03-2
03-4
うん。狙ったとおりですね。

 

3.否定
これはちょっと趣が違いまして。
条件式が成立したときに『成立しない』、成立しなかったときに『成立した』と判定します。
条件式に『!(びっくりマーク)』をくっつけて表現しますね。
というわけで、実際に以下のソースを組んで検証してみます。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite = "おっぱい"

#内容の表示
print "name = ",name,"\n"
print "favorite = ",favorite,"\n\n"


#フェチ判断
if !(favorite == "うなじ") then
	print name," は、うなじフェチではありません。"
else
	print name," は、うなじフェチです(`・ω・´)"
end

これは、『favorite == “うなじ”』が成立しなければif文が成立し、
『うなじフェチではありません』と表示されます。
というわけで、色々中味を変えて走らせてみまっしょい。
04-1
04-2
こんな感じです。

論理演算はホントによく使いますし、
しかも実際に使ってみないと、言葉だけでは中々理解できない部分があります。
いじり倒してモノにすることをオススメいたします(`・ω・´)

また、おれ自身は論理和では『or』、
論理積では『and』をよく使いますが、
プログラミング言語ではどちらかというと『||』と『&&』しか使えないケースが多いです。
そのため、『||』が論理和、『&&』が論理積というのもしっかり覚えておいたほうがよいでしょうねぇ。

おれの場合は『しらん人が見てもなんとなく意味がつかめるソース』を目指してるので、
使える場合は『or』『and』を多用しているだけなのです。

更に言うと、あまり『論理和』『論理積』という呼び方はしない気がします。
よく『or』『and』と呼ぶ場合が多いと思います。現場でのことは知らんけど(;・∀・)

どちらにせよよく使うものなので、
使いまくってキチンと身につけておきまっしょい(`・ω・´)

次回はもう一つの条件分岐の構文を見ていこうかなと思います。
ここに来て、ちょっと他の言語と全然違う感じの構文になるので、
なんかしんどそう…(;・∀・)