条件判断

条件判断とは

ある条件のときには○○という処理を、そうでないときには××という処理をさせたい、というときに使うのが条件判断文です。
条件判断文には大きく3つあります。

  • if文
  • unless文
  • case文

ですが、これらを説明する前に比較演算子と論理演算子を紹介します!

◆比較演算子
比較演算子とは、等号「==」や不等号「>」「<」のことです。比較演算の結果はtrueかfalseでかえってきます。

a == b
aとbは一致するか?
a != b
aとbは不一致か?
a >= b
a≧bか?
a <= b
a≦bか?
a > b
a>bか?
a < b
a<bか?


◆論理演算子
論理演算子は高校数学で習った「かつ」「または」のことです。これもtrueかfalseでかえってきます。
「かつ」は「&&」、「または」は「||」で表します。

条件1 && 条件2
どちらの条件もtrueだった場合に全体もtrueになります。どちらか一方でもfalseの場合は全体もfalseになります。
条件1 || 条件2
どちらかの条件がtrueだった場合に全体もtrueになります。

また、比較演算子でも出てきた「!」は否定の論理演算子です。
「!条件」は条件の真偽を反転させます。つまり、条件がfalseだった場合はtrueに、trueだった場合はfalseになります。

演算子には優先順位がありますので、条件を書くときは注意してください。

高

::
[]
+(単項演算子)、!、~
**
-(単項演算子)
*、/、%
+、-
<<、>>
&
|、^
>、>=、<、<=
<=>、==、===、!=、=~、!~
&&
||
?:(条件演算子)
..、...
=(+=、-=、*=、/=などを含む)
not
and、or

低

◆if文
条件判断文を紹介します。
最も基本的な条件判断文がこのif文で、以下のように書きます。
thenは省略可能です。

if 条件文 (then)
  条件文がtrueだったときに実行する内容
end

「条件文がtrueだったらif〜endで囲まれている文の内容を実行してください」
という意味になります。

これにelsif、elseを加えると、以下のような分岐を書くことが出来ます。

if 条件1
  条件1がtrueだったときに実行する内容A →falseなら条件2へ
elsif 条件2
  条件2がtrueだったときに実行する内容B →falseなら条件3へ
elsif 条件3
  条件3がtrueだったときに実行する内容C →falseならelseへ
else
  どの条件もfalseだったときに実行する内容D
end

elsifの後ろには条件文を書くことが出来ますが、elseの後ろには書けないので注意してください。
この条件に合致するかは上から順番に見ていくので、条件文をどの順番で書くかも大事になってきます。

◆unless文
unless文はif文と丁度反対の役割をする条件判断文です。

unless 条件文
  条件文がfalseだったときに実行する内容
end

「条件文がfalseだったらunless〜endで囲まれている文の内容を実行してください」
という意味になります。
これも同じようにelsif、elseを書くことが出来、分岐の仕方も同じです。
また、if文とunless文は裏表の関係なので以下のように書くことが出来ます。

unless 条件文
  実行内容A
else
  実行内容B
end

↓↑

if 条件文
  実行内容B
else
  実行内容A
end

これはまったく同じ処理を表しています。

if文もunless文も、実行したい式の後ろに書くことも出来ます。
これはもちろんif文やunless文で書くことが出来ます。

print "aはbよりも大きい" if a > b
↓↑
if a > b
  print "aはbよりも大きい"
end

◆case文
条件がいくつもある場合ifとelsifを使って書くことも出来ますが、比較したいオブジェクトが一つだけでそのオブジェクトの値によって場合分けをしたい場合、case文を使ったほうがシンプルで分かりやすくなります。

case 比較したいオブジェクト
when 値1
  値1がtrueだったときに実行する内容A →falseなら次の文へ
when 値2
  値2がtrueだったときに実行する内容B →falseなら次の文へ
when 値3
  値3がtrueだったときに実行する内容C →falseなら次の文へ
else
  どれもfalseだったときに実行する内容D
end

これをif文で書くと以下のようになります。

if 対象オブジェクト === 値1 then
  値1と一致する場合に行う処理
elsif 対象オブジェクト === 値2 then
  値2と一致する場合に行う処理
elsif 対象オブジェクト === 値3 then
  値3と一致する場合に行う処理
else
  どの値にも一致しない場合に行う処理
end
ex.

sum = 0
product = "Apple"

case product
when "Melon" then   # "Apple"は"Melon"ではないので、
  sum = sum + 500  # 次の条件文に行きます。
when "Apple" then
  sum = sum + 150  # product = "Apple"とwhen "Apple"が合致するので、
end         # 以下のように返されます。

print("料金は", sum, "です")
# => 料金は150です

また、whenには一度に複数の値を指定出来ます。
複数の値に対して同じ処理を実行する場合は、「when」の後に値をカンマ(,)で区切って並べて記述します。以下の例では「値1(Melon)」「値2(Banana)」に一致した場合は同じ処理を行い、「値3(Apple)」「値4(Lemon)」「値5(Orange)」に一致した場合は同じ処理を行います。

sum = 0
product = "Banana"

case product
when "Melon","Banana" then
  sum = sum + 500
when "Apple","Lemon","Orange" then
  sum = sum + 150
end

print("料金は", sum, "です")
# => 料金は500です


最後までお読み頂きありがとうございます!