初めに
初学者です。rubyの問題を私なりに解説することによって定着するのが目的です。間違いなどありましたらご指摘お願いします。
問題
以下の条件式をif文を用いて記述してください。
数値numが1以上かつ10以下の範囲であればTrueを出力します。
または、outside_modeがTrueの場合は数値numが0以下、11以上であってもTrueを出力します。
それ以外はFalseを出力する条件を論理演算子&&と||を用いて作りましょう。
def in1to10(num, outside_mode)
# ここに条件式を記述する
end
ではまず論理演算子である&&と||の解説からしていきます。
&&
&&とは2つの値が真の時に真を返します。
例としては A && B ではAとB両方とも真の場合真を返す、片方でも真でなければfalseを返します。
&&演算子はandとも表せれます。andに変換するとわかりやすくなると思います。ただ基本的には&&の方を使うそうです。
||
||とは2つの値どちらかが真の場合、真を返します。要するにA||Bという式があった場合、AとB両方とも偽の場合は偽になりそれ以外は全て真になります。
では上記2つの論理演算子を使用して回答を書いていきます。
解説
まず今回は、in1to10メソッドに返す引数は(5,false)にします。
def in1to10(num, outside_mode)
end
in1to10(5,false)
では条件式をif文を使用して書いていきます。
まず最初に問題文の『数値numが1以上かつ10以下の範囲であればTrueを出力します。』の部分から書いていきます。
1以上、10以下と2つの条件が指定されています。よって&&を使い条件を2つ記述します。
def in1to10(num, outside_mode)
if(num >= 1 && num <= 10)
puts "True"
end
end
in1to10(5,false)
続いては『または、outside_modeがTrueの場合は数値numが0以下、11以上であってもTrueを出力します。』の部分です。
ここでは、||を使います。outside_modeがTrueの場合は||の前に式がfalseでもTrueになるからです。
def in1to10(num, outside_mode)
if (num >= 1 && num <= 10) || outside_mode
puts "True"
end
end
in1to10(5,false)
最後にelseでそれ以外はfalseになる記述を書いたら終了です。
def in1to10(num, outside_mode)
if (num >= 1 && num <= 10) || outside_mode
puts "True"
else
puts "False"
end
end
in1to10(5,false)
また今回の式では最初の5が1以上かつ10以下の数値になっているのでTrueを返します。