while ステートメント¶
while ステートメント¶
while ステートメントは、指定された条件が真である間、ステートメントまたはブロックを繰り返し実行するものです。ループを作成することができます。
構文は以下の通りです。
while(expression)
ステートメントまたはブロック
「ステートメントまたはブロック」は、条件式である expression が真である限り、繰り返し実行されます。
動作としては、
(1) まず、expression を評価し、偽であれば、ステートメントまたはブロックは実行されない
(2) ステートメントまたはブロックを実行する
(3) expression を評価し、その結果が真ならば (2) へ、そうでなければ while ステートメント終了
つまり、最初から expression が偽の場合はステートメントまたはブロックは実行されません。また、常に expression が評価されるわけではなく、ステートメントまたはブロックを一回実行するごとに expression の真偽がチェックされます。
また、(3) の時点で、ブロックの場合はいったんブロックから抜けます ( 変数などは消去されると言うこと )。
while(func()) ;
/* func() が真の間、何もしないで func() を評価し続ける */
while(func()) i++;
/* func() が真の間、i++ を実行し続ける */
while(i < 5) // i が 5 より小さい間
{
func(i);
i++;
}
break¶
break ステートメントは、while を途中で終了させたい場合に記述します。
while(true) // break が実行されない限りは無限ループ
{
if(func()) break; // func() が真ならばwhile終了
func2(); // ↑で break が実行されなければここにくる
}
// break が実行されると、ここにくる
continue¶
continue ステートメントは、途中で、条件式の評価からやり直したいときに記述します。
continue が実行されると、(3) に実行が移ります。
var i = 0;
while(i < 5)
{
if(func1()) continue;
// func1() が true ならば、i < 5 の条件式チェックがされ、真ならば
// またブロックの先頭から実行される
func2();
i++;
}
do~while¶
do~while ステートメントは、while ステートメントと同じですが、最初に条件式のチェックを行いません。
構文は以下の通りです。
do
ステートメントまたはブロック
while(expression);
最初に条件式をチェックしないため、do の時点で条件式が偽でも「ステートメントまたはブロック」は実行されます。
いったん「ステートメントまたはブロック」が実行されれば条件式がチェックされ、偽ならばループを抜け、真ならば再びステートメントまたはブロックが実行され、これを繰り返します。