FORループ文を使うと、いくつかの行を一定の回数だけ繰り返させることができる。 FORループ文は以下のように書きます。 FOR 変数:=初期値 TO 終了値 DO 文; ※変数は INTEGER型でなければいけません。 PROCEDURE TEST; VAR i:INTEGER; BEGIN FOR i:=5 TO 10 DO Writeln(i); END; Run(TEST); [文が複数行ある場合] PROCEDURE TEST; VAR i:INTEGER; BEGIN FOR i:=5 TO 10 DO BEGIN Writeln(i); Writeln(i*2); Writeln(i*4); END; END; Run(TEST); [グループ内での注意] PROCEDURE TEST;
VAR
i:INTEGER;
BEGIN
FOR i:=5 TO 10 DO
BEGIN
Writeln(i);
i:=i-1; {カウンター変数の値を変更している}
END;
END;
Run(TEST);
また初期値と終了値のいずれにもカウンタ変数を含めてはいけません。 PROCEDURE TEST;
VAR
i:INTEGER;
BEGIN
FOR i:=5 TO i DO {終了時にカウンター変数を使っている}
Writeln(i);
END;
Run(TEST);
WHILEループ分 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ループ文に似ていますが、ループの打ち切りに回数ではなく条件式を使っている点が違います。 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);
[グループ内での注意] PROCEDURE TEST;
VAR
i:INTEGER;
BEGIN
i:=0; {iを初期化する}
WHILEi<=10 DO { i が10以下ならループを続け、文を実行する}
BEGIN
Writeln(i);
END;
END;
Run(TEST);
iの値を加算していないので、iの値はいつまでも0のままです。 |