【C言語】2重ループの使い方についてわかりやすく詳しく解説

目次から探す

2重ループの注意点

2重ループを使用する際には、いくつかの注意点があります。

以下では、ループの制御と脱出、およびパフォーマンスの最適化について説明します。

ループの制御と脱出

2重ループでは、内側のループが外側のループの一回の実行ごとに完全に実行されるため、内側のループの制御や脱出には注意が必要です。

例えば、以下のコードでは、外側のループが3回実行され、内側のループが5回実行されます。


for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 5; j++) {
        printf("i: %d, j: %d\n", i, j);
    }
}

このコードを実行すると、以下のような結果が得られます。

i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 0, j: 3
i: 0, j: 4
i: 1, j: 0
i: 1, j: 1
i: 1, j: 2
i: 1, j: 3
i: 1, j: 4
i: 2, j: 0
i: 2, j: 1
i: 2, j: 2
i: 2, j: 3
i: 2, j: 4

内側のループの制御や脱出を行う場合には、適切な条件式や制御文を使用する必要があります。

例えば、内側のループを途中で終了させるには、break文を使用します。


for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 5; j++) {
        if (j == 3) {
            break; // 内側のループを終了
        }
        printf("i: %d, j: %d\n", i, j);
    }
}

この場合、jが3のときに内側のループが終了し、以下のような結果が得られます。

i: 0, j: 0
i: 0, j: 1
i: 0, j: 2
i: 1, j: 0
i: 1, j: 1
i: 1, j: 2
i: 2, j: 0
i: 2, j: 1
i: 2, j: 2

パフォーマンスの最適化

2重ループは、処理が複雑になると実行時間が増える可能性があります。

そのため、パフォーマンスの最適化にも注意が必要です。

以下は、2重ループを使用して2次元配列の要素を合計するコードの例です。


int array[100][100];
int sum = 0;
for (int i = 0; i < 100; i++) {
    for (int j = 0; j < 100; j++) {
        sum += array[i][j];
    }
}

このコードでは、100×100の要素を合計するために、10,000回のループが行われます。

もし処理が複雑である場合や、要素数が非常に多い場合には、実行時間が長くなる可能性があります。

パフォーマンスを最適化するためには、以下のような方法があります。

内側のループの回数を減らす

処理の内容によっては、内側のループの回数を減らすことができる場合があります。

例えば、特定の条件を満たす要素のみを処理する場合には、内側のループの回数を減らすことができます。

処理の内容を見直す

処理の内容を見直し、より効率的なアルゴリズムを考えることで、実行時間を短縮することができます。

パフォーマンスの最適化は、具体的な処理内容や要件によって異なるため、適切な方法を選択する必要があります。

以上が、2重ループの注意点についての説明です。

2重ループを使用する際には、ループの制御と脱出、およびパフォーマンスの最適化に注意してプログラムを作成しましょう。

1 2 3
目次から探す