07.条件分岐(case文)


さて、条件分岐2回めです(`・ω・´)

今回は、たくさんの条件分岐がある場合に便利なcase文を見ていきたいなと。
大量のif文書くのめんどくさい(*´Д`)みたいな、分岐がたくさんある場合とか便利です。

今回使うcase文の構文はこちらっ

case 変数
when 値1 then
  値1と一致する場合に行う処理
when 値2 then
  値2と一致する場合に行う処理
when 値3 then
  値3と一致する場合に行う処理
else
  どの値にも一致しない場合に行う処理
end

いちいち『if ○○ then~ elsif ✕✕~(*´Д`)』とめんどくさくなくていいですねぇ。

では今回これを使って、
以下のようなプログラムを書いてみました。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite = "赤"

#favoriteの値によって条件分岐
case favorite
when "緑" then
  shouten_member = "歌丸師匠"
when "水" then
  shouten_member = "小遊三師匠"
when "ピンク" then
  shouten_member = "好楽師匠"
when "黄" then
  shouten_member = "木久扇師匠"
when "灰" then
  shouten_member = "昇太師匠"
when "紫" then
  shouten_member = "園楽師匠"
when "オレンジ" then
  shouten_member = "たい平師匠"
when "赤" then
  shouten_member = "山田くん"
else
  shouten_member = "いません"
end

#結果を表示
print "name = ",name,"\n"
print "favorite = ",favorite,"\n\n"

print name," さんが好きな笑点メンバーは、",shouten_member,"。\n\n"

ほい。こんな感じです。
このプログラムは、好きな色から、好きな笑点メンバーを当ててくれるという、
夢の様なプログラムです(`・ω・´)

………………(´・ω・`)
favoriteの中味を変えて実行した結果はこちらです(´・ω・`)
01-1 01-2 01-3

ほい。うまく分岐できましたね。

他には、こんな使い方も出来ます。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite = "赤"
#shouten_member = ""

#favoriteの値によって条件分岐
case favorite
when "緑" then
  shouten_member = "司会者"
when "水","ピンク","黄","灰","紫","オレンジ" then
  shouten_member = "回答者"
when "赤" then
  shouten_member = "座布団運び"
else
  shouten_member = "ありません"
end

#結果を表示
print "name = ",name,"\n"
print "favorite = ",favorite,"\n\n"

print name," さんが得意な役職は、",shouten_member,"。\n\n"

この場合のポイントはここ。

when "水","ピンク","黄","灰","紫","オレンジ" then

こんな風に、『,(カンマ)』で区切ってあげれば、
複数の値を指定してあげることも可能です。

この場合だと、緑では『司会者』、赤だと『座布団運び』、それ以外の色だと『回答者』、
該当する色がない場合は”ありません”と表示されます。

では色々と値を変えて結果をみてみまっしょい。
02-5
02-3
02-2
02-1
02-4
こんな感じです。灰色と紫の場合も、
キチンと回答者に振り分けられてますね(`・ω・´)

さて、このcase文ですが、あくまで条件分岐の仲間です。
ですので、同じ結果を出すプログラムを、if文でも書けます。

というわけでやってみました。
最初のプログラムをif文で書き換えてみます。
こんな感じ。

# encoding: utf-8

#変数に値を代入
name = "管理人"
favorite = "緑"

#favoriteの値によって条件分岐
if favorite === "緑" then
  shouten_member = "歌丸師匠"
elsif favorite === "水" then
  shouten_member = "小遊三師匠"
elsif favorite === "ピンク" then
  shouten_member = "好楽師匠"
elsif favorite === "黄" then
  shouten_member = "木久扇師匠"
elsif favorite === "灰" then
  shouten_member = "昇太師匠"
elsif favorite === "紫" then
  shouten_member = "園楽師匠"
elsif favorite === "オレンジ" then
  shouten_member = "たい平師匠"
elsif favorite === "赤" then
  shouten_member = "山田くん"
else
  shouten_member = "いません"
end

#結果を表示
print "name = ",name,"\n"
print "favorite = ",favorite,"\n\n"

print name," さんが好きな笑点メンバーは、",shouten_member,"。\n\n"

なんだかごっちゃごちゃですねぇ(;・∀・)
これで同じ結果が出るはずです。

ちなみによく見ると、条件式のところが
『favorite == “緑”』ではなく、『favorite === “緑”』となってまして、
ちょっと違います。

『==』と『===』の違いは、また後日やると思います。
とりあえずは『===』の存在だけ覚えておいていただければ……

まぁそんなわけで、2回に渡る条件分岐でした。
他にもあるのですが、大体使うのはこのへんかなと。