0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Ruby8

Last updated at Posted at 2023-01-30

問題

次の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



逆を考えるところまでは正解でしたが、演算子(<=)が出ませんでした。
改めて解説を理解しながら学ぶと発見があります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?