ハッシュ
先に説明しようと思ったのですが書いたほうが早いですね
ではこのようなコードを
manga = {'DB'=>'42巻','ハガレン'=>'27巻', 'こち亀'=>'200巻'}
puts manga
puts manga['DB']
puts manga['ハガレン']
puts manga['こち亀']
実行してみてください
こうなりましたか?
それでは解説
ハッシュとは
キー: 値
を設定するものです
今回コードは「manga」という変数に「キー(漫画名)」と「値(巻数)」を持たせています
puts manga['DB']
これは
変数mangaのキーDBの値を出力
という命令になります
条件分岐(if文)
さてここから一気にプログラミングっぽくなります!
今までは書いたものを出力って感じでしたが今回は
ユーザーから入力されたデータで出力を変える!
とった処理をしていきます
早速コードを書きましょう
puts '果汁50%のオレンジジュースを2本足したら果汁は何%'
ans = gets.to_i
if ans == 50
puts 'さすが!'
else
puts '!?!?!?'
end
これで実行してください
実行したら
- 50と入力するバージョン
- 50以外を入力するバージョン
の2つを試してみてください
50と入力したら
50以外を入力したら
になってたらOKです
コードの解説をします
gets.to_iは前回やったので割愛
条件分岐は
if 条件式
条件式がture(真)の時の処理
else
条件式がfalse(偽)の時の処理
end
で記述します
今回は「ans == 50」で「ansが50であれば下記を実行」ということ
「==」は等しいという意味です
条件式に一致するものをtrue(真)
一致しないものをfalse(偽)と言います
elseは条件式(真)以外のものを指します
またelseが必要では無い時は省略できます
ちょっと条件式に関して色々あるので何個か見てみましょうか
- if ans == 10
- if ans != 10
- if ans > 10
- if ans >= 10
- if ans < 10
- if ans <= 10
ざっとこんな感じです
注目すべき点は赤色の部分の記号
どういう時にtrue(真)になるかというと
- 左辺と右辺が等しい時
- 左辺と右辺が等しくない時
- 左辺が右辺より大きい時(今回だと11以上)
- 左辺が右辺以上の時(今回だと10以上)
- 左辺が右辺より小さい時(今回だと9以下)
- 左辺が右辺以下の時(今回だと10以下)
という風になります
では一旦こういったコードを書いて条件式の記号を色々変えて試してみてください
ans = 10
if ans == 10
puts 'OK'
end
より複雑な条件分岐
elseは条件式(真)以外ということを学びましたね
次は条件式(真)をもう一つ用意したい場合です
こういうコードを書いてみましょう
puts 'うどん派?そば派?'
ans = gets.to_s.chomp
if ans == 'うどん'
puts 'あなたは親友'
elsif ans == 'そば'
puts 'ふーん'
else
puts '「うどん」か「そば」で入力してください'
end
これで実行
ちょっと先に
ans = gets.to_s.chomp
を解説
gets.to_sで文字列の入力を受け付けます
ただこれは見えない部分で入力した文字列の後ろに「改行コード」が追加されます
これを禁止するために「.chomp」をつけています
改行コードは見えないくせに条件式には反映されるので.chompをしておかないと必ず条件式がfalse(偽)になってしまいます
試してみてください
elsifで条件式を足すことが出来ます
もちろん何個増やしても大丈夫です
&&と||を使う
では早速コードを
ans1 = 10
ans2 = 5
if ans1 == 10 && ans2 == 5
puts 'OK'
else
puts 'BAD'
end
では実行
OKが表示されましたか?
次にans1かans2どちらでもいいので数値を変えてみて実行してください
すると「BAD」が表示されましたね
&&は条件式すべてが正しいとtrue(真)になります
では||を使ってみましょう
こんな感じ
ans1 = 10
ans2 = 100
if ans1 == 10 || ans2 == 5
puts 'OK'
else
puts 'BAD'
end
これで実行
するとOKと表示されましたよね
||は条件式のどれかが正しいとtrue(真)になります
条件分岐(case文)
今回はここまでにしましょう!
これが終われば復習したり休憩したりしてください
おすすめの休憩方法は「ホットアイマスクして好きな音楽聞いて横になる」です
次は別の条件分岐を使ってみましょう
まずはコードから
manga = 'ドラゴンボール'
case manga
when 'ドラゴンボール'
puts '超王道バトルマンガですね'
when 'こち亀'
puts '伝説の逆漫画ですね'
when 'スラムダンク'
puts '涙腺崩壊青春スポーツ漫画ですね'
else
puts '僕知らない'
end
これで実行してみてください
また変数mangaの値を「こち亀」「スラムダンク」もしくはそれ以外に変えてみてください
ifとcaseの使い分けは
- if文は条件に一致した時のみ処理をしたい
- case文は複数ある候補の中から真を探して処理する
といった具合でしょうか
個人開発だとぶっちゃけ難しく考えずに使いやすい、コードがスッキリする方を採用とかでもいいです
実務になるとチームと合わせる必要はあります
次回、演習
次回演習しま〜す
こちらから!