真偽値を理解しよう
学習の目標
本章では、以下の内容を学びます。
- 真偽値(true/false)の基本概念を理解する
- 比較演算子の使い方を習得する
- 論理演算子(AND/OR)の使い方を学ぶ
- 否定演算子の使い方を知る
はじめに
本章では、Rubyプログラミングにおいて重要な真偽値について学びます。
プログラムでは「はい/いいえ」の判断を頻繁に行います。例えば「ユーザーはログインしているか?」「入力された年齢は18歳以上か?」などの判断です。このような判断を行うための基礎となるのが真偽値です。
基本的な概念から、実際のコードを通して理解を深めていきましょう。
真偽値とは
プログラミングでは、「はい」か「いいえ」、「正しい」か「正しくない」のような、2つに1つの判断が必要な場面が多くあります。
Rubyではこのような「真」か「偽」かの値を真偽値と呼び、true
とfalse
という2つの値で表現します。
irbを開いて、true
とfalse
を表示してみましょう。
irb(main):001:0> puts truetrue=> nilirb(main):002:0> puts falsefalse=> nil
これらの値を使って、プログラムの中で様々な判断を行うことができます。例えば、「もし天気が晴れなら外出する」というような判断を真偽値を使って表現できます。
比較演算子を使ってみよう
比較演算子は、2つの値を比べて、その結果を真偽値で返します。日常生活でも「この数は5より大きいか?」「この2つは同じか?」などの比較をよく行いますが、それをプログラム上で行うための演算子です。
等値比較(==
, !=
)
まず、等しいかどうかを調べる==
を見てみましょう。
irb(main):003:0> puts 5 == 5 # 5と5は等しいか?true=> nilirb(main):004:0> puts 5 == 3 # 5と3は等しいか?false=> nil
次に、等しくないことを調べる!=
です。これは「〜ではない」という意味を持ちます。
irb(main):005:0> puts 5 != 3 # 5と3は等しくないか?true=> nilirb(main):006:0> puts 5 != 5 # 5と5は等しくないか?false=> nil
大小比較(>
, <
, >=
, <=
)
大小関係を調べる場合は、<
(より小さい)や>
(より大きい)を使います。
irb(main):007:0> puts 5 > 3 # 5は3より大きいか?true=> nilirb(main):008:0> puts 5 < 3 # 5は3より小さいか?false=> nil
また、以上(>=
)や以下(<=
)も使えます。これらは「より大きいか等しい」「より小さいか等しい」という意味です。
irb(main):009:0> puts 5 >= 5 # 5は5以上か?true=> nilirb(main):010:0> puts 5 <= 3 # 5は3以下か?false=> nil
文字列や他のデータ型の比較
数値だけでなく、文字列や他のデータ型も比較できます。
irb(main):011:0> puts "hello" == "hello" # 文字列の比較true=> nilirb(main):012:0> puts "hello" == "world"false=> nil
文字列の場合、大文字と小文字は区別されます。
irb(main):013:0> puts "Ruby" == "ruby"false=> nil
AND演算子とOR演算子
複数の条件を組み合わせるには、AND演算子(&&
)とOR演算子(||
)を使います。これらを使うことで、「AかつB」「AまたはB」のような複合条件を表現できます。
AND演算子(&&)
AND演算子は、左右の条件がどちらも真の場合にのみ、全体が真になります。つまり「AかつB」という条件を表します。
irb(main):014:0> puts true && true # 真かつ真true=> nilirb(main):015:0> puts true && false # 真かつ偽false=> nilirb(main):016:0> puts false && true # 偽かつ真false=> nilirb(main):017:0> puts false && false # 偽かつ偽false=> nil
この結果からわかるように、AND演算子は両方の条件がtrue
の場合にのみtrue
を返します。どちらか一方でもfalse
であれば、結果はfalse
になります。
OR演算子(||)
OR演算子は、左右の条件のどちらかが真であれば、全体が真になります。つまり「AまたはB」という条件を表します。
irb(main):018:0> puts true || true # 真または真true=> nilirb(main):019:0> puts true || false # 真または偽true=> nilirb(main):020:0> puts false || true # 偽または真true=> nilirb(main):021:0> puts false || false # 偽または偽false=> nil
OR演算子はどちらか一方でもtrue
であればtrue
を返します。両方ともfalse
の場合にのみ、結果はfalse
になります。
複合条件の例
これらを組み合わせた実践的な例を見てみましょう。
例えば、年齢が20歳以上で、かつ学生ではない場合にtrue
を返すプログラムは次のように書けます。
irb(main):022:0> age = 25=> 25irb(main):023:0> is_student = false=> falseirb(main):024:0> puts age >= 20 && !is_student # 20歳以上かつ学生ではないtrue=> nil
このコードでは、年齢が20以上かを確認し、!is_student
で「学生ではない」という条件を確認しています。
否定演算子(!)
!
は否定を表す演算子で、真偽値を反転させます。例を見てみましょう。
irb(main):025:0> puts !true # 真の否定false=> nilirb(main):026:0> puts !false # 偽の否定true=> nil
irb(main):027:0> is_sunny = true=> trueirb(main):028:0> puts !is_sunny # 晴れではない(晴れの否定)false=> nil
!
演算子を使うことで、true
はfalse
に、false
はtrue
に変換されます。
これは条件を「〜ではない」と表現したい時に便利です。例えば「雨ではない」は!is_rainy
、「閉店していない(営業中)」は!is_closed
のように表現できます。
実用的な例
真偽値と各種演算子を使った実用的な例をいくつか見てみましょう。
アクセス制限の条件
ユーザーがコンテンツにアクセスできるかどうかを判断する条件です。
is_logged_in = truehas_subscription = trueis_admin = false
# ログインしていて、かつ(サブスクリプションがあるか管理者である)can_access = is_logged_in && (has_subscription || is_admin)
puts "アクセス可能: #{can_access}" # true
この例では、括弧を使って条件の評価順序を制御しています。まずhas_subscription || is_admin
が評価され、その結果とis_logged_in
がAND条件で結合されます。
年齢による判定
年齢に基づいて入場可能かどうかを判断する例です。
age = 16is_accompanied_by_adult = true
# 18歳以上、または大人同伴の場合に入場可能can_enter = age >= 18 || is_accompanied_by_adult
puts "入場可能: #{can_enter}" # true
この例では、OR演算子を使用して「18歳以上」または「大人同伴」のどちらかの条件が満たされれば入場可能としています。
まとめ
本章では、Rubyの真偽値について学びました。
真偽値(true
とfalse
)は、プログラム内で条件判断を行うための基本的な要素です。
比較演算子(==
, !=
, >
, <
, >=
, <=
)を使うことで、値を比較して真偽値を得ることができます。
AND演算子(&&
)とOR演算子(||
)を使うことで、複数の条件を組み合わせることができます。
否定演算子(!
)を使うことで、真偽値を反転させることができます。
これらの真偽値と演算子を使うことで、プログラムの中で様々な判断を行い、より柔軟で賢いプログラムを作成することができます。
Starterプランでより詳しく学習
この先のコンテンツを読むにはStarterプラン以上が必要です。より詳細な解説、実践的なサンプルコード、演習問題にアクセスして学習を深めましょう。