Top > WHILE

**WHILEループ文 [#y7323fda]
WHILEループ文を使うと、条件を満たしている間はいくつかの行を、繰り返し実行します。
ループの流れ
&ref(loop02.jpg,,50%);

WHILEループ文は以下のように書きます。
 WHILE 条件式 DO
      文;

 PROCEDURE TEST;
 VAR
		i:INTEGER;
 BEGIN
		i:=0; {iを初期化する}
		WHILEi<=10 DO { i が10以下ならループを続け、文を実行する}
			i:=i+1; {iに1を加える}
 END;
 Run(TEST);
FORループ文に似ていますが、ループの打ち切りに回数ではなく条件式を使っている点が違います。
最初に判断しているので、条件によってはループの中の処理を一度も行わない場合もあります。
''[文が複数行ある場合]''
文が複数行ある場合は BEGINとENDでくくります。

 PROCEDURE TEST;
 VAR
		i:INTEGER;
 BEGIN
		i:=0; {iを初期化する}
		FOR i:=5 TO 10 DO
		WHILEi<=10 DO { i が10以下ならループを続け、文を実行する}
		BEGIN
			Writeln(i);
			i:=i+1; {iに1を加える}
		END;
 END;
 Run(TEST);

''[グループ内での注意]''
WHILEループ文を使う上で注意することは、無限ループです。
条件式が真のまま変化しないプログラムを書くと、ループを抜けることができなくなります。この状態を無限ループといいます。
無限ループの例
 PROCEDURE TEST;
 VAR
		i:INTEGER;
 BEGIN
		i:=0; {iを初期化する}
		WHILEi<=10 DO { i が10以下ならループを続け、文を実行する}
		BEGIN
			Writeln(i);
		END;
 END;
 Run(TEST);
iの値を加算していないので、iの値はいつまでも0のままです。
従って条件式がいつまでも真のままになり、無限ループになります。
条件式に使っている変数の扱いには十分気を付けて下さい。
無限ループになったら、ctriキー(Macの場合はcommandキー)とピリオドキーを同時に押して下さい。
プログラムを強制的に終了させることができます。
ただし、プログラムによっては終了できないときがあります。


リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS