delphi if 語句迴圈語句
阿新 • • 發佈:2019-02-16
在Delphi中可以使用for to/down to do、while…do和repeat…until三種方式來實現迴圈控制。
01 |
var |
02 |
I:
Integer ;
|
03 |
X:
Integer ;
|
04 |
begin |
05 |
X :=
10 ;
|
06 |
for
I := 0
to
9
do
{ I從0遞增變化到9,依次執行10次DoSomething} |
07 |
begin |
08 |
{ DoSomething} |
09 |
end ;
|
10 |
11 |
for
I := 0
to
Pred(X) do
{ Pred(X)返回X的前一個值,即9} |
12 |
begin |
13 |
{ DoSomething} |
14 |
end ;
|
15 |
16 |
for
I := 9
downto
0
do
{ I從9遞減變化到0,依次執行10次DoSomething} |
17 |
begin |
18 |
{ DoSomething} |
19 |
end ;
|
20 |
21 |
X :=
8 ;
{ I從9遞減到0,迴圈10次} |
22 |
for
I := Succ(X) downto
0
do |
23 |
begin
{ Succ函式返回指定值的後一個} |
24 |
{ DoSomething} |
25 |
end ;
|
26 |
27 |
I :=
0 ;
|
28 |
while
I <= 10
do
{ 和for I := 0 to 10 do的功能是一樣的} |
29 |
begin |
30 |
ShowMessage(IntToStr(I));
|
31 |
Inc(I);
{ while的特點就是可以自己控制迴圈因子} |
32 |
end ;
|
33 |
34 |
I :=
0 ;
|
35 |
repeat
{ 和while I <= 10 do 功能相同} |
36 |
ShowMessage(IntToStr(I));
|
37 |
Inc(I);
|
38 |
until
I = 10 ;
|
39 |
40 |
I :=
0 ;
{ Inc以指定的值遞增,Dec以指定的值遞減} |
41 |
Inc(I);
{ I = 1} |
42 |
Inc(I,
2 ); { I = 3} |
43 |
Dec(I,
2 ); { I = 1} |
44 |
Dec(I);
{ I = 0} |
45 |
ShowMessage(IntToStr(I));
|
46 |
end ; |
Caution
使用for方式要注意,迴圈變數的步長是固定為1的,不能再迴圈體中用程式碼進行修改。
while的特點就是可以自行控制迴圈變數的變化,靈活性比for更大。
repeat是從while演化過來的。while首先要判斷條件是否成立再執行,而repeat是首先執行,再判斷條件是否成立。
Note
上面程式碼中對於I變數名的使用起源於FORTRAN語言,而這也是for迴圈的習慣用法。
Continue和Break過程
Continue過程,用來強制程式執行到迴圈底部並進入一個迴圈,而跳過Continue後面的所有語句。如果位於try…finally塊中則會先執行finally..end塊再進入下一個迴圈。
01 |
var |
02 |
I: Integer ;
|
03 |
begin |
04 |
for
I := 0
to
2
do |
05 |
begin |
06 |
try |
07 |
if
I < 1
then |
08 |
Continue;
|
09 |
ShowMessage(IntToStr(I));
|
10 |
finally |
11 |
ShowMessage( 'finally..end' );
|
12 |
end ;
|
13 |
end ;
|
14 |
end ; |
執行結果依次如下(圖示中0,1,2分別代表迴圈變數I變化時的顯示結果):
Break過程,用來迴圈正常結束之前終止迴圈。如果位於try…finally塊中,則finally…end塊也會得到執行,例如下面程式碼:
01 |
var |
02 |
I: Integer ;
|
03 |
begin |
04 |
for
I := 0
to
2
do |
05 |
begin |
06 |
try |
07 |
if
I > 1
then |
08 |
Break;
|
09 |
ShowMessage(IntToStr(I));
|
10 |
finally |
11 |
ShowMessage( 'finally..end' );
|
12 |
end ;
|
13 |
end ;
|
14 |
end ; |
執行結果依次如下(圖示中0,1,2分別代表迴圈變數I變化時的顯示結果):
Continue和Break只能用在for、while和repeat迴圈中,如果在迴圈外部用這兩個過程將會產生編譯器錯誤。