Home News DOC Class DL Others Cooker
Documents  >  Tutorial  >  while 文
while 文

条件によってループを制御するための while 文について説明します。


目次:


書式

while

条件式

スコープ

予約変数

endwhile

書式

while文は以下の形式です。


while ( 条件式 )

...

endwhile


条件式が条件を満たせば while 文内の文が先頭から実行されます。条件を満たさなければ endwhile の次の文に実行制御が移動します。

実行制御が continue 文か endwhile に達した場合、実行制御が条件式に移動します。そして、条件式の評価からループを繰り返します。

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

while

while 文である事を示すキーワードです。

条件式

条件式となれる式は以下の二つです。


bool クラスを返す式

数値 (int, long, real クラス) を返す式


bool クラスを返す場合、値が true ならばループが実行されます。

数値を返す場合、値が非セロならばループが実行されます。


条件式はループの始まりに再評価されます。したがって、while 文のループの再開位置は条件式です。

条件式が proxy クラスを返す場合は proxy クラスの実体が自動的に使用されます。proxy クラスの Entity ゲッターを呼び出したのと同じ結果になります。


proxy pro = new proxy(true);

while(pro) // pro.Entity is used.

...

endwhile


条件式として使用されるので、proxy クラスの実体は bool クラスか数値でなければなりません。

スコープ

while 文はスコープを生成します。


スコープ内で宣言された変数はループ毎に再び宣言されて新しいインスタンスが割り当てられます。

前のループの値を次のループに持ち越すことはありません。

予約変数

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

__count は int クラスの変数です。ゼロから始まるループ回数で初期化されます。

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


while 文の条件式の評価の際には既にスコープが生成されています。したがって、条件式の中に予約変数を使用した場合、その予約変数は現在の while 文が定義したものになります。

while 文の文はオプションです。while 文内に任意の数だけ存在できます。

endwhile

while 文の終了を示すキーワードです。

endwhile の代わりに省略形の ew を使用できます。ew もキーワードであることに注意してください。

1:

class example

2:

open method void someMethod()

3:

while (true)

4:

if (__count > 10)

5:

break;

6:

endif

7:

endwhile

8:

em

9:

ec

Copyright © Rice All rights reserved.