Home About Rice Downloads Documents Others Cooker CookerGX
Documents  >  Tutorial  >  fromtostatement
fromto文

この章の目的。

fromto文について学びます。

インデックスによるループ。

fromto文は、インデックスによってループを制御するための文です。

fromto文は、以下の形式です。


fromto ( 開始値, 終了値 )

文...

endfromto


開始値と終了値は、intクラスのインスタンスを返す式でなければなりません。両者は、fromtoの最初ループの前に一度だけ評価され、ループの最中にその値が変わることはありません。

fromto文は、開始値と終了値によって決定されたインデックスが条件を満たしている間、ループを繰り返します。インデックスが条件を満たさなくなったら、実行制御がendfromtoの次の文に移動します。

実行制御がcontinue文かendfromtoに達した場合、現在のインデックスを評価した後に、実行制御が終了値の次の文に移動します。開始値と終了値の再評価は行われません。

実行制御がbreak文に達した場合、実行制御がendfromtoの次の文に移動します。

fromto文はendfromtoキーワードで終了しなければなりません。

fromto キーワード。

この文が、fromto文である事を示すキーワードです。

開始値と終了値。

開始値と終了値は、fromtoのインデックスを決定するための式です。それらは、括弧で囲まれ、カンマで区切る必要があります。

開始値と終了値は、intクラスのインスタンスを返す式でなければなりません。両者は、fromtoの最初ループの前に一度だけ評価され、ループの最中にその値が変わることはありません。

開始値 <= 終了値の場合、開始値に初期化されたインデックスが、ループ毎に1加算されます。インデックスが終了値より大きくなれば、endfromtoの次の文に実行制御を移動します。

開始値 > 終了値の場合、開始値に初期化されたインデックスが、ループ毎に1減算されます。インデックスが終了値より小さくなれば、endfromtoの次の文に実行制御を移動します。

開始値と終了値が等しい場合、fromto文のループは一回だけ実行されます。つまり、fromto文のループは最低でも一回は実行されます。

fromto文の終了。

fromto文の終了は、endfromtoキーワードで表します。

スコープ

fromto文は、スコープを生成します。スコープの範囲は、fromtoキーワードからendfromtoキーワードまでです。

fromto文内で宣言された変数は、fromto文内だけで参照可能です。

スコープ内で宣言された変数は、新たなループが始まるたびにクリアされて、再び宣言されます。

変数には、宣言のたびに新しいインスタンスが割り当てられます。前のループの値を次のループに持ち越すことはありません。

予約変数。

実行制御がfromtoキーワードに到達すると、スコープが生成され、予約変数__countが自動的に定義され、__indexが宣言されます。

__countはint型の変数であり、ゼロから始まるループ回数で初期化されます。

__indexはint型の変数であり、開始値と終了値の評価後に、現在のインデックス値で初期化されます。

__countは、通常のint型のようにオーバーフローが発生することはありません。__countがint型の最大値を超えた場合は、ゼロに戻ります。

条件式の中で予約変数を使うときは注意してください。特にループ文がネストしている時は要注意です。ループ文がネストしている場合は、内部のループ文の予約変数が、外部のループ文の予約変数を隠蔽します。

fromto文の開始値と終了値は、そのfromto文が生成するスコープの中に含まれます。したがって、開始値と終了値の中の予約変数は、そのfromto文が定義したものです。

__indexは、開始値と終了値に使用しないでください。例外が発生します。__indexは、開始値と終了値の評価時に宣言されています。しかし、それは、その時点で定義されていません。

ループの再開位置。

fromto文の開始値と終了値は、ループの最初に一度だけ評価されます。評価の結果は、ループ中は不変です。したがって、fromto文のループの再開位置は、終了値の次の文です。

Copyright © Rice All rights reserved.