このブログはLazarus(FreePascal)アドベントカレンダー8日目の記事です。
8日目はアッサリ目にfor文の話し。
Lazarusでのfor文はfor [カウンタ] := [開始値] to [終了値] do ...
です。他の言語のように増分を指定するStep値の指定はできません。常に開始値~終了値まで1ずつカウントがインクリメントされていきます。
ただし、-1は可能です。for [カウンタ] := [開始値] downto [終了値] do ...
という構文となります。
あれDelphiってこんな仕様だっけ・・・ と思ったら、Delphiもそんな仕様だった。
ただし、最近のPascalにはちゃんとfor each文的な構文も用意されています。for [カウンタ変数] in [配列等イテレータブルなオブジェクト] do
文です。これを使えば配列を走査したりStep値を設定したfor文のようなことも可能ではあります。
なお、Lazarusは変数の宣言が必須な言語ですし、他の言語と違って変数宣言部と実装部が分離された言語なので、カウンタ変数の宣言はメソッドの先頭で行なう必要があります。ちょっとややこしいですがそこがPascalなので慣れるしかない。
procedure Method; var i: Integer; begin for i := 0 to 5 do ... end;
という感じになります。