blog.dopana

Back

C++入門シリーズの第3回です。プログラムは主に上から下へ実行されますが、実際のプログラムには判断と繰り返しが必要です。

ifとelse#

int score = 85;

if (score >= 90) {
    std::cout << "Grade: A\n";
} else if (score >= 70) {
    std::cout << "Grade: B\n";
} else {
    std::cout << "Grade: C\n";
}
cpp

条件はブール式でなければなりません。ANDは&&、ORは||、NOTは!を使います。本体は必ず波括弧で囲みます — 後で行を追加するときのバグを防げます。

switch#

離散的な値が多い場合は、else ifの連鎖よりswitchの方が明確です:

switch (day) {
    case 1:
        std::cout << "Monday\n";
        break;
    case 2:
        std::cout << "Tuesday\n";
        break;
    default:
        std::cout << "Weekend\n";
        break;
}
cpp

breakはフォールスルーを防ぎます。書き忘れはC++の古典的なバグです。

whileとdo-while#

int n = 3;
while (n > 0) {
    std::cout << n << " ";
    --n;
}
// 出力: 3 2 1
cpp

whileは実行前にチェックします。do-whileは最低1回実行されます:

int n;
do {
    std::cout << "Enter a positive number: ";
    std::cin >> n;
} while (n <= 0);
cpp

forループ#

forは初期化・条件・ステップをまとめます:

for (int i = 0; i < 5; ++i) {
    std::cout << i << " ";
}
// 出力: 0 1 2 3 4
cpp

範囲ベースfor#

コンテナの走査は範囲ベースループが最も簡単です:

std::vector<int> v{10, 20, 30};
for (int x : v) {
    std::cout << x << " ";
}
cpp

breakとcontinue#

  • breakはループを即座に抜けます。
  • continueは現在の反復の残りをスキップして次へ進みます。
for (int i = 0; i < 10; ++i) {
    if (i % 2 == 0) continue;   // 偶数をスキップ
    if (i > 7) break;           // 9で停止
    std::cout << i << " ";
}
// 出力: 1 3 5 7
cpp

結論#

条件分岐は経路を選び、ループは処理を繰り返します。組み合わせることで直線的なコードが本物のロジックになります。シリーズ次回は関数です。

参考文献#