条件判断
条件判断とは
ある条件のときには○○という処理を、そうでないときには××という処理をさせたい、というときに使うのが条件判断文です。条件判断文には大きく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です
最後までお読み頂きありがとうございます!