【C言語】第2章第7回:break文とcontinue文の使い方
break
文とcontinue
文は、ループ制御を柔軟に行うための強力なツールです。この章では、それぞれの使い方と違いを学び、実用的な例を通じて理解を深めます。
1. break文とは?
break
文は、現在のループを途中で終了させるために使用します。ループが終了すると、プログラムの制御はループの次の文に移ります。
基本構文
if (条件式) {
break;
}
例:特定の条件でループを終了
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i == 5) {
break; // ループを終了
}
printf("%d\n", i);
}
return 0;
}
解説:
if (i == 5)
:カウンタi
が5になると、break
文が実行されます。- ループが終了し、制御がループの外に移ります。
2. continue文とは?
continue
文は、現在のループの残りの処理をスキップし、次の繰り返しに進むために使用します。
基本構文
if (条件式) {
continue;
}
例:特定の条件をスキップ
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i % 2 == 0) {
continue; // 偶数をスキップ
}
printf("%d\n", i);
}
return 0;
}
解説:
if (i % 2 == 0)
:i
が偶数の場合、continue
文が実行されます。- 現在の繰り返しがスキップされ、次の繰り返しに進みます。
3. break文とcontinue文の違い
以下の表は、break
文とcontinue
文の主な違いを示しています:
文 | 動作 | ループの継続 |
---|---|---|
break | ループを終了 | 継続しない |
continue | 現在の繰り返しをスキップ | 継続する |
4. 実用例
例1:特定の値を探す
#include <stdio.h>
int main() {
int numbers[] = {1, 2, 3, 4, 5};
int target = 3;
for (int i = 0; i < 5; i++) {
if (numbers[i] == target) {
printf("Found %d at index %d.\n", target, i);
break; // 値が見つかったらループを終了
}
}
return 0;
}
例2:特定の条件に一致する値をスキップ
#include <stdio.h>
int main() {
for (int i = 1; i <= 10; i++) {
if (i % 3 == 0) {
continue; // 3の倍数をスキップ
}
printf("%d\n", i);
}
return 0;
}
5. 練習問題
以下の課題に挑戦して、break
文とcontinue
文の使い方を練習してください。
- ユーザーに数値を入力させ、入力された数が負の数の場合にループを終了するプログラムを作成してください。
- 1から50までの数値をループし、3の倍数をスキップして出力するプログラムを作成してください。
- 整数の配列から、最初に見つかった負の数のインデックスを表示し、ループを終了するプログラムを作成してください。
6. 練習問題の解答と解説
問1の解答
#include <stdio.h>
int main() {
int number;
while (1) { // 無限ループ
printf("Enter a number: ");
scanf("%d", &number);
if (number < 0) {
break; // 負の数でループを終了
}
}
printf("Loop terminated.\n");
return 0;
}
問2の解答
#include <stdio.h>
int main() {
for (int i = 1; i <= 50; i++) {
if (i % 3 == 0) {
continue; // 3の倍数をスキップ
}
printf("%d\n", i);
}
return 0;
}
問3の解答
#include <stdio.h>
int main() {
int numbers[] = {5, -3, 8, -1, 7};
int size = sizeof(numbers) / sizeof(numbers[0]);
for (int i = 0; i < size; i++) {
if (numbers[i] < 0) {
printf("First negative number found at index %d.\n", i);
break; // 負の数でループを終了
}
}
return 0;
}
7. まとめ
break
文とcontinue
文を使い分けることで、ループ処理を柔軟に制御できます。それぞれの役割を理解し、適切な場面で活用しましょう。練習問題を通じて、スキルを深めてください!