制御フロー
目次
if 文
if 条件式 then 文
if 条件式 then 文 else 文
else-if 節,else 節はそれぞれ省略できます。
次のプログラムは,整数 a, b の大小を判定する例です。
program sample(output);
var
a, b : integer;
begin
a := 2; b := 3;
if a = b then writeln('a = b')
else if a > b then writeln('a > b')
else writeln('a < b')
end.
a < b
複文
ブロック begin ... end で 1 つ以上の文を囲んだものは,複文またはブロック文と呼ばれ,文法的には文の一種です。
if 文や for 文などで複数の文を記述したいときは,複文を用います。
if a > b then
begin
tmp := a;
a := b;
b := tmp
end
case 文
case 選択式 of
ラベル1: 文1;
...
end
次のプログラムは,month の値によって処理を振り分ける例です。
program sample(output);
var
month, days : integer;
begin
month := 7;
case month of
1, 3, 5, 7, 8, 10, 12: days := 31;
2: days := 28;
4, 6, 9, 11: days := 30;
end;
writeln(days)
end.
31
for 文
for 変数 := 始値 to 終値 do 文
for 変数 := 始値 downto 終値 do 文
次のコードは,for 文を使って 1 から 5 までの数を数え上げる例です。
program sample(output);
var
i : integer;
begin
for i := 1 to 5 do writeln(i)
end.
1
2
3
4
5
a < b
to の代わりに downto を用いると,カウントダウンを行います。
for i := -1 downto -5 do writeln(i)
-1
-2
-3
-4
-5
while 文
while 条件式 do 文
次のコードは,while 文を使って 1 から 5 までの数を数え上げる例です。
i := 1;
while i <= 5 do begin
writeln(i);
i := i + 1
end
repeat 文
repeat 文 until 条件式
repeat 文中の文は repeat ... until で囲まれているので,begin ... end で囲まなくても複数の文を記述可能です。
i := 1;
repeat
writeln(i);
i := i + 1
until i > 5
goto 文
次のコードは,goto 文を使って 1 から 5 までの数を数え上げる例です。
program sample(output);
label
100;
var
i : integer;
begin
i := 1;
100:
writeln(i);
i := i + 1;
if i <= 5 then goto 100
end.
ラベルは 0 から 9999 までの整数で記述します。
プログラムで使用するラベルは,キーワード label から始まるブロックで宣言します。
label
ラベル1, ラベル2, ...;