LoginSignup
0
0

More than 1 year has passed since last update.

Ruby 練習問題5 ~ if → unlessへの書き換え ~

Posted at

こんにちは、プログラミング初学者"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 + b0の場合でも、「a + b が0より小さい」という条件式がfalse となるため文字列が表示されてしまいます。

a + b0の際に文字列を表示させないようにするには、
「a + b が0以上のとき」にfalse になる条件式に変更します。
下記のような演算子<=を使用したコードとします。

unless a + b <= 0
  puts "計算結果は0より大きいです"
end

最後に

いかがでしたでしょうか!

「〜よりも」、「〜以上」、「〜以下」、「〜を含む」など、
それぞれの条件を正しく理解して、それに合った演算子を使用するのが大切ですね!

ここまでお読み頂き、有難うございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0