[C++] if文とループ処理を組み合わせたcontinueの使い方
C++では、ループ処理とif文を組み合わせて、特定の条件を満たした場合にループの次の反復にスキップするためにcontinue
文を使用します。
例えば、for
ループやwhile
ループ内でif
文を使って条件をチェックし、その条件が真であればcontinue
を呼び出すことで、現在の反復を終了し、次の反復に進むことができます。
これにより、特定の条件を満たす要素をスキップしたり、特定の処理を省略することが可能です。
- if文とcontinueを組み合わせた基本的な使い方
- 各種ループ(for、while、do-while)でのcontinueの使用例
- 配列や入力値のバリデーションにおけるcontinueの実践的な活用法
- 複数条件や関数との組み合わせによるcontinueの応用例
- continueを使った効率的なデータ処理とエラーハンドリングの方法
if文とループ処理におけるcontinueの使い方
C++におけるcontinue
文は、ループ内で特定の条件を満たした場合に、残りの処理をスキップして次のループの反復に進むために使用されます。
ここでは、if
文とcontinue
を組み合わせた使い方や、各種ループでの使用例を紹介します。
if文とcontinueの組み合わせ
if
文とcontinue
を組み合わせることで、特定の条件を満たした場合にループの残りの処理をスキップすることができます。
以下はその基本的な例です。
#include <iostream>
int main() {
for (int i = 0; i < 10; ++i) {
// iが偶数の場合はスキップ
if (i % 2 == 0) {
continue;
}
std::cout << "奇数: " << i << std::endl;
}
return 0;
}
このコードは、0から9までの数字のうち、奇数のみを出力します。
if
文で偶数を判定し、continue
文でその後の処理をスキップしています。
forループでのcontinueの使用例
for
ループでcontinue
を使用することで、特定の条件を満たした場合に次の反復に進むことができます。
以下はその例です。
#include <iostream>
int main() {
for (int i = 1; i <= 5; ++i) {
// 3の倍数をスキップ
if (i % 3 == 0) {
continue;
}
std::cout << "数値: " << i << std::endl;
}
return 0;
}
数値: 1
数値: 2
数値: 4
数値: 5
このプログラムは、1から5までの数値のうち、3の倍数をスキップして出力します。
whileループでのcontinueの使用例
while
ループでもcontinue
を使用することができます。
以下にその例を示します。
#include <iostream>
int main() {
int i = 0;
while (i < 10) {
++i;
// 5より小さい数をスキップ
if (i < 5) {
continue;
}
std::cout << "数値: " << i << std::endl;
}
return 0;
}
数値: 5
数値: 6
数値: 7
数値: 8
数値: 9
数値: 10
このコードは、1から10までの数値のうち、5未満の数をスキップして出力します。
do-whileループでのcontinueの使用例
do-while
ループでもcontinue
を使用することができます。
以下にその例を示します。
#include <iostream>
int main() {
int i = 0;
do {
++i;
// 2で割り切れる数をスキップ
if (i % 2 == 0) {
continue;
}
std::cout << "奇数: " << i << std::endl;
} while (i < 10);
return 0;
}
奇数: 1
奇数: 3
奇数: 5
奇数: 7
奇数: 9
このプログラムは、1から10までの数値のうち、奇数のみを出力します。
do-while
ループは少なくとも一度は実行されるため、continue
文があっても最初の反復は必ず行われます。
continue文を使った実践的な例
continue
文は、特定の条件を満たした場合にループの残りの処理をスキップし、次の反復に進むために非常に便利です。
ここでは、continue
文を使った実践的な例をいくつか紹介します。
配列の特定の要素をスキップする
配列の中で特定の条件を満たす要素をスキップしたい場合に、continue
文を使用することができます。
以下はその例です。
#include <iostream>
int main() {
int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < size; ++i) {
// 5の倍数をスキップ
if (numbers[i] % 5 == 0) {
continue;
}
std::cout << "数値: " << numbers[i] << std::endl;
}
return 0;
}
数値: 1
数値: 2
数値: 3
数値: 4
数値: 6
数値: 7
数値: 8
数値: 9
このプログラムは、配列内の数値のうち、5の倍数をスキップして出力します。
入力値のバリデーションでの使用
ユーザーからの入力を受け取る際に、特定の条件を満たさない入力をスキップするためにcontinue
文を使用することができます。
以下はその例です。
#include <iostream>
int main() {
int input;
while (true) {
std::cout << "正の整数を入力してください (0で終了): ";
std::cin >> input;
// 負の数をスキップ
if (input < 0) {
std::cout << "負の数は無効です。" << std::endl;
continue;
}
// 0が入力されたら終了
if (input == 0) {
break;
}
std::cout << "入力された数: " << input << std::endl;
}
return 0;
}
このプログラムは、ユーザーが負の数を入力した場合に警告を表示し、その入力をスキップします。
0が入力されるとプログラムが終了します。
ネストされたループでのcontinueの活用
ネストされたループ内でcontinue
文を使用することで、特定の条件を満たした場合に内側のループの処理をスキップすることができます。
以下はその例です。
#include <iostream>
int main() {
for (int i = 1; i <= 3; ++i) {
for (int j = 1; j <= 3; ++j) {
// iとjが同じ場合はスキップ
if (i == j) {
continue;
}
std::cout << "i: " << i << ", j: " << j << std::endl;
}
}
return 0;
}
i: 1, j: 2
i: 1, j: 3
i: 2, j: 1
i: 2, j: 3
i: 3, j: 1
i: 3, j: 2
このプログラムは、i
とj
が同じ場合に内側のループの処理をスキップし、それ以外の組み合わせを出力します。
ネストされたループでcontinue
を使うことで、特定の条件を満たす組み合わせを除外することができます。
continue文の応用例
continue
文は、単純なループ制御だけでなく、さまざまな応用シナリオで活用することができます。
ここでは、continue
文の応用例をいくつか紹介します。
複数条件でのcontinueの使用
continue
文は、複数の条件を組み合わせて使用することができます。
以下の例では、複数の条件を満たす場合にループの処理をスキップします。
#include <iostream>
int main() {
for (int i = 1; i <= 20; ++i) {
// 3の倍数または4の倍数をスキップ
if (i % 3 == 0 || i % 4 == 0) {
continue;
}
std::cout << "数値: " << i << std::endl;
}
return 0;
}
数値: 1
数値: 2
数値: 5
数値: 7
数値: 8
数値: 10
数値: 11
数値: 13
数値: 14
数値: 17
数値: 19
このプログラムは、1から20までの数値のうち、3の倍数または4の倍数をスキップして出力します。
continueを用いた効率的なデータ処理
大量のデータを処理する際に、特定の条件を満たさないデータをスキップすることで、効率的に処理を行うことができます。
#include <iostream>
#include <vector>
int main() {
std::vector<int> data = {10, 15, 20, 25, 30, 35, 40};
int threshold = 25;
for (int value : data) {
// 閾値以下のデータをスキップ
if (value <= threshold) {
continue;
}
std::cout << "処理対象データ: " << value << std::endl;
}
return 0;
}
処理対象データ: 30
処理対象データ: 35
処理対象データ: 40
このプログラムは、データの中で閾値を超える値のみを処理対象として出力します。
continueと関数の組み合わせ
continue
文を関数と組み合わせることで、特定の条件を満たす場合に関数の呼び出しをスキップすることができます。
#include <iostream>
void process(int value) {
std::cout << "処理中: " << value << std::endl;
}
int main() {
for (int i = 1; i <= 10; ++i) {
// 偶数をスキップ
if (i % 2 == 0) {
continue;
}
process(i);
}
return 0;
}
処理中: 1
処理中: 3
処理中: 5
処理中: 7
処理中: 9
このプログラムは、奇数のみをprocess関数
で処理します。
continueを使ったエラーハンドリング
continue
文を使って、エラーが発生した場合にその処理をスキップし、次のデータに進むことができます。
#include <iostream>
#include <vector>
int main() {
std::vector<int> data = {10, -1, 20, -2, 30, -3, 40};
for (int value : data) {
// 負の値をエラーとしてスキップ
if (value < 0) {
std::cout << "エラー: 負の値 " << value << " をスキップ" << std::endl;
continue;
}
std::cout << "処理中: " << value << std::endl;
}
return 0;
}
処理中: 10
エラー: 負の値 -1 をスキップ
処理中: 20
エラー: 負の値 -2 をスキップ
処理中: 30
エラー: 負の値 -3 をスキップ
処理中: 40
このプログラムは、データの中で負の値をエラーとしてスキップし、正の値のみを処理します。
よくある質問
まとめ
この記事では、C++におけるcontinue
文の基本的な使い方から、実践的な応用例までを詳しく解説しました。
continue
文を活用することで、ループ内の特定の条件を満たす処理をスキップし、効率的にプログラムを制御する方法を学びました。
これを機に、実際のプログラムでcontinue
文を活用し、より洗練されたコードを書いてみてはいかがでしょうか。