制御フロー
目次
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
endcase 文
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
endrepeat 文
repeat 文 until 条件式repeat 文中の文は repeat ... until で囲まれているので,begin ... end で囲まなくても複数の文を記述可能です。
i := 1;
repeat
  writeln(i);
  i := i + 1
until i > 5goto 文
次のコードは,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, ...;