見出し画像

【RUBY】初級編CP3

RUBYの自分アウトプット用。
要点だけですが、もしよろしければどうぞ。

【条件分岐】
《if文》
比較演算子(==や<など)と、論理型の値(trueとfalse)を活用。

if 条件
 条件が成り立った時に実行したい処理
end

# 10 > 5 は正しいので、true と評価される。 if (true) となるので [if 10 > 5 ... end] が実行される
if 10 > 5
 puts 'ここだけ表示される'
end

# 10 <= 5 は間違いなので、 false と評価される。if (false) となるので [if 10 <= 5 ... end] は実行されない
if 10 <= 5
 puts 'ここは絶対に実行されない'
end

ブロックとインデント
if 条件 ... end はifブロックと呼ばれる。1つのまとまり(としてのかたまり=ブロック)
今回のif文におけるブロック(if 条件 ... end)は、if文の条件が true であれば実行される処理。ブロックによって、if文によって影響される範囲を定めている。「ブロックの範囲がどこからどこまでか」をわかりやすくするため、ブロック内の各行にはインデントを1つ分追加。

《if-else文》
else 文を書くことで、if文の条件式が false で実行されない場合に実行させる処理を記述することができる。if文が実行されるとelse文は実行されず、if文が実行されないとelse文が実行されるようになる。elseは「その他」を意味する英単語。

if 条件
 条件が成り立った時に実行したい処理
else
 条件が成り立たなかった時に実行したい処理
end

if 10 == 5
 puts '10 == 5 は false なのでここは実行されない'
else
 puts 'if側が実行されないので、ここだけ実行される'
end

# rand(10) は 0 ~ 9 までのランダムな整数を出力する
number = rand(10)
if number < 5
 puts number.to_s + 'は5より小さい数'
else
 puts number.to_s + 'は5以上の数'
end

numberの値が実行するたびに変わって、それによって表示される文字列もif文によって変わる。rand()は、0 から括弧の中に与えられた数までのランダムな整数を生成。0 〜 9までのランダムの整数が欲しいときは、rand(10) となる。number という数値と 'は...' という文字列を連結させたい場合は、数値の number を number.to_s という記述。これにより、数値が文字列として扱われる。
次にif文の動きは、number に number < 5 な条件を満たす数(0 〜 4)が来れば、number < 5 は true を返すので、if文が実行され、1は5より小さい という表示がされる。逆に number に number < 5 な条件を満たさない数(5 〜 9)が来れば、number < 5 は false を返すのでelse文のほうが実行される。

《if-elsif-else文》
更に、elsifを加えれば条件を3パターン以上に増やすことができる。上から順に条件を実行していき、 true があれば実行されて、以降のブロックは実行されない。elseif ではなく、elsif な点に注意(e がない)。

number = rand(10)
if number < 3
 puts number.to_s + 'は3より小さい数'
elsif number < 6
 puts number.to_s + 'は3以上で6より小さい数'
elsif number < 8
 puts number.to_s + 'は6以上で8より小さい数'
else
 puts number.to_s + 'は8か9しか来ません'
end

《(補足)case文》&nbsp;

number = rand(10)
if number == 3
 puts number.to_s + 'は3'
elsif number == 6
 puts number.to_s + 'は6'
elsif number == 8
 puts number.to_s + 'は8'
else
 puts number.to_s + 'それ以外'
end

このように、全ての条件式(elseは除く)が == (指定したデータと同値かどうかの判定)を使っている場合、case文 に置き換えることができる。caseは「○○の場合」という意味なので、ある変数が「1の場合」「2の場合」などで処理が分岐される。

先ほどのプログラムを case文 で置き換えたプログラムを作る。

number = rand(10)

case number
when 3 then
 puts number.to_s + 'は3'
when 6 then
 puts number.to_s + 'は6'
when 8 then
 puts number.to_s + 'は8'
else
 puts number.to_s + 'それ以外'
end

caseの後ろの式
この case の後ろに置いた変数が == の条件式の左辺に該当。case に指定した変数の中身について「○○と同じ値かどうか」を調べる。
when と else
when ○ then と書かれた部分が if や elseif における == の条件式の右辺に該当。case xyz としていたときに when 2 then と書いた場合は xyz == 2 の条件式と同じ意味になる。条件を満たしている場合は、次の行からの処理が実行される。上記の例のように when ○ then よりもインデントを1つ分追加して、処理を書く。

また、全ての条件を満たさない場合の処理は else の中に書く。

この記事が気に入ったらサポートをしてみませんか?