C++ における「制御構文(Flow Control)」は、プログラムの実行順序を制御するための重要な要素です。制御構文は、条件に基づいてプログラムの流れを変えることができるため、複雑なロジックを実現する際に不可欠です。ここでは、C++ における制御構文の種類とその使用方法について、詳細かつ包括的に解説します。
1. if 文
if 文は、条件式が真である場合に特定のブロックのコードを実行するための基本的な制御構文です。最も基本的な形は以下のようになります。
cppif (条件式) {
// 条件式が真の場合に実行されるコード
}
例:
cppint x = 10;
if (x > 5) {
cout << "xは5より大きいです。" << endl;
}
上記のコードでは、変数 x が 5 より大きい場合に「xは5より大きいです。」というメッセージが出力されます。
2. else 文
if 文と組み合わせて使用されるのが else 文です。else 文は、if の条件式が偽であった場合に実行されるブロックを指定します。
cppif (条件式) {
// 条件式が真の場合に実行されるコード
} else {
// 条件式が偽の場合に実行されるコード
}
例:
cppint x = 2;
if (x > 5) {
cout << "xは5より大きいです。" << endl;
} else {
cout << "xは5より小さいか等しいです。" << endl;
}
ここでは、x が 5 より大きい場合に「xは5より大きいです。」が表示され、そうでなければ「xは5より小さいか等しいです。」が表示されます。
3. else if 文
else if 文は、複数の条件を順番にチェックするために使用します。最初の if が偽の場合、次に else if の条件を評価し、さらに偽であれば最終的に else が実行されます。
cppif (条件式1) {
// 条件式1が真の場合に実行されるコード
} else if (条件式2) {
// 条件式1が偽で、条件式2が真の場合に実行されるコード
} else {
// 条件式1と条件式2が偽の場合に実行されるコード
}
例:
cppint x = 10;
if (x > 15) {
cout << "xは15より大きいです。" << endl;
} else if (x > 5) {
cout << "xは5より大きく、15より小さいです。" << endl;
} else {
cout << "xは5以下です。" << endl;
}
上記のコードでは、x の値が 10 であるため、xは5より大きく、15より小さいです。というメッセージが表示されます。
4. switch 文
switch 文は、複数の選択肢から一つを選ぶための制御構文です。特定の値に基づいて異なるコードブロックを実行します。
cppswitch (変数) {
case 値1:
// 変数が値1の場合に実行されるコード
break;
case 値2:
// 変数が値2の場合に実行されるコード
break;
default:
// 変数がどの値にも一致しない場合に実行されるコード
break;
}
例:
cppint day = 3;
switch (day) {
case 1:
cout << "月曜日" << endl;
break;
case 2:
cout << "火曜日" << endl;
break;
case 3:
cout << "水曜日" << endl;
break;
default:
cout << "無効な日付です。" << endl;
break;
}
この場合、day の値が 3 なので、「水曜日」が出力されます。
5. while ループ
while ループは、指定された条件が真である限り、繰り返し処理を行うループです。条件式が最初に評価され、条件が真である限りループが続きます。
cppwhile (条件式) {
// 条件式が真の間、繰り返し実行されるコード
}
例:
cppint i = 0;
while (i < 5) {
cout << "iの値は " << i << endl;
i++;
}
この例では、i が 5 より小さい間、i の値を表示し続けます。i が 5 に達すると、ループは終了します。
6. do-while ループ
do-while ループは、最初にコードを実行し、その後に条件式が評価されます。条件式が偽であっても、最低一度はループ内のコードが実行されます。
cppdo {
// 条件式が偽であっても、最初に必ず実行されるコード
} while (条件式);
例:
cppint i = 0;
do {
cout << "iの値は " << i << endl;
i++;
} while (i < 5);
このコードも、i の値を表示し、i が 5 より小さい間、ループが続きます。
7. for ループ
for ループは、指定された回数だけ繰り返し処理を行うループです。ループの初期化、条件式、更新を一行で指定することができます。
cppfor (初期化; 条件式; 更新) {
// 繰り返し実行されるコード
}
例:
cppfor (int i = 0; i < 5; i++) {
cout << "iの値は " << i << endl;
}
この例では、i が 0 から 4 までの値を順番に表示します。
8. continue 文
continue 文は、現在のループの反復をスキップし、次の反復に進むために使用します。通常、if 文と組み合わせて使用します。
cppfor (int i = 0; i < 5; i++) {
if (i == 3) {
continue; // iが3のときはスキップ
}
cout << "iの値は " << i << endl;
}
このコードでは、i が 3 のときにその反復をスキップし、他の値のときは i の値を表示します。
9. break 文
break 文は、ループや switch 文の実行を途中で終了するために使用されます。特定の条件を満たした場合に、処理を早期に終了させたいときに使います。
cppfor (int i = 0; i < 5; i++) {
if (i == 3) {
break; // iが3のときにループを終了
}
cout << "iの値は " << i << endl;
}
この場合、i が 3 に達するとループが終了し、「iの値は 0」「iの値は 1」「iの値は 2」のみが表示されます。
結論
C++ における制御構文は、プログラムのロジックを柔軟に制御するために不可欠な要素です。if 文、switch 文、ループ構文(while、do-while、for)、および break、continue のような制御フローを活用することで、さまざまな条件に対応した効率的なプログラムを書くことができます。これらの制御構文を適切に使用することで、複雑な問題を解決し、より動的なプログラムを作成することが可能になります。
