【独学C言語】for文(繰り返し処理)

※この記事は「2020年12月8日」に更新しました。

今回は、for文(繰り返し処理)について。

前回、while文を使った、繰り返し処理を紹介しました。

【独学C言語】while文(繰り返し処理)

【独学C言語】while文(繰り返し処理)

2020年4月19日

for文は、繰り返しの回数を制御したい場合に有効です。

実際に見ていきましょう。

for文とは

for文は、かなり利用頻度の高い、制御文です。

なぜなら、C言語の for文は、非常に柔軟に使うことができるからです。

まずは、基本の使い方を覚えましょう。



for文の書き方

for文の書き方です。

for(初期化; 条件式; 条件の変化)
{
    処理
}

条件式が真である限り、処理がループします。

条件の変化があって、条件式が偽になれば、処理が終了します。

インクリメント演算子とデクリメント演算子

条件の変化でよく使われるのが、インクリメント演算子とデクリメント演算子です。

for文に限らず、使えるので覚えておきましょう。

前置き型と後置き型があります。

total = ++cnt;    /* 前置き型インクリメント演算子(※1) */
total = cnt++;    /* 後置き型インクリメント演算子(※2) */

total = --cnt;    /* 前置き型デクリメント演算子(※3) */
total = cnt--;    /* 後置き型デクリメント演算子(※4) */

※1 と ※2 の違いは、演算のタイミングです。

※1 は、以下のような処理を意味します。

cnt = cnt + 1;
total = cnt;

※2 は、以下のような処理を意味します。

total = cnt;
cnt = cnt + 1;

先に加算をしてから、代入するか、先に代入してから、加算するかの違いです。

※3、※4 に関しては、加算が減算に変わるだけです。

無限ループ【for文】

for文は、実は、式を置かなくても動作したりします。

for(;;)
{
    printf("Hello World!\n");
}

これは、無限ループで Hello World! が永遠に表示され続けます(Ctrl + C で強制終了できます)。

以下のように書き換えることもできます。

while(1)
{
    printf("Hello World!\n");
}

サンプルプログラム【C言語】

for文(繰り返し処理)を理解するためのサンプルプログラムです。

sample1.c というソースファイルを作成します。

#include <stdio.h>

int main(void)
{
    int number;    /* 入力整数値格納用 */
    int cnt;    /* forループ制御カウンター */
    int total;    /* 整数値の合計 */

    printf("\n");

    for(total = 0, cnt = 0; cnt < 3; cnt++)
    {
        printf("Input Number : ");
        scanf("%d", &number);
        total += number;
    }

    printf("\n");

    printf("total = %d\n", total);

    printf("\n");

    return 0;
}

このサンプルプログラムは、整数値を 3回入力させて、合計値を表示させるものです。

バリデーションは、今回考えていないので、整数値を必ず入力するようにして下さい。

実行結果は以下の通りです。

for文(繰り返し処理)

次は、少し数学っぽい計算をしてみます。

sample2.c というソースファイルを作成します。

#include <stdio.h>

int main(void)
{
    int number;    /* 自然数格納用 */
    int factorial;    /* 階乗格納用 */
    int cnt;    /* forループ制御カウンター */

    printf("\n");
    printf("Input natural number : ");
    scanf("%d", &number);

    if(number <= 0 || number >= 11)
    {
        printf("Input 1-10.");
        printf("\n");
        return 1;
    }

    for(cnt = 1, factorial = 1; cnt <= number; cnt++)
    {
        factorial = factorial * cnt;
    }

    printf("The factorial of %d : %d", number, factorial);

    printf("\n");

    return 0;
}

このサンプルプログラムは、入力した自然数(1~10)の階乗を表示させるものです。

階乗は、場合の数(順列や組合せ)で使います。

例えば、5の階乗だと計算は以下の通りになります。

5 × 4 × 3 × 2 × 1

実行結果は以下の通りです。

for文(繰り返し処理)

独学C言語の記事について【おまけ】

タカフミブログの独学C言語シリーズは、C言語を独学するということを目的に記事を書いています。

他の記事に興味がある方は以下をご参照下さい。

C言語に関する記事一覧

C言語は、古典的なイメージがある方もいるかもしれませんが、他の多くのプログラミング言語のベースになっています。

実際に本格的なソフトを開発するとなるとなかなか大変ですが、とにかくハードウェアのリソースが少なくても高速に動くのが最大のメリットです。

プログラマーや SE(システムエンジニア)を目指す方は一度お試し下さい。

最後に【for文について】

いかがでしょうか。

次回は、配列について、解説していきます。

配列とは

【独学C言語】配列とは

2020年4月21日

今回は、for文(繰り返し処理)について、学習しました。

前回の While文でも同じような処理を書くことができますが、おそらく for文を使う機会の方が多いかと思います。

動きを理解して、コーディングできるようになりましょう。