C++における「ループ(Loops)」は、繰り返し処理を行うための重要な機能です。プログラム内で何度も同じ処理を繰り返し実行したい場合に使用されます。ここでは、C++におけるループの基本から高度な使用法までを包括的に解説します。
1. ループの基本概念
ループは、条件が成立している間、または特定の回数だけ繰り返し実行される処理を指します。C++では主に3つのタイプのループが使用されます:
-
forループ
-
whileループ
-
do-whileループ
これらの各ループは異なるシナリオで有効に機能します。ここではそれぞれを詳細に見ていきます。
2. forループ
forループは、反復回数が事前に決まっている場合に最適です。構文は次のようになります。
cppfor (初期化; 条件; 更新) {
// 繰り返し実行されるコード
}
forループの構造
-
初期化: ループが始まる前に一度だけ実行される部分です。通常、ループのカウンタ変数を初期化します。
-
条件: ループを実行する条件です。この条件が
trueの場合、ループが実行されます。falseになるとループは終了します。 -
更新: 各ループの繰り返し後に実行される部分です。通常、カウンタ変数を更新します。
例
次の例は、1から10までの整数を出力するforループです。
cpp#include
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
cout << i << " ";
}
return 0;
}
このプログラムは、1から10までの数字を順番に出力します。
3. whileループ
whileループは、繰り返し条件がtrueである限り、コードを実行し続けます。繰り返し回数が決まっていない場合や、条件が動的に変化する場合に使用されます。構文は次のようになります。
cppwhile (条件) {
// 繰り返し実行されるコード
}
例
次の例は、ユーザーが入力した数が負の数でない限り繰り返し入力を促すプログラムです。
cpp#include
using namespace std;
int main() {
int num;
cout << "Enter a number (negative number to stop): ";
cin >> num;
while (num >= 0) {
cout << "You entered: " << num << endl;
cout << "Enter another number (negative number to stop): ";
cin >> num;
}
cout << "You entered a negative number. Exiting..." << endl;
return 0;
}
このプログラムは、ユーザーが負の数を入力するまで繰り返し数を入力させます。
4. do-whileループ
do-whileループは、ループの本体を少なくとも1回は実行し、その後に条件を評価するループです。繰り返し回数が事前に決まっていない場合や、最初に必ず1回実行する必要がある場合に有効です。構文は次のようになります。
cppdo {
// 繰り返し実行されるコード
} while (条件);
例
次の例では、ユーザーに1回以上数を入力させ、その後負の数が入力されるまで繰り返します。
cpp#include
using namespace std;
int main() {
int num;
do {
cout << "Enter a number (negative number to stop): ";
cin >> num;
if (num >= 0) {
cout << "You entered: " << num << endl;
}
} while (num >= 0);
cout << "You entered a negative number. Exiting..." << endl;
return 0;
}
この例では、do-whileループを使用して、最初に必ず1回数を入力させ、その後負の数が入力されるまで繰り返し入力を促します。
5. 無限ループ
無限ループは、条件が常にtrueである限り、ループが永遠に繰り返し実行される状況です。無限ループを使用する際は、必ず終了条件を設ける必要があります。無限ループを作るには、while(true)やfor(;;)などを使用します。
例
次の例では、無限ループを使用してユーザーに「exit」と入力するまで続けさせます。
cpp#include
#include
using namespace std;
int main() {
string input;
while (true) {
cout << "Enter 'exit' to stop: ";
cin >> input;
if (input == "exit") {
break;
}
}
cout << "Exiting the loop." << endl;
return 0;
}
ここでは、ユーザーが「exit」と入力するまで無限ループが続き、入力されるとbreak文でループを終了します。
6. ループの中での制御
C++では、ループ内で特定の制御を行うためにbreakやcontinueを使用することができます。
-
break: ループを強制的に終了させます。
-
continue: 現在の反復をスキップし、次の反復に進みます。
例
次の例では、1から10までの整数のうち、偶数のみを出力するプログラムです。continueを使用して奇数の数をスキップしています。
cpp#include
using namespace std;
int main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 != 0) {
continue; // 偶数でない場合、次のループへ
}
cout << i << " ";
}
return 0;
}
このプログラムは、偶数のみを表示します。i % 2 != 0の場合にcontinueが実行され、奇数はスキップされます。
7. まとめ
C++におけるループは、繰り返し処理を行うための強力なツールです。forループ、whileループ、do-whileループの3種類があり、それぞれに適した使用方法があります。特に、ループ内での制御構文(breakやcontinue)を適切に活用することで、効率的なプログラムが作成できます。
ループを正しく使いこなすことで、複雑な反復処理や条件に基づいた処理を簡潔に実現することができます。C++のプログラムをさらに効率的に書くためには、これらのループの特徴と使い方を理解することが重要です。
