choco-ballの日記

勉強のアウトプットのためのブログ

Ruby (6) 条件分岐 if文

プログラムの基本処理は順次進行、条件分岐、繰り返しの3つです。
今回学ぶのはその中の条件分岐の処理になります。
条件分岐とは言葉通りに条件によって処理が分岐することです。
○○が××の時に△△を実行といった具合に処理を記述していきます。
条件分岐では比較演算子を多用します。
比較演算子についてはこちら

Ruby (3) 演算子 - choco-ballの日記


条件分岐に記述する条件は内容によって真偽値(trueかfalse)を返します。
そして返ってきた値がtrue(正しい)かfalse(誤り)によって条件を分岐させます。
では早速学習していきましょう。

if文は条件がtrueになるときに処理を実行します。
また、elsif(elseifではない)やelseと組み合わせることでいくつも処理を分岐させることができます。

# 基本的なif文の記述
if 条件
 # 処理
end


上記例のように必ずifとendで括ります。
次はelseを使用しましょう。
elseはifの条件に当てはまらない場合の記述です。
条件は記述しません。

if 条件
 # 条件に当てはまるときの処理
else
 # 条件に当てはまらない時の処理
end


elsifを使用するとifで指定した以外の条件を作成することができます。

if 条件1
 # ifの条件に当てはまるときの処理
elsif 条件2
 # elsifの条件に当てはまるときの処理
elsif 条件3
 # elsifの条件に当てはまるときの処理
else
 # どちらの条件にも当てはまらない時の処理
end


実際に記述してみましょう。

num1 = 10
num2 =5

if num1 + num2 < 10
 # num1 num2の合計が10より小さい時の処理
 puts num1 + num2
elsif num1 + num2 > 10
 # num1 num2の合計が10より大きい時の処理
 puts num1 - num2
elsif num1 + num2 == 15
 # num1 num2の合計が15の時の処理
 puts num1 * num2
else
 # どの条件にも当てはまらない時の処理
    puts num1 / num2
end

# 結果
# num1 num2の合計が10より大きい時の処理が実行され5が出力される


num1 num2の合計が15の時の処理も条件に当てはまるのでは?


と思うかもしれませんが、
条件分岐では一番最初に当てはまった条件のみが実行されます。


そのため、記述をする順番が大切になってきます。
記述の順番によっては想定通りの結果を得られません。


一つのifやelsifの中で複数の条件を扱うには &&(かつ)や||(または)を使用します。
&&は全ての条件がtrueの時にtrueを返します。
||はいずれかの条件がtrueの時にtrueを返します。

num1 = 10
num2 =5

if num1 + num2  == 15 &&  num1 + num2 < 10
 # num1 num2の合計が15かつ10より小さい時の処理
 # 1つ目はtrueで2つ目はfalseなのでfalse
 puts num1 + num2
elsif num1 + num2 < 10 || num1 + num2 == 15
 # num1 num2の合計が10より小さいまたは合計が15である時の処理
   # 1つ目はfalseだが2つ目がtrueのためtrue
 puts num1 - num2
else
 # どの条件にも当てはまらない時の処理
    puts num1 / num2
end

# 結果
# num1 num2の合計が10より小さいまたは合計が15である時の処理が実行され5が出力


||(または)はいずれか1つでもtrueならばtrueを返す性質上、
条件がtrueになった時点でその後の記述は実行されなくなります。
下の例は上記elsifの条件を逆にしたものです。

elsif num1 + num2 == 15 || num1 + num2 < 10 
 # num1 num2の合計が15である、または時10より小さい時の処理
   # 1つ目はtrueのためtrue この時点で真偽の判定は終了
 puts num1 - num2


上記のようになります。
そのためif文全体の記述の順番を気をつけるとともに
条件式内の順番も気をつけなければいけません。