1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ruby if文,case文

Last updated at Posted at 2019-02-28

動作環境はMacとなります。

##if文##

条件によって処理を出し分けたいときに使う

記述方法

if 条件1
条件 1が真(true)だった場合の処理
elsif 条件2
条件2が真(true)だった場合の処理
elsif 条件3
条件3が真(true)だった場合の処理
else
上記のいずれにも当てはまらなかった場合の処理
end

条件が真になったタイミングで処理を抜ける。
後の処理は実行されない。

※elsifの綴りはelseifではないため、注意


実践1

テストの点数が
90点以上 大変よくできました
80点以上 よくできました
60点以上 普通です
60点未満 頑張りましょう

と出力されるプログラムを実際に書いてみる

if.rb

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

と出力されるプログラム

if2.rb

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円

if3.rb

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文の場合

unless.rb
n = 1

if !n.zero?
  puts "Not zero"
end


unless文の場合

unless.rb

n = 1
unless n.zero?
  puts "This is zero"
end

$ ruby unless.rb
Not zero
Not zero

0の場合に出力するプログラムを unless文で追加

unless.rb
n = 0

unless n.zero?
  puts "Not zero"
else
  puts "This is zero"
end

出力結果

unless.rb
$ 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で書いた場合

case.rb
stone =  x(任意の値を代入)

if stone == "ruby"
  puts "July"
elsif stone == "peridot"
  puts "August"
elsif stone == "sapphire"
  puts "September"
else
  puts "Not Found"
end

case.rb
$ ruby case.rb
July #ruby
$ ruby case.rb
August #peridot
$ ruby case.rb
September #sappire
$ ruby case.rb
Not Found #上記以外

case文で書いた場合

case.rb

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の方が見やすい場合が多い。

##まとめ
複数人で開発場合、特ににコードの見易さやメンテナンス性が重要視される
自分にしかわからないコードを書くのではなく、相手にわかりやすいコードを書くように心がける必要がある。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?