C++の制御フロー: 条件分岐とループ
if/elseとswitchで判断し、while、do-while、forループで処理を繰り返すC++の基本を学ぶ。
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;
}cppbreakはフォールスルーを防ぎます。書き忘れはC++の古典的なバグです。
whileとdo-while#
int n = 3;
while (n > 0) {
std::cout << n << " ";
--n;
}
// 出力: 3 2 1cppwhileは実行前にチェックします。do-whileは最低1回実行されます:
int n;
do {
std::cout << "Enter a positive number: ";
std::cin >> n;
} while (n <= 0);cppforループ#
forは初期化・条件・ステップをまとめます:
for (int i = 0; i < 5; ++i) {
std::cout << i << " ";
}
// 出力: 0 1 2 3 4cpp範囲ベースfor#
コンテナの走査は範囲ベースループが最も簡単です:
std::vector<int> v{10, 20, 30};
for (int x : v) {
std::cout << x << " ";
}cppbreakと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 7cpp結論#
条件分岐は経路を選び、ループは処理を繰り返します。組み合わせることで直線的なコードが本物のロジックになります。シリーズ次回は関数です。