採点されません。匿名です。 間違えることは学習の一部です。読むだけでもかまいません。

論理演算子

テクノロジ系 / conditional (if / else / switch / 三項)

論理演算子

Lesson 2 / Chapter 4

複数の条件を組み合わせたい

「年齢が 18 以上 かつ 65 未満」のように、

条件を 2 つ以上つなげて判定したい ことがある。

これまでの書き方:

<?php
if ($age >= 18) {
    if ($age < 65) {
        echo "現役世代\n";
    }
}

if を 2 段ネストすると読みにくい。論理演算子で 1 つにまとめる。

&& (かつ・and)

<?php
if ($age >= 18 && $age < 65) {
    echo "現役世代\n";
}
  • A && B両方が真のときだけ
  • かつ」「両方」を表現したいときに使う
ABA && B

|| (または・or)

<?php
if ($day === "Sat" || $day === "Sun") {
    echo "週末\n";
}
  • A || Bどちらかが真なら
  • または」「どっちか」を表現したいときに使う
ABA \\B

! (ではない・not)

<?php
if (!($n % 2 === 0)) {
    echo "偶数ではない\n";
}
  • !AA の真偽を反転 する
  • 〜ではない」を表現したいときに使う
  • 真 → 偽、偽 → 真

($n % 2 === 0) が「偶数」を表すので、

!($n % 2 === 0) で「偶数ではない」になる。

組み合わせの例

<?php
if ($n >= 0 && $n <= 100) {
    echo "範囲内\n";
}
  • 「0 以上 かつ 100 以下」= 範囲チェックの定番
  • && の左右はそれぞれ独立した条件式
<?php
if (!($age >= 18 && $age < 65)) {
    echo "現役世代ではない\n";
}

!(...) でまとめて反転もできる。

このチャプターでできるようになること

&& で「両方が真」を判定できる

|| で「どちらかが真」を判定できる

! で真偽を反転できる

✅ 複数条件を 1 つの if にまとめられる

→ ドリルへ

考えてみよう

既定では正解・不正解の判定はしません。自分のペースで「答えを見る」を。採点してほしい場合だけ「採点してほしい」を押してください。

ドリル 01 — && で範囲判定

問題

標準入力で整数を 1 行受け取り、

0 以上 かつ 100 以下 なら valid を、そうでなければ invalid を出力してください。

入力例:

50

期待される出力:

valid

採点

php scripts/grade.php topics/conditional/ch04-logical/drill/01-and/

ヒント

  • $n = (int) trim(fgets(STDIN)); で整数として読む
  • if ($n >= 0 && $n <= 100) で範囲チェック
  • elseinvalid を出す

ドリル 02 — || で週末判定

問題

標準入力で曜日を 1 行受け取ります。値は Mon Tue Wed Thu Fri Sat Sun のいずれかです。

Sat または Sun なら weekend を、そうでなければ weekday を出力してください。

入力例:

Sat

期待される出力:

weekend

採点

php scripts/grade.php topics/conditional/ch04-logical/drill/02-or/

ヒント

  • $day = trim(fgets(STDIN)); で文字列として読む
  • if ($day === "Sat" || $day === "Sun") で or 判定

ドリル 03 — ! で奇数判定

問題

標準入力で整数を 1 行受け取り、偶数ではない (= 奇数) なら odd を、

そうでなければ even を出力してください。

判定には ! 演算子を必ず使う こと。

つまり「偶数」を表す条件式を作り、それを ! で反転して使います。

入力例:

7

期待される出力:

odd

採点

php scripts/grade.php topics/conditional/ch04-logical/drill/03-not/

ヒント

  • $n % 2 === 0 が「偶数」を表す
  • !($n % 2 === 0) で「偶数ではない」になる
  • if (!($n % 2 === 0)) { ... } else { ... }