動作環境はMacとなります。
##if文##
条件によって処理を出し分けたいときに使う
記述方法
if 条件1
条件 1が真(true)だった場合の処理
elsif 条件2
条件2が真(true)だった場合の処理
elsif 条件3
条件3が真(true)だった場合の処理
else
上記のいずれにも当てはまらなかった場合の処理
end
条件が真になったタイミングで処理を抜ける。
後の処理は実行されない。
※elsifの綴りはelseifではないため、注意
実践1
テストの点数が
90点以上 大変よくできました
80点以上 よくできました
60点以上 普通です
60点未満 頑張りましょう
と出力されるプログラムを実際に書いてみる
score = x(任意の数字を入れる)
if score >= 90
puts "大変よくできました"
elsif score >= 80
puts "よくできました"
elsif score >= 60
puts "普通です"
else
puts "頑張りましょう"
end
処理結果
$ruby if.rb
普通です #score60点以上
$ruby if.rb
頑張りましょう #score60点未満(59点以下)
$ruby if.rb
大変よくできました #score90点以上
$ruby if.rb
よくできました #score80点以上
kouya:ruby_proje
#条件が真(true)になった段階でif文を抜けている。
#また、59点以下の場合はelse内の処理が実行されている。
実践2
catならmeow
dogならbowwow
cowならmoomoo
上記以外ならNot found
と出力されるプログラム
animal = X(任意の変数が入る)
if animal == "cat"
puts "meow"
elsif animal == "dog"
puts "bowwow"
elsif animal == "cow"
puts "moomoo"
else
puts "Not found"
end
# =は右辺を左辺に代入するとき ==は右辺と左辺が等しいときに使用するので注意
出力結果
$ ruby if2.rb
meow #animalがcat
$ ruby if2.rb
bowwow #animalがdog
$ ruby if2.rb
moomoo #animalがcow
$ ruby if2.rb
Not found " #animalが上記以外
実践3
遊園地の入場料のプログラム
12歳以上 入場料 5,000円
6歳以上12歳未満 入場料 2,500円
6歳未満 1,000円
age = x(任意の値が入る)
if age >= 12
puts 5000
elsif age >= 6
puts 2500
else age < 6
puts 1000
end
出力結果
kouya:ruby_projects toripurug884$ ruby if3.rb
1000 #6歳未満
kouya:ruby_projects toripurug884$ ruby if3.rb
5000 #12歳以上
kouya:ruby_projects toripurug884$ ruby if3.rb
2500 #6歳未満12歳以上
##unless文#
記述方法
unless 条件
条件が偽(false)だった場合の処理
else
上記に当てはまらなかった場合の処理
end
※unlessにelsifは書かない。
条件が偽になったタイミングで処理を抜ける。
後の処理は実行されない。
nが0で無かった場合、出力するプログラムを書く
if文の場合
n = 1
if !n.zero?
puts "Not zero"
end
unless文の場合
n = 1
unless n.zero?
puts "This is zero"
end
$ ruby unless.rb
Not zero
Not zero
0の場合に出力するプログラムを unless文で追加
n = 0
unless n.zero?
puts "Not zero"
else
puts "This is zero"
end
出力結果
$ ruby unless.rb
This is zero
unlessは無理に使う必要はなく、ifでも読み易ければOK
##case文
記述方法
case 対象のオブジェクトや式
when
値1に一致する場合の処理
when
値2に一致する場合の処理
when
値3に一致する場合の処理
else
上記のいずれにも該当しない場合
end
実践
下記のプログラムを実装
誕生石がrubyだった場合 July
誕生石がperidotだった場合 August
誕生石がsapphireだった場合 September
上記意外だった場合 Not found
ifで書いた場合
stone = x(任意の値を代入)
if stone == "ruby"
puts "July"
elsif stone == "peridot"
puts "August"
elsif stone == "sapphire"
puts "September"
else
puts "Not Found"
end
$ ruby case.rb
July #ruby
$ ruby case.rb
August #peridot
$ ruby case.rb
September #sappire
$ ruby case.rb
Not Found #上記以外
case文で書いた場合
stone = x (任意の値が入る)
case stone
when "ruby"
puts "July"
when "peridot"
puts "August"
when "sapphire"
puts "September"
else
puts "Not found"
end
出力結果
$ ruby case.rb
July #ruby
$ ruby case.rb
August #peridot
$ ruby case.rb
September #sapphire
$ ruby case.rb
Not found #上記以外
if文で書くより、caseで書いた方がシンプルでわかりやすいことがある。
特に、複数の条件に分岐する場合はcaseの方が見やすい場合が多い。
##まとめ
複数人で開発場合、特ににコードの見易さやメンテナンス性が重要視される
自分にしかわからないコードを書くのではなく、相手にわかりやすいコードを書くように心がける必要がある。