Ruby (6) 条件分岐 if文
プログラムの基本処理は順次進行、条件分岐、繰り返しの3つです。
今回学ぶのはその中の条件分岐の処理になります。
条件分岐とは言葉通りに条件によって処理が分岐することです。
○○が××の時に△△を実行といった具合に処理を記述していきます。
条件分岐では比較演算子を多用します。
比較演算子についてはこちら
条件分岐に記述する条件は内容によって真偽値(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文全体の記述の順番を気をつけるとともに
条件式内の順番も気をつけなければいけません。