C言語

【C言語】第2章第5回:繰り返し処理:for文の基本

for文は、繰り返し処理を効率的に記述するための構文です。この章では、for文の基本的な使い方を解説し、実用的なプログラム例を通じてその利便性を学びます。

1. for文とは?

for文は、特定の条件が満たされるまでループ処理を繰り返すための構文です。

基本構文

for (初期化; 条件; 更新) {
    // 繰り返し処理
}

構造の説明:

  • 初期化:ループの開始時に1回実行される処理(例:カウンタの初期化)。
  • 条件:ループを継続する条件。条件が偽(false)になるとループが終了します。
  • 更新:各ループの繰り返し後に実行される処理(例:カウンタの増減)。

2. for文の基本例

以下のプログラムは、1から5までの数を順に出力します。

#include <stdio.h>

int main() {
    for (int i = 1; i <= 5; i++) { // カウンタ変数iを1から5まで増加
        printf("%d\n", i); // カウンタ変数iの値を出力
    }

    return 0;
}

解説:

  • int i = 1;:カウンタ変数iを1に初期化。
  • i <= 5;iが5以下の場合にループを継続。
  • i++;:各ループ後にiを1増加。
  • printf("%d\\n", i);iの値を出力。

3. for文を使った実用例

例1:数値の合計を計算

#include <stdio.h>

int main() {
    int sum = 0;

    for (int i = 1; i <= 10; i++) { // 1から10までの数を加算
        sum += i; // 現在のiをsumに加算
    }

    printf("The sum of numbers from 1 to 10 is %d.\n", sum);

    return 0;
}

解説:

  • カウンタiを1から10まで増加させ、各値をsumに加算。
  • ループ終了後、合計値を出力。

例2:九九の掛け算表を出力

#include <stdio.h>

int main() {
    for (int i = 1; i <= 9; i++) { // 行のループ
        for (int j = 1; j <= 9; j++) { // 列のループ
            printf("%d x %d = %d\t", i, j, i * j); // 掛け算の結果を出力
        }
        printf("\n"); // 行の終了時に改行
    }

    return 0;
}

このプログラムは、九九の掛け算表を整然と出力します。

4. 無限ループのfor文

条件式を省略すると、for文は無限ループになります。

例:無限ループ

#include <stdio.h>

int main() {
    for (;;) { // 条件を省略すると無限ループ
        printf("This is an infinite loop.\n");
        break; // 無限ループを終了
    }

    return 0;
}

このプログラムでは、breakを使用して無限ループを制御します。

5. 練習問題

以下の課題に挑戦して、for文の使い方を練習してください。

  1. 1から100までの数値のうち、偶数のみを出力するプログラムを作成してください。
  2. ユーザーに数値を入力させ、その数までの合計を計算するプログラムを作成してください。
  3. 3の倍数である数を1から50まで出力するプログラムを作成してください。

6. 練習問題の解答と解説

問1の解答

#include <stdio.h>

int main() {
    for (int i = 2; i <= 100; i += 2) { // 偶数だけを処理
        printf("%d\n", i);
    }

    return 0;
}

問2の解答

#include <stdio.h>

int main() {
    int n, sum = 0;

    printf("Enter a number: ");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        sum += i; // 合計を計算
    }

    printf("The sum of numbers from 1 to %d is %d.\n", n, sum);

    return 0;
}

問3の解答

#include <stdio.h>

int main() {
    for (int i = 3; i <= 50; i += 3) { // 3の倍数だけを処理
        printf("%d\n", i);
    }

    return 0;
}

7. まとめ

for文は、繰り返し処理を簡潔に記述できる強力なツールです。練習問題を通じてその使い方を習得し、効率的なプログラムを書く力を身につけましょう。