10.5 The for Statement

Last-modified: 2025-03-04 (火) 20:53:54

10.5 for 文

このforステートメントを使用すると、ループの反復回数をカウントするのが簡単になります。forステートメントの一般的な形式は次のようになります。

for var = expression
 body
endfor

ここで、body は任意のステートメントまたはステートメントのリストを表し、 expressionは任意の有効な式を表し、var は複数の形式を取ることができます。通常、これは単純な変数名またはインデックス付き変数です。expression の値が構造体である場合、 varは2 つの要素を持つベクトルになることもあります。以下の「構造体要素のループ」を参照してください。

ステートメント内の代入式は、forOctave の通常の代入ステートメントとは少し異なる動作をします。式の完全な結果を割り当てる代わりに、式の各列を順番にvarに割り当てます。式が範囲、行ベクトル、またはスカラーの場合、ループ本体が実行されるたびにvarの値はスカラーになります。varが列ベクトルまたは行列の場合、ループ本体が実行されるたびに var は列ベクトルになり ます。

次の例は、フィボナッチ数列の最初の 10 個の要素を含むベクトルを作成する別の方法を示しています。今回は次の forステートメントを使用します。

fib = ones (1, 10);
for i = 3:10
 fib(i) = fib(i-1) + fib(i-2);
endfor

このコードは、まず式 を評価して3:10、3 から 10 までの範囲の値を生成します。次に、 i範囲の最初の要素が変数 に割り当てられ、ループ本体が 1 回実行されます。ループ本体の最後に到達すると、範囲内の次の値が変数 に割り当てられi、ループ本体が再度実行されます。このプロセスは、割り当てる要素がなくなるまで続行されます。

Octaveでは、ステートメントを使用して行列やセル配列を反復処理することもできますfor。たとえば、

disp ("Loop over a matrix")
for i = [1,3;2,4]
 i
endfor
disp ("Loop over a cell array")
for i = {1,"two";"three",4}
 i
endfor

この場合、変数はi行列またはセル行列の列の値を取ります。したがって、最初のループは 2 回反復され、2 つの列ベクトル が生成さ[1;2]れ[3;4]、その後 が生成されます。セル配列のループでも同様です。これは、多次元配列のループに拡張できます。例:

a = [1,3;2,4]; c = cat (3, a, 2*a);
for i = c
 i
endfor

上記の場合、多次元行列c は2 次元行列に再形成されreshape (c, rows (c), prod (size (c)(2:end))) 、2 次元行列のループと同じ動作が生成されます。

forすべてのループをループとして書き直すことは可能ですがwhile 、Octave 言語には両方のステートメントがあります。 forループは入力する手間が少なく、考えるのが自然だからです。反復回数を数えることはループでは非常に一般的であり、このカウントをループ内で行うものとしてではなく、ループの一部として考える方が簡単です。

Looping Over Structure Elements