真偽値について

Kazunori Kamiya
Aug 23, 2017 · 4 min read

・Exercise28:真偽値について

前回のエクササイズから学んだ論理の組み合わせは、ブール論理演算と呼ばれます。
ブール論理はプログラミングにおいてあらゆるところで使われており、計算の基礎に当たります。

このエクササイズでは、覚えた論理式を実際にRubyの中で使っていきます。
それぞれの問題を見て、その答えを書いてみてください。
答えはtrueもしくはfalseのどちらかになります。
答えを記入したら、それぞれ合っているかどうかターミナル上でRubyを起動して確かめてみてください。

  1. true && true ⇨ true
  2. false && true ⇨ false
  3. 1 == 1 && 2 == 1 ⇨ false
  4. “test” == “test” ⇨ true
  5. 1 == 1 || 2 != 1 ⇨ true
  6. true && 1 == 1 ⇨ true
  7. false && 0 != 0 ⇨ false
  8. true || 1 == 1 ⇨ true
  9. “test” == “testing” ⇨false
  10. 1 != 0 && 2 == 1 ⇨ false
  11. “test” != “testing” ⇨ true
  12. “test” == 1 ⇨ false
  13. !(true && false) ⇨ true
  14. !(1 == 1 && 0 != 1) ⇨ false
  15. !(10 == 1 || 1000 == 1000) ⇨ false
  16. !(1 != 10 || 3 == 4) ⇨ false
  17. !(“testing” == “testing” && “Zed” == “Cool Guy”) ⇨ true
  18. 1 == 1 && (!(“testing” == 1 || 1 == 0)) ⇨ true
  19. “chunky” == “bacon” && (!(3 == 4 || 3 == 3)) ⇨ false
  20. 3 == 3 && (!(“testing” == “testing” || “Ruby” == “Fun”)) ⇨ false

ブール論理を見た際に、以下のことを念頭に入れておけば簡単に解くことができます。

  1. “==”もしくは”!=”を見つけた場合、それをその真偽と入れ替える。
  2. 丸括弧()の中に”&&/||”を見つけた場合、そこを先に解く。
  3. “!”を見つけた場合は、その内容を逆に置き換える。
  4. 残りの”&&/||”を見つけた場合、そこを解く。
  5. そこまで終われば、trueかfalseかわかるはず。

このことを念頭に置いて、20番を一緒に解いてみましょう。

3 != 4 && !("testing" != "test" || "Ruby" == "Ruby")
  1. イコールテストを行う。

3 != 4 IS TRUE: TRUE && !(“TESTING” != “TEST” || “RUBY” == “RUBY”)

“TESTING” != “TEST” IS TRUE: TRUE && !(TRUE || “RUBY” == “RUBY”)

“RUBY” == “RUBY”: TRUE && !(TRUE || TRUE)

2. 丸括弧()の中に”&&/||”を見つける。

(TRUE || TRUE) IS TRUE: TRUE && !(TRUE)

3. “!”を見つけた場合は、その内容を逆に置き換える。

!(TRUE) IS FALSE: TRUE && FALSE

4. 残りの”&&/||”を見つけてそれを解く。

TRUE && FALSE IS FALSE

これで終了で、答えがfalseとわかります。

出力結果について

Ruby上で実行すると、以下のようになると思います。

学習ドリル

  1. Rubyには他にも、“!=”や”==”に似たようなものがたくさんあります。これらの等号演算子を、できるだけ多く見つけてください。例えば、”<”や”<=”のようなものです。
  2. それぞれの等号演算子の名前もしくは意味を書いてください。例えば”!=”なら、”not equal”といった感じです。
  3. それら新たなブール論理値を使い、Ruby上で論理式を使って遊んでみてください。勿論実行する前に、自分で答えを考えてみましょう。

学習ドリルの答え

1 & 2. 見つけた等号演算子とその意味は、以下のようになります。

<= :値がそれ以下ならtrue

>= :値がそれ以上ならtrue

<=> :「左辺 < 右辺」であれば-1を、「左辺 > 右辺」であれば1を、等しければ0を返す

== :同じならtrue

=== :同じならtrue

!= :等しくなければtrue

=~ :正規表現、指定文字列があればtrue

!~ :正規表現、指定文字列がなければtrue

3. 以下のように適当に論理式を作成して実行してみました。

)
Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade