For文

for文とは



for文は、プログラミングにおいて、特定の条件がである間、与えられた文の実行を繰り返すための制御構造です。ループ処理を記述する際に用いられ、特に、繰り返し回数が事前にわかっている場合に便利です。while文と異なり、ループに入る前の初期化処理(通常はカウンタ変数の初期化)を伴う点が特徴です。

また、言語によっては、`for ... in ...` の形式で、コレクションの各要素に対して処理を行う、いわゆるforeach文として使用されることもあります。

for文の構文



C系言語



C、C++、C#、JavaJavaScript、Perlなど、多くのプログラミング言語では、基本的な構文は次のようになります。

c
for (初期化; 条件; 更新) {
// 実行する文
}


このループは、以下の手順で実行されます。

1. 初期化:ループ開始時に一度だけ実行される処理です。通常、カウンタ変数の初期化を行います。
2. 条件:ループを継続するかどうかを判定する条件式です。この条件が偽になると、ループは終了します。
3. 文の実行:条件がの場合に実行されるコードブロックです。
4. 更新:ループの各反復後に実行される処理です。通常、カウンタ変数の値を増減させます。
5. 条件の評価に戻る:ステップ2に戻り、再度条件を評価します。

もし、初期の条件が偽の場合、文は一度も実行されません。また、初期化、条件、更新の3つは、それぞれ省略することができます。条件を省略した場合、常にとみなされ、ループから強制的に抜け出すための構文(break, returnなど)がないと、無限ループになります。

例えば、初期化と更新を省略し、条件のみを記述する場合、次のようになります。

c
for (; 条件;) {
// 実行する文
}


初期化などを省略した場合でも、丸括弧内で区切りとして使われる `;` は省略できません。

C99C++、C#、Javaでは、初期化部にローカル変数を宣言できます。for文は暗黙のブロックを作成するため、宣言された変数のスコープはfor文内に限定されます。C99C++では、外側のスコープで定義した変数と同じ名前の変数を内側のスコープで定義できますが、C#とJavaではコンパイルエラーとなります。

初期化、ループ継続条件、カウンタ変数の更新には、それぞれ1つの式のみが許されますが、コンマ演算子を使うことで、実質的に複数の演算を1つの式で表現できます。

Pascal



Pascalでは、次の構文を使用します。

pascal
for カウンタ変数 := 初期値 to 終値 do
begin
// 実行する文
end;


または

pascal
for カウンタ変数 := 初期値 downto 終値 do
begin
// 実行する文
end;


このループは以下の手順で実行されます。

1. 初期化:カウンタ変数に初期値を代入します。
2. 条件:カウンタ変数の値が終値よりも大きい(または小さい)場合、ループを終了します。
3. 文の実行:文を実行します。
4. 更新:カウンタ変数の値を次の値(通常は1を加えるか、`downto`の場合は1を減らす)にして、条件の評価に戻ります。

C言語などと比較して、初期化と更新がそれぞれ初期値の代入と1を加える(または減らす)ことに限定され、ループ継続条件が「カウンタ変数が終値より大きいか否か」のみに限定されています。

BASIC



BASICでは、次の構文を使用します。

basic
FOR 変数 = 初期値 TO 終値 STEP 加算値
// 実行する文
NEXT 変数


このループは以下の手順で実行されます。

1. 初期化:カウンタ変数に初期値を代入します。
2. 条件:カウンタ変数の値が、初期値が終値よりも小さい場合は大きいか、大きい場合は小さい場合、ループを終了します。
3. 文の実行:文を実行します。
4. 更新:カウンタ変数の値に加算値を足し、条件の評価に戻ります。

`STEP 加算値` が省略された場合、加算値は1とみなされます。

for文の例



C系言語での例



c

include



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


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


x は 0 です。
x は 1 です。
...
x は 98 です。
x は 99 です。


変数 `x` は0から始まり、ループが実行されるたびに1ずつ増加します。`x`の値が100になると条件が満たされなくなり、ループが終了します。

Pascalでの例



pascal
program ForLoopDemo;
var
x: integer;
begin
for x := 0 to 99 do
begin
writeln('x は ', x, ' です。');
end;
end.


BASICでの例



basic
FOR x = 0 TO 99 STEP 1
PRINT "x は " & x & " です。"
NEXT x


これらの例では、C系言語、PascalBASICで、同様のループ処理を実装できます。

ループ制御



ループを終了させるには、ループの条件を偽にする以外に、文の中で `break` 文を使用する方法があります。また、ループの条件が常にであり、文に `break` 文が含まれていない場合、ループは無限ループになります。

文が複数の文からなる場合、`continue` 文を使うことで、文の実行を中止し、カウンタ変数の更新から処理を再開できます。

while文との関係



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

関連項目



foreach文
if文
while文
do-while文
goto文
制御構造

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。