コンテンツにスキップ

For文

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。200.11.242.33 (会話) による 2005年10月16日 (日) 02:40個人設定で未設定ならUTC)時点の版 (→‎関連項目: interwiki)であり、現在の版とは大きく異なる場合があります。

For文(ふぉおぶん)はプログラミング言語において条件の間だけ与えられたの実行を繰り返すというループを記述するための文である。Forループは、Whileループと違って、ループに入る前の初期化(通常カウンタ変数の初期化を行なう)を含む点で異なる。

また言語によってはforeach文をfor…in…のように書くことがあり、このときのFor文はイテレータの繰り返し処理をする文になる。

文法

Cおよびそれに類する言語の場合

C, C++, C#, D, Java, JavaScript, Perl などでは基本的な構文は以下のようになる。

for(初期化; 条件(ループの継続条件); カウンタ変数の更新)
{
 真文;
}

このループは次のような手順で実行される。

  1. 初期化を実行する。
  2. 条件を評価する。条件が偽ならば、ループを終了する。
  3. 真文を実行する。
  4. カウンタ変数の更新を実行する。
  5. 条件の評価に戻る。

条件がはじめから偽の場合は、真文は一度も実行されないことになる。また、初期化・条件・カウンタ変数の更新の三つは、それぞれ省略することが出来る。条件を省略した場合、条件は常に真であるとみなされる。例えば、初期化とカウンタ変数の更新を省略し、条件のみを記述する場合、次のようになる。

for (; x < 100;) { …… }

初期化などを省略した場合でも、丸括弧内で区切りとして使われる ; を省略することは出来ない。

例文

int x;
for (x = 0; x < 100; x++)
{
 printf("x は %d です。\n",x);
}

これを実行すると、次のような出力結果が得られる。

x は 0 です。
x は 1 です。

…………
 
x は 98 です。
x は 99 です。

はじめ変数xの値は0であり、真文が1回実行されるたびに1が加えられる。真文が100回実行されるとxの値は100になり条件が成り立たなくなるため、このときこのループは終了する。

ループを終了するには、ループの条件を偽にするほかに真文においてbreak文を使う方法もある。ループの条件が常に真であり、真文にbreak文が含まれていない場合(またはbreak文が実行されない場合)、ループは無限ループとなる。また、真文が複数の文からなる場合、continue文を使うことで真文の実行を中止し、カウンタ変数の更新から処理を再開することができる。

C言語のWhile文は、初期化とカウンタ変数の更新を省略したfor文として書き換えることができる。したがって、C言語におけるFor文はWhile文を一般化したものといえる。

Pascalでの構文は以下のようになる(BASICの基本的な構文も同様である)。

for 変数 := 初期値 to 終値 do
 文

このループは次のような手順で実行される。

  1. カウンタ変数に初期値を代入する。
  2. カウンタ変数の値が終値よりも大きいならば、ループを終了する。(条件の評価)
  3. 文を実行する。
  4. カウンタ変数の値を次の値(SUCC関数の結果。整数型変数なら1を加えることになる)にし、条件の評価に戻る。

C言語などと異なり、初期化とカウンタ変数の更新がそれぞれ、初期値の代入と 1 加えることに限定され、さらにループ継続条件が「カウンタ変数が終値よりおおきいか否か」だけに限定されている。そのため、CのFor文よりも特殊化されたものと考えることができる。

例文

for x := 0 to 99 do
 writeln('x は ',x,' です。')

実行結果はCおよびそれに類する言語の場合で示したのと同様である。

For 変数 = 初期値 to 終値
 文
Next

関連項目