Ruby　if文,case文

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

##if文##

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

*記述方法*

**if 条件1**
条件　1が真(true)だった場合の処理
**elsif　条件2**
条件2が真(true)だった場合の処理
**elsif　条件３**
条件３が真(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

```
処理結果

```irb
$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

# =は右辺を左辺に代入するとき　==は右辺と左辺が等しいときに使用するので注意
```
出力結果

```irb

$ ruby if2.rb
meow #animalがcat
$ ruby if2.rb
bowwow　#animalがdog
$ ruby if2.rb
moomoo　#animalがcow
$ ruby if2.rb
Not found　" #animalが上記以外
```

**実践３**

遊園地の入場料のプログラム
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
```
出力結果

```irb
kouya:ruby_projects toripurug884$ ruby if3.rb
1000　#６歳未満
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**
値２に一致する場合の処理
**when**
値３に一致する場合の処理
**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
```

出力結果

```irb
$ ruby case.rb
July #ruby
$ ruby case.rb
August　#peridot
$ ruby case.rb
September　#sapphire
$ ruby case.rb
Not found　#上記以外
```

if文で書くより、caseで書いた方がシンプルでわかりやすいことがある。
特に、複数の条件に分岐する場合はcaseの方が見やすい場合が多い。


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