文の概要
文には単純な文とbegin endで囲まれた複合文があります。このbegin endはC言語の{ }に相当します。文で気を付けなければならないのは、セミコロン(;)の使い方です。セミコロンは文の終わりであるとは限りません。セミコロンは文の区切りの1つです。文の区切りはendやelseもなります。
goto文もありますが、あまり使われません(プログラムが読みにくくなるため)。goto文を使うときにはlabel節でラベルを宣言しておく必要があります。
条件文
if文
if文の一般形式は
if 式 then 文1 else 文2
です。文1、文2は1つの文またはbegin ... endで囲まれた複合文です。そして、このif文自体が1つの文になります。文は「区切り」で区切らなければなりません。ここで気を付けなければならないのが、区切りは;(セミコロン)だけではないということです。elseやendも区切りとしてみなされるのです。(ここが重要)
したがって、つぎの文はエラーになります。(C言語ではOK)
if A > 0 then B := 1; // ここでif文が終わってしまう else B := 2;
この文では、B := 1の後にセミコロンがあるので、そこでif文が終わってしまっています。先頭にelseのある文はないので、文法エラーとみなされてしまいます。
ところがつぎのような文はエラーになりません。(k := i mod 2の後にセミコロンがない!)
if A > 0 then begin i := i + 1; k := i mod 2 end;
これはendが区切りとみなされるためセミコロンが必ずしも必要ないためです。
case文
case文は複数の選択肢から必要な文を実行できます。(C言語のswitch文に対応する)
例
case C of
'R', 'r': begin
Shape1.Brush.Color := clRed;
Label1.Caption := 'Alarm has detected.';
end;
'Y','y': begin
Shape1.Brush.Color := clYellow;
Label1.Caption := 'Warning has detected.';
end;
else
begin
Shape1.Brush.Color := clGreen;
Label1.Caption := '';
end;
end;
繰り返し文
while文
while文はループの最初で条件テストを行う繰り返し文です。(C言語のwhile文に相当)
例
i := 0;
while i < 10 do // iが10より小さい間繰り返す
begin
A[i] := 0;
Inc(i);
end;
repeat until文
repeat until文はループの終わりで条件テストを行う繰り返し文です。(C言語のdo while文に似ているがやや異なる)
例
i := 0;
repeat
A[i] := 2 * i + 1;
Inc(i);
until i > 10; // iが10を超えるまで繰り返す
for文
for文はインデックスとなる値を1つづつ増やす(あるいは減らす)ことによってループを行う文です。(C言語のforに比べて柔軟性がありません)
例
for i := 0 to 9 do
A[i] := 0;
インデックスを減らしていくときは、toでなくdowntoにしなければなりません。
i := 0; for j := 10 downto 1 do begin A[i] := j; Inc(i); end;