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のままです。 REPEAT-UNTILループ文 PROCEDURE TEST;
VAR
i:INTEGER;
BEGIN
i:=0; {iを初期化する}
REPEAT
Writeln(i);
i:=i+1 {iに1を加える}
UNTIL i>10;
END;
Run(TEST);
WHILEループ文と同様、無限ループには注意して下さい。 GOTO文 LABEL 1,2,3 [GOTO文の書き方] GOTO 1; (GOTO文を使ったプログラム例) PROCEDURE TEST;
LABEL 1,2; {ラベル宣言}
VAR
i:INTEGER;
BEGIN
x:=IntDialog('数字を入力してください','0') ;
IF x<10 THEN
GOTO 1; {xの値が10未満ならば、1にジャンプする}
Message('xの値は10以上です');
GOTO 2; {2にジャンプする}
1:Message('xの値は10未満です');
2:END;
Run(TEST);
GOTO文は大変便利な命令ですが、多用するとプログラムの流れがわかりにくくなる恐れがあります。 |