演習課題「順位に合わせてメッセージを表示する」
右のコードは、実行するたびに、1から10までの数値をランダムに生成して、順位として表示します。そして、flag変数に、3位以内かどうかの評価結果を代入します。
ここにif文を追加して、flag変数がtrueの時に「入賞おめでとう!」と表示するようにしてください。
プログラムを実行して、正しく出力されれば演習課題クリアです!
期待する出力値
あなたの順位は(1..3)位です
入賞おめでとう!
-----
あなたの順位は(4..10)位です
#09:【補講】条件式の評価結果を理解しよう
ここでは、条件の評価結果について学習します。if文で、条件を評価すると、「条件が成立したとき」と「成立しなかったとき」という2つの状態になります。Rubyは、この状態を表す専用のデータを持っています。
Rubyでは、「条件が成立したとき」と「成立しなかったとき」という状態を専用のデータで表します。条件が成立したときの状態を「真」または「true」(トゥルー)と呼びます。そして、条件が成立しなかったときの状態を「偽」または「false」(フォールス)と呼びます。
- 条件が成立したとき:真、true
- 条件が成立しなかったとき:偽、false
if文の条件式は、論理演算です。たとえば、次のようなな条件式は、number変数の値によって、条件が成立したり、成立しなかったりします。
number変数が「1」の場合
- number == 1 true
- number <= 10 true
- number >= 10 false
- number < 10 true
- number > 10 false
number変数が「10」の場合
- number == 1 false
- number <= 10 true
- number >= 10 true
- number < 10 false
- number > 10 false
論理演算は、評価の結果として、trueかfalseを返します。
ANDやORを使って組み合わせた条件式も論理演算です。
ANDでは、number1変数とnumber2変数の値が、次のようになっていた場合、評価結果は次のようになります。
number1 | number2 | number1 == 1 && number2 == 1 |
---|---|---|
0 | 0 | false |
0 | 1 | false |
1 | 0 | false |
1 | 1 | true |
ORでは、number1変数とnumber2変数の値が、次のようになっていた場合、評価結果は次のようになります。
(スライド)
number1 | number2 | number1 == 1 || number2 == 1 |
---|---|---|
0 | 0 | false |
0 | 1 | true |
1 | 0 | true |
1 | 1 | true |
true(トゥルー)かfalse(フォールス)という条件式の評価結果もデータなので、変数に代入することができます。
2行目の式は、「number == 1」の評価結果を、flag変数に代入しています。# 条件式の評価結果を理解する
number = 1
flag = number == 1
if flag
puts "スキ!" #条件式が成立したときの処理
else
puts "キライ" #条件式が成立しなかったときの処理
end
p flag
pメソッドが、データを出力するメソッドです。文字列の場合はダブルクォーテーションで囲んでくれる、というようにデータの種類に合わせた形式で出力してくれるので、デバッグや動作確認に便利に使えます。p 123
p "123"
- 真理値 - Wikipedia
https://ja.wikipedia.org/wiki/%E7%9C%9F%E7%90%86%E5%80%A4
- 擬似変数 true, false, nil - 条件分岐 - Ruby入門
http://www.rubylife.jp/ini/if/index2.html
- Rubyの真偽値・nilとfalseだけが偽 | Ruby入門 - Worth Living
http://worthliv.com/ruby_rubynilfalse.html
- 演算子の優先順位(関係演算子、論理演算子) - 条件分岐 - Ruby入門
http://www.rubylife.jp/ini/if/index5.html
- 【Ruby】表示メソッドについて (print, puts, p) - TASK NOTES
http://www.task-notes.com/entry/20141109/1415520719