6.プログラムの制御

6-3. for文

◇for文

前回、whileについて繰り返し処理を行いましたがそれをもっと計数的な繰り返し処理に適応したものにfor文があります。

いままで、while文で計数処理を行うとき、

i=1; /* 初期条件 */
while(i<10){ /* 繰返し条件 */
printf(“…\n”); /* 処理内容 */
i++; /* ステップ */
}

のようにしていました。

これをfor文に置き換えると、

for(i=1; i<10; i++)printf(“…\n”);

となります。もし処理内容が複文なら、

for(i=1; i<10; i++){
printf(“…\n”);
printf(“ABC\n”);
}

のようになります。

以上をまとめて文法を整理すると、

for(初期条件;継続条件;ステップ){
処理内容
}
となります。

◇たとえばこんなつかいかた

#include<stdio.h>

main()
{
    int i,def,limit,step;
    def   =  1;
    limit = 10;
    step  =  1;

    printf("初期値   = %d\n",def);
    printf("最大限度 = %d\n",limit);
    printf("増幅度   = %d\n",step);

    for(i=def;i< =limit;i+=step){
        printf("i=%d\n",i);
    }

    printf("終了\n");
}

こんな使い方といってもあまり参考にはなっていませんがdef,limit.stepの3変数の値を変えることにより結果が異なってきます。

BASICをやってきた人にはこのアルゴリズムは簡単ですね。

次! こんなんはどうでしょう。

for(;;) ;

これは別に処理がないようって泣いてるわけではありません。
初期値、条件、ステップすべてを省略しています。
これは無限ループを表します。whileではwhile(1)でしたね。
無限ループ内に複数の処理を書くときは無論{中括弧}で囲みます。

条件などの省略ですが、これはどの位置も省略できます。
特に中を省略すると無限ループになります。

for(;o;) ;

左と右を省略してこのようにもできます。(ってやりすぎ!)
これは変数oが0になるとループから脱出します。

このような処理方法はBASICのfor文にはありませんね。