C言語

繰り返し処理~for編~

C言語では、同じ処理を繰り返してくれる文に、for文と、while文があります。
通常は、繰り返す回数が決まっているときは、for文を使用し、繰り返す回数が不定、条件により回数が異なる場合などは、while文を使用します。
はじめに、for文の使い方について学びます。

for文の書き方

for文の構文は次のようになります。

構文

for( 初期化の式 ; 繰り返すかを判定する式 ; 変化させるための式 )
{
文 ;    ←この文を繰り返し実行します
}

初期化の式は、for文を実行するときに一番最初に1回だけ実行されます。ここでは、主に変数の初期化を行います。
繰り返すかを判定する式は、for文の下の文を実行するか、for文を終わるかを判定する式を記述します。
変化させるための式は、for文の下の文を実行し、ブロックの終わりまで行った後に、次の繰り返すかを判定する式を行う前に実行されます。ここには、変数を変化させるような式が入ります。ここで変数を変化させて、そのあとに、変化させた変数をもとに、繰り返すかを判定する式で判定を行います。

文章では説明しにくいため、サンプルプログラムを次に示します。

#include <stdio.h>

int main(void)
{
    int i;

    for( i = 0; i < 5; i++ )
    {
        printf( "%d¥n", i );
    }
    return 0;
}

このサンプルプログラムで、i++としていますが、これは、インクリメントと言って、変数の値に1加算するという演算子です。 i = i + 1 と同義です。
まだ、インクリメントについて紹介していませんでしたので、インクリメントについて知りたい方は、「インクリメント・デクリメント」の記事を参照していただければと思います。
サンプルプログラムの実行結果は、次のようになります。

実行結果

0
1
2
3
4

for文の流れを図を使って説明したいと思います。

  • for文のはじめに実行するのは、i = 0 です。これは、for文の最初に1回実行されます。
  • 次に、i < 5 を判定します。
  • 判定結果が真の場合は、for文の下のブロック内の文が実行されます。
  • ブロックの終わりにきたら、i++ が実行されます。
  • 1 < 5が偽になるまで、2~4 を繰り返し、偽になったら、for文を終わります。

for文の式を省略した場合

for文は、 初期化の式、繰り返すかを判定する式、変化させるための式を省略することができます。
次のようにすべて省略することもできます。

すべて省略した場合

for ( ; ; )

このように、すべて省略すると、セミコロン( ; )だけが残ります。
これは、条件がないため、無限に繰り返しを行います。これを無限ループと呼んでいます。
このfor文を抜けるには、break文を使用します。
サンプルプログラムを次に示します。

#include <stdio.h>

int main(void)
{
    int i = 0;

    for(;;)
    {
        if( i < 5 )
        {
            printf("%d\n", i);
        }
        else
        {
            break;
        }
        i++;
    }
    return 0;
}

実行すると、最初のサンプルプログラムと同じ結果となります。
また、最初のサンプルプログラムと同じ流れになっていることがわかると思います。
最初に初期化を1回して、次に判定して、真なら、値を表示して、変数に1加算し、また、判定を行う。そして、判定が偽ならfor文を終わる。という流れです。
このように無限ループを終わるには、条件判定してbreak文でfor文を終了させます。
for文を使用した無限ループはあまり使われることはないと思います。もし、無限ループをさせるのであれば、この後学ぶ、while文を使うことが多いです。

for文の式を省略するのは、すべてを省略する以外にも、いずれかを省略することもできます。例えば、初期化の式のみを省略するなどです。
省略しても、セミコロン( ; )は省略できないので、必ず2つ付いている必要があります。

以上が、for文の使い方でした。

次は、同じく、繰り返し処理で使われるwhile文の使い方について学びます。

繰り返し処理~while編~

-C言語