if文とは
もし晴れ予報なら洗濯をして出かけよう
もし雨予報なら傘を持って出かけよう
みたいな、ある条件によって行動を決めることってよくありますよね?
if文はこのように、「もし〜だったら〜」と条件を指定して、
その条件を満たすときに設定した動作をするプログラムを書くときに使う文法です。
書き方は
if 条件
処理
end
という形になります。
▼例
age = 18
if age < 20
puts "未成年の飲酒は禁止されています。"
end
↓出力結果
未成年の飲酒は禁止されています。
「もし20(歳)未満だったら"未成年の飲酒は禁止されています。"と表示してね」というプログラムで、ageが18なので正しく処理されていますね。
if~else、if~elsif
「もし〜だったら」と指定してその条件を満たす場合は処理が正しく行われるのでいいのですが、「もし〜じゃなかったら」どうなるのでしょうか?
「もし20(歳)未満だったら"未成年の飲酒は禁止されています。"と表示して、もし20(歳)未満じゃなかったら・・・」
このように「もし〜だったら」に追加して「もし〜じゃなかったら」というときの処理を書く場合は【else】を使います。
if 条件
条件を満たす場合の処理
else
条件を満たさない場合の処理
end
▼例
age=21
if age < 20
puts "未成年の飲酒は禁止されています。"
else
puts "酒は飲んでも飲まれるな。"
end
↓出力結果
酒は飲んでも飲まれるな。
「もし20(歳)未満だったら"未成年の飲酒は禁止されています。"と表示して、もし20(歳)未満じゃなかったら"酒は飲んでも飲まれるな。"と表示してね。」というプログラムで、ageが21なので正しく処理されていますね。
では、条件が3こ以上の場合はどうなるでしょうか。
もしAだったらA'する
もしBだったらB'する
もしCだったらC'する
このような場合は【elsif】を使って新しい条件を追加していきます。
※「elseif」ではなく【elsif】ですので注意してください。
if 条件A
条件Aを満たす場合の処理(A')
elsif 条件B
条件Bを満たす場合の処理(B')
else
条件A,Bを満たさない場合の処理
end
▼例
age=20
if age < 20
puts "未成年の飲酒は禁止されています。"
elsif age==20
puts "お酒が飲める年齢です。"
else
puts "酒は飲んでも飲まれるな。"
end
↓出力結果
お酒が飲める年齢です。
▼例
age=30
if age < 20
puts "未成年の飲酒は禁止されています。"
elsif age==20
puts "お酒が飲める年齢です。"
else
puts "酒は飲んでも飲まれるな。"
end
↓出力結果
酒は飲んでも飲まれるな。
このように条件によって処理内容が分岐するプログラムを「条件分岐」と言います。
if文でよく使う演算子
上の例で「age==20」というのがありましたが、これは「=(イコール)」の意です。
「=」だと変数に代入するときの「=」と紛らわしいので「==」とすることになっています。
この他にもよく使うものとして
「>=」(例:A >= B :AがB以上の場合)
「<=」(例:A <= B :AがB以下の場合)
といった演算子もよく使います。
1行で書く方法もある
たとえば、
▼例
age=20
if age == 20
puts "お酒が飲める年齢です。"
end
↓出力結果
お酒が飲める年齢です。
となりますが、これだけの処理に3行も使うのはもったいない。ということで、
▼例
age=20
puts "お酒が飲める年齢です。" if age == 20
↓出力結果
お酒が飲める年齢です。
という風に1行でシンプルに書くことも出来るので、覚えておくと便利です。
unless「〜ではない場合」
最後に補足ですが、「〜ではない場合」というときは「if」の代わりに「unless」を使うことで条件をつけることができます。
▼例
age=19
unless age > 20
puts "未成年の飲酒は禁止されています。"
end
↓出力結果
未成年の飲酒は禁止されています。
この例では条件が 19 > 20となり、正しくない(false)ので処理が実行されています。
このようにunlessは、後ろの条件が正しくない(false)場合に処理が行われます。
▼例
age=30
unless age > 20
puts "未成年の飲酒は禁止されています。"
end
↓出力結果
(何も表示されない)
この例の場合 30 > 20 となるので正しい(true)ですよね。
このようにunlessの後ろが正しい(true)場合は処理が行われません。
何も表示されてませんが、これはエラーではなく「処理が行われない」という処理が正しく行われています。
また、このunless文もif文と同様に1行で書くことができます。
▼例
age=19
puts "未成年の飲酒は禁止されています。" unless age > 20
↓出力結果
未成年の飲酒は禁止されています。
もし条件を満たさない時の処理だけを記述したい場合にはこのようにunless文を使うと良くて、1行で書けるというのも覚えておくと良いですね。
まとめ
・if文は、「もし〜だったら〜」と条件を指定して、その条件を満たすときに設定した動作をするプログラムを書くときに使う文法のこと
・「もし〜だったら」に追加して「もし〜じゃなかったら」というときの処理を書く場合は「else」を使う
・条件が3こ以上の場合は「elsif」を使って新しい条件を追加していく
・処理の後に条件を後置して1行で書く方法もある
・「〜ではない場合」という風に、条件を満たさない時の処理だけを記述したい場合にはunless文を使うと良くて、1行で書ける