if文

条件による処理の分岐を実現する

概要

プログラムが常に同じ処理をするとは限りません。 条件に応じて、異なる処理をしたいことがあります。

これを実現するのがif文です。

if文の基本形

if文は、条件が真(true)のときだけ処理を実行します。

if (条件) {
    // 条件が true のときここが実行される
}

#include <iostream>

int main() {
    int age = 20;
    
    if (age >= 18) {
        std::cout << "成人です" << std::endl;
    }
    
    return 0;
}

実行結果:
成人です

age >= 18 が true なので、 波括弧内の処理が実行されます。

if-else文

条件が真のときと偽のときで異なる処理をしたい場合は、 if-else文を使います。

if (条件) {
    // 条件が true のとき
} else {
    // 条件が false のとき
}

#include <iostream>

int main() {
    int age = 15;
    
    if (age >= 18) {
        std::cout << "成人です" << std::endl;
    } else {
        std::cout << "未成人です" << std::endl;
    }
    
    return 0;
}

実行結果:
未成人です

age >= 18 が false なので、 else ブロックが実行されます。

if-else if-else文

3つ以上の条件を判定したいときは、 else ifを使います。

if (条件1) {
    // 条件1が true
} else if (条件2) {
    // 条件1は false、条件2は true
} else if (条件3) {
    // 条件1、2は false、条件3は true
} else {
    // すべての条件が false
}

例: 成績評価

#include <iostream>

int main() {
    int score = 75;
    
    if (score >= 90) {
        std::cout << "評価: A" << std::endl;
    } else if (score >= 80) {
        std::cout << "評価: B" << std::endl;
    } else if (score >= 70) {
        std::cout << "評価: C" << std::endl;
    } else {
        std::cout << "評価: D" << std::endl;
    }
    
    return 0;
}

実行結果:
評価: C

score が 75 なので、 最初にマッチした条件(score >= 70)が実行されます。

複数の条件を組み合わせる

論理演算子(&&, ||, !)を組み合わせることで、 複雑な条件を表現できます。

AND (&&) を使う

両方の条件が true のとき実行:

int age = 25;
bool hasLicense = true;

if (age >= 20 && hasLicense) {
    std::cout << "車を運転できます" << std::endl;
}

車を運転できます

OR (||) を使う

どちらか一つが true のとき実行:

int x = 5;

if (x < 0 || x > 10) {
    std::cout << "範囲外です" << std::endl;
}

ネストされたif文

if文の中にさらにif文を入れることで、 より複雑な条件判定ができます。

int age = 25;
bool hasLicense = true;

if (age >= 18) {
    std::cout << "成人です" << std::endl;
    
    if (hasLicense) {
        std::cout << "免許があります" << std::endl;
    } else {
        std::cout << "免許がありません" << std::endl;
    }
}

成人です
免許があります

ポイント

  • if文は条件が true のときだけ処理を実行
  • else は条件が false のときに実行
  • else if で複数の条件を判定
  • 論理演算子(&&, ||)で条件を組み合わせる
  • 括弧内の条件式は bool 値を返す

よくある誤り

誤り1: セミコロンを入れてしまう

if (age >= 18);  // NG: セミコロンが入ってる
{
    std::cout << "成人です" << std::endl;
}
// 上記では波括弧内は常に実行される

誤り2: = と == を混同

if (x = 10) { }   // NG: 代入になってしまう
if (x == 10) { }  // OK: 正しい比較

誤り3: 括弧を忘れる

if age >= 18 {    // NG: 括弧が必要
    // ...
}

if (age >= 18) {  // OK
    // ...
}

やってみよう

練習1: ユーザーから整数を1つ入力させ、それが正、負、ゼロのいずれかを判定して出力するプログラム。

練習2: 3つの数値を入力させ、最大値を出力するプログラム。

チャレンジ: うるう年の判定(4で割り切れる年はうるう年。ただし100で割り切れるときは100で割り切れるときは平年。ただし400で割り切れるときはうるう年)

ヒント

複数の else if を使って段階的に判定していきます。

まとめ

  • if文で条件分岐を実現
  • if-else, if-else if-else で複数の処理を制御
  • 論理演算子で複雑な条件を表現
  • 括弧と波括弧を正しく使う