C言語

【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. ユーザーに数値を入力させ、入力された数が負の数の場合にループを終了するプログラムを作成してください。
  2. 1から50までの数値をループし、3の倍数をスキップして出力するプログラムを作成してください。
  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文を使い分けることで、ループ処理を柔軟に制御できます。それぞれの役割を理解し、適切な場面で活用しましょう。練習問題を通じて、スキルを深めてください!