【Ruby超入門コース】10.条件分岐|条件にあてはまればAという処理、あてはまらなければBという処理ができます!

はじめに

こんにちは。キノコードです。
「【5分レッスン】Ruby超入門コース#10 条件分岐」について説明します。

分岐処理とは?

レッスン4「プログラムの基本構造」で説明しましたが、プログラムの基本的な動きは「順次進行」「条件分岐」「繰り返し」の3つです。
この動画では、「条件分岐」について説明します。
条件分岐とは、条件に合致する場合は「処理A」、そうじゃないときは「処理B」ということができます。

if文

条件分岐の代表例が、if文です。
Rubyでのきまりをみてみましょう
if 条件
 条件を満たしたときの処理
end
ifに続けて、「条件」を書きます。条件の次にthenを記述します。
条件のあとのthenは省略できるので、このレッスンでは省略していきます。
次に、改行して「条件を満たしたときの処理」。この行は、インデントをひとつ右にずらして書きます。
最後に改行してendを書きます。
それでは、実際に、コードを書いてみましょう
ageという変数の値が20歳以上なら大人という意味のadultと表示させて、20歳未満なら子供という意味のchildと表示させるといった処理を書いてみます。
まずは、ageという変数の値が20歳以上なら大人という意味のadultと表示させる処理を書いてみましょう。

  age = 22

  if age >= 20
    p "adult"
  end

年齢という意味のageという変数に「22」という数値を代入しします。
if文の条件にageが20以上と記述します。
22は、20以上です。条件を満たすので、「adult」が表示されるはずです。
実行してみましょう。adultが表示されました。

age = 18

if age >= 20
  p "adult"
end

ageという変数に「18」を代入してみましょう。
条件を満たさないので、何も表示されないはずです。
実行してみましょう。
何も表示されませんでした。

if ~ else文

if 条件A
 条件Aを満たしたときの処理
else
 条件を満たさないときの処理
end
次にif ~ else文についてみていきましょう。
先ほどみたように、ただのif文は、条件を満たさないとき、処理されずプログラムが終わります。
一方、if ~ else文は、条件を満たさないときの処理を記述・実行することができます。
if ~ else文のRubyのきまりをみてみましょう。
先程のif文のあとに、elseと書きます。
次に、改行して、条件を満たさないときの処理を書きます。
最後に改行してendを書きます。
コードを書いてみましょう

age = 18

if age >= 20
    p "adult"
else
    p "child"
end

ageに代入する数値を18とします。if文の条件は先ほどと同じように、20歳以上とします。
elseの次の行に、子供という意味の「child」を表示させる処理をかきます。
18は、20以上の条件を満たさないので、「child」が表示されるはずです。
実行してみましょう。else以下に処理が実行されて「child」が表示されました。

age = 22

if age >= 20
    p "adult"
else
    p "child"
end

ageに「22」を代入して実行してみましょう。
今度は条件を満たすので「adult」と表示されました。

if ~ elif ~ else文

もう一つ条件を加えたい場合に使うのが、elsifです。
Rubyでのきまりをみてみましょう。
if 条件A
 条件Aを満たしたときの処理;
elsif 条件B
 条件Bを満たさないときの処理;
else
 条件を満たさないときの処理;
end
先程の条件Aのif文のあとに、elsif半角スペース。次に2つめの条件Bを書きます。
次の行に、「条件Bを満たしたときの処理」を書きます。この行も、インデントをひとつ右にずらして書きます。
それでは、コードを書いてみましょう

age = 0

if age >= 20
    p "adult"
elsif age == 0
    p "baby"
else
    p "child"
end

20歳以上なら「adult」、0歳なら「baby」、それ以外なら「child」というような記述をします。
elsifのところに、ageが0だった場合の処理を記述します。
ageの変数に「0」を代入します。
ageは0なので、最初のageは20以上という条件には引っかからず、プログラムが下に流れます。
そして、elsifのところの条件にいき、ageは0なので、elsifのところのプログラムが実行され、babyが表示されるはずです。
実行します。babyと表示されました。

確認問題

それでは、確認問題をやっていきましょう。
演算子のところで勉強した論理演算子を使って条件式のところに、10才以上20歳未満の場合は10代、20才以上30歳未満の場合は20代、30才以上40歳未満の場合は30代。これらの条件に合致しないものはそれ以外と表示させるプログラムをかいてみましょう。
そして変数に10,21,32,43,5を代入して予想通りの実行結果になるか試してみましょう。
それでは動画を止めて考えてみて下さい。

age = 10

if age >= 10 && age < 20
    p "10代"
elsif age >= 20 && age < 30
    p "20代"
elsif age >= 30 && age < 40
    p "30代"
else
    p "それ以外"
end

それでは、解答です。
条件式のところに、論理演算子を使って、10以上20未満という条件を書きます。
条件を満たした場合の処理として「10代」と表示させる記述をします。
elsifを使って、その他の条件と表示させる記述していきましょう
最後に、条件を満たさない場合、「それ以外」と表示させるような記述をしましょう。
実行してみます。
10代が表示されました。
ageにほかの値をいれてみて、予想通りの動きになるか各自みなさんで試してみてください。
それでは、条件分岐のレッスンは以上で終わりです。
お疲れ様でした!