Forループで制御変数iの値を操作してループ回数を変化させたい
|
58 |
ForLoopControl |
動作確認 |
Delphi2007 |
更新日 |
2008/01/30(水) |
Delphiでは
for i:=1 to 10 do
begin
:
end;
このようにすることで、1〜10までループしますが
begin..endのループ中にiの値を変更することができません。
コンパイラの仕様のせいで仕方ないとはいえ
ループを数回飛ばしたい場合の
アルゴリズムを実装するには非常に面倒です。
例えば、文字列処理を1文字ずつ行っていて
数文字分処理を飛ばしたい場面でよく使います。
そういう時、forを使うのは無理なので
while を使って for と同じループをさせます。
1〜10までループさせる while を使ったコードは以下のようになります。
i := 1;
while i <= 10 do
begin
:
Inc(i);
end;
最初forで作っておいて、途中でwhileに変更するのは
結構、面倒ですが、こういうやり方を覚えておくとよいでしょう。
具体的な数値ではなく[X][Y]で表現してみます。
────────────────────
for i := X to Y do
begin
:
end;
↓
i := X; while i <= Y do
begin
:
Inc(i);
end;
────────────────────
これで途中で i を足したり引いたり i:=i*2; と実装することができます。
なお、for..downto..のループは以下のように書くとよいです。
────────────────────
for i := X downto Y do
begin
:
end;
↓
i := X; while Y <= i do
begin
:
Dec(i);
end;
────────────────────
|