C PR

【C言語入門】for文 – 繰り返し処理

記事内に商品プロモーションを含む場合があります

for文は、同じ処理を繰り返し実行したい場合に使用します。
C言語において、for文は頻繁に使用しますので、必ず抑えておきましょう

for文とは?

for文は、処理を繰り返して実行したい時に使用します。

例えば、「hoge」という文字列を「5回」標準出力するプログラムを考えてみましょう。

#include <stdio.h>

void main(void)
{
    printf("hoge\n");
    printf("hoge\n");
    printf("hoge\n");
    printf("hoge\n");
    printf("hoge\n");
}

これでも期待通りの動作は得られます。
が、『printf(“hoge\n”);』という部分が連続していて少し不格好です。

こういった場合に、for文を使用します。

for文の書き方

for ([初期化式]; [継続条件]; [変化式]) {
    /* ☆ここに繰り返したい処理を実装 */
}

『 [ ] 』で囲ってある部分は、省略が可能です。
ただし、継続条件を省略した場合、☆の処理を無限に繰り返しますので、注意が必要です。

初期化式

変数の宣言・初期化を実行することができます。
この処理は、for文を実行する際に、1度だけ実行されます。

継続条件

ここで評価された値がTRUE(0以外)の場合に☆の処理を実行します。
条件については、比較演算子を用いることが一般的です。
※比較演算子について詳しくはこちらをご覧ください。

変化式

変数の変化(増減)処理をここで実行することができます。
一般的には、「終了条件を満たす閾値まで変数を加算させる」といった用途で使用されます。

for文の使い方

「hoge」という文字列を「5回」標準出力するプログラムについて、for文を用いて実装してみましょう。

#include <stdio.h>

void main(void)
{
    int i = 0;

    for (i = 0; i < 5; i++) {
        printf("hoge\n");
    }
}

といったコードになります。
では、for文に渡した値について、詳しく見ていきましょう。

初期化式[i = 0]

変数「i」を0で初期化しています。
後に記載しますが、継続条件(5回まで)を判断するための変数として使用しています。

継続条件[i < 5]

変数「i」が5未満の場合、「printf("hoge\n");」を実行します。
iは、変化式でインクリメントされるため、0~4までの値を取ります。
5の場合、継続条件を満たさないため、for文が終了します。
よって、iが「0, 1, 2, 3, 4」の時にprint文が実行されることになります。

変化式[i++]

変数「i」をインクリメントしています。
インクリメントとは、「加算」という意味で、iに1を加算した値を代入しています。

よって、iの値は以下のように遷移しています。

1回目:iは0
2回目:iは1
3回目:iは2
4回目:iは3
5回目:iは4

6回目の継続判定にて、iが5(5未満を満たさない)となるため、for文は終了します。

演習

演習①

以下の文字列を5回出力してください
C言語サイコー!

答えはこちら
#include <stdio.h>

void main(void)
{
    int i = 0;

    for (i = 0; i < 5; i++) {
        printf("C言語サイコー!\n");
    }
}

演習②

1~10までの整数を昇順で標準出力してください

答えはこちら
#include <stdio.h>

void main(void)
{
    int i = 0;

    for (i = 1; i <= 10; i++) {
        printf("%d\n", i);
    }
}

演習③

かけ算九九の表を標準出力してください
※出力例

1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18



9 18 27 36 45 54 63 72 81

答えはこちら
#include <stdio.h>

void main(void)
{
    int i = 0;
    int j = 0;

    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%d ", i * j);
        }
        printf("\n");
    }
}