Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語入門:ネストされたforループとbreak・continue・goto文の使い方を徹底解説

ネストされたforループ(二重ループ)とは、forループの本体の中に、さらに別のfor文が含まれている構造のことです。表や行列の操作、九九のような組み合わせ処理など、「繰り返しの中でさらに繰り返しが必要な場面」でよく使われます。

全体の繰り返し回数は、外側のループの繰り返し回数 × 内側のループの繰り返し回数で求められます。

ネストされたforループのサンプルプログラム

以下は、ネストされたforループを使用したC言語のプログラム例です。

#include<stdio.h>
main( ){
    int i,j;
    for (i=1; i<=2; i++){
        for (j=1; j<=2; j++){
            printf("%d", i*j);
        }
    }
}

実行結果

このプログラムを実行すると、i×jの計算結果が連続して出力されます。

1224

実行の流れを整理すると、次のようになります。外側の変数iが1つ進むたびに、内側の変数jが一巡する点に注目してください。

iの値jの値出力される値(i*j)
111
122
212
224

C言語のその他の関連ステートメント

ネストされたforループとあわせて覚えておきたい、ループや処理の流れを制御するステートメントとして、主に次の3つがあります。

  • break文
  • continue文
  • goto文

break文

  • ループを途中で終了させたり、ブロックから抜け出したりするためのキーワードです。
  • breakが実行されると、制御はループ(またはブロック)の直後の文へジャンプします。
  • for文、while文、do-while文、switch文と組み合わせて使えます。
  • ネストされたループ内でbreakを使用した場合、終了するのは最も内側のループだけです。外側のループはそのまま継続されます。

break文のサンプルプログラム

#include<stdio.h>
void main( ){
    int i;
    for (i=1; i<=5; i++){
        printf("%d", i);
        if (i==3)
            break;
    }
}

実行結果

123

iが3になった時点でbreakが実行され、ループが強制的に終了するため、1・2・3だけが出力されます。

continue文

  • 現在の周回の残りの処理をスキップして、ループの次の反復へ進むためのキーワードです。
  • continue文より後に書かれた処理は、その周では実行されません。
  • for文、while文、do-while文と組み合わせて使用します。

continue文のサンプルプログラム

#include<stdio.h>
void main( ){
    int i;
    for (i=1; i<=5; i++){
        if (i==2)
            continue;
        printf("%d", i);
    }
}

実行結果

1345

iが2のときだけcontinueが実行されてprintfがスキップされるため、2を除いた数字が出力されます。

goto文

goto文は、プログラムの通常の実行順序を離れて、制御を同じ関数内の別の場所(ラベル)へ移すためのステートメントです。

ただし、goto文を乱用すると処理の流れが追いにくくなり、バグの原因にもなるため、現代のC言語プログラミングでは基本的に使用を避けるのが一般的です。どうしても使う場合は、エラー処理など限定的な場面にとどめましょう。

goto文のサンプルプログラム

#include<stdio.h>
void main( ){
    printf("Hello");
    goto l1;
    printf("How are");
    l1: printf("you");
}

実行結果

Helloyou

「Hello」を出力した直後にgotoによってラベルl1へジャンプするため、「How are」の出力はスキップされ、ラベル位置にある「you」だけが出力されます。

まとめ

  • ネストされたforループでは、総繰り返し回数は「外側の回数 × 内側の回数」となる。
  • break文はループを即座に抜け出す。ネスト時は最も内側のループのみ終了する。
  • continue文は残りの処理を飛ばして次の反復へ進む。
  • goto文は任意のラベルへ制御を移せるが、可読性を損なうため使用は慎重に。
  1. C言語のループ制御文(for・while・do-while)を徹底解説!フローチャートとサンプルコード付き

    C言語におけるループ制御文は、同じ処理を何度も繰り返し実行したい場合に使われる重要な構文です。毎回コードを書き連ねる必要がなくなり、プログラムを簡潔かつ効率的に記述できます。 C言語で利用できるループ制御文は、主に以下の3種類です。 for文 while文 do-while文 本記事では、それぞれの構文の書き方、フローチャートによる動作の流れ、実際に動くサンプルプログラムと実行結果まで、初心者にもわかりやすく解説します。 for文とは?基本構文と使い方 for文は、「初期化」「条件式」「増減式」を1行にまとめて記述できる、最もよく使われるループ構文です。繰り返す回数があらかじめ決まっている

  2. 【初心者向け】長方形の面積と外周を求めるC言語プログラムの書き方

    長方形の「長さ」と「幅」が与えられたとき、その面積と外周(周囲の長さ)を計算する方法を、C言語のサンプルコード付きでわかりやすく解説します。 長方形とは? 長方形とは、4つの辺と4つの直角(90度)を持つ2次元の図形です。長方形では、隣り合う辺の長さは異なりますが、向かい合う辺どうしは必ず同じ長さになります。また、2本の対角線も互いに等しい長さを持ちます。 下の図は長方形を模式的に表したものです。 ここで、Aは長方形の幅(breadth)、Bは長さ(length)を表しています。 面積と外周の計算式 面積の公式 長方形の面積は、次の式で求められます。 面積 = 長さ × 幅 外周の公式