ハッシュ

先に説明しようと思ったのですが書いたほうが早いですね

ではこのようなコードを

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が必要では無い時は省略できます

ちょっと条件式に関して色々あるので何個か見てみましょうか

  1. if  ans ==  10
  2. if ans != 10
  3. if ans > 10
  4. if ans >= 10
  5. if ans < 10
  6. if ans <= 10

ざっとこんな感じです

注目すべき点は赤色の部分の記号

どういう時にtrue(真)になるかというと

  1. 左辺と右辺が等しい時
  2. 左辺と右辺が等しくない時
  3. 左辺が右辺より大きい時(今回だと11以上)
  4. 左辺が右辺以上の時(今回だと10以上)
  5. 左辺が右辺より小さい時(今回だと9以下)
  6. 左辺が右辺以下の時(今回だと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文は複数ある候補の中から真を探して処理する

といった具合でしょうか

個人開発だとぶっちゃけ難しく考えずに使いやすい、コードがスッキリする方を採用とかでもいいです

実務になるとチームと合わせる必要はあります

次回、演習

次回演習しま〜す

こちらから!

Rubyの演習問題01

カテゴリー: Ruby

コメントを残す

メールアドレスが公開されることはありません。

Rating

wp-puzzle.com logo