こんにちは、プログラミング初学者"fujitacoma"です!
今回は、Ruby練習問題シリーズの5回目です。
unless文を使用した条件式の記述問題ですね。
それでは早速始めます!
問題
次のif文をunlessというメソッドを用いて書き換えてください。
if a + b > 0
puts "計算結果は0より大きいです"
end
ヒント
unless
unlessとはifとは逆で、条件式がfalseの場合に処理が実行されます。
ifを使用した場合
if 条件式
条件式がtrueの時に実行する処理
else
条件式がfalseの時に実行する処理
end
unlessを使用した場合
unless 条件式
条件式がfalseの時に実行する処理
else
条件式がtrueの時に実行する処理
end
解答と解説
模範解答
unless a + b <= 0
puts "計算結果は0より大きいです"
end
解説
まず問題のコードについて解説を行います。a + b > 0
という式は、
「a + b が0より大きいとき」にtrue となり、
その結果end
までの処理が実行され文字列が表示されます。
if a + b > 0
puts "計算結果は0より大きいです"
end
上記のコードのifをunlessに変更したらどうなるかを見てみましょう。
unless a + b > 0
puts "計算結果は0より大きいです"
end
この場合、「a + b が0より大きい」という条件式がfalse の時に文字列が表示されます。
つまり、「a + b が0より大きくないとき」 に文字列が表示されます。
しかし、これだと条件式と行いたい処理の内容に齟齬があるため、編集が必要です。
このように演算子を>
から<
に変更するとどうでしょうか。
unless a + b < 0
puts "計算結果は0より大きいです"
end
この場合は、 「a + b が0より小さい」 という条件式がfalseの時、
つまり 「a + b が0より小さくないとき」 に文字列が表示されます。
しかしa + b
が0
の場合でも、「a + b が0より小さい」という条件式がfalse となるため文字列が表示されてしまいます。
a + b
が0
の際に文字列を表示させないようにするには、
「a + b が0以上のとき」にfalse になる条件式に変更します。
下記のような演算子<=
を使用したコードとします。
unless a + b <= 0
puts "計算結果は0より大きいです"
end
最後に
いかがでしたでしょうか!
「〜よりも」、「〜以上」、「〜以下」、「〜を含む」など、
それぞれの条件を正しく理解して、それに合った演算子を使用するのが大切ですね!
ここまでお読み頂き、有難うございました!