高見知英の技術ログ

技術関係のログをQiitaから移行してきました。プログラミングのほか、使っているアプリの細かい仕様についてなど書いていきます。

Lazarusのfor文

このブログはLazarus(FreePascal)アドベントカレンダー8日目の記事です。

qiita.com

8日目はアッサリ目にfor文の話し。

Lazarusでのfor文はfor [カウンタ] := [開始値] to [終了値] do ...です。他の言語のように増分を指定するStep値の指定はできません。常に開始値~終了値まで1ずつカウントがインクリメントされていきます。

ただし、-1は可能です。for [カウンタ] := [開始値] downto [終了値] do ...という構文となります。

wiki.freepascal.org

あれ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;

という感じになります。