Do...Loop语句

Do...Loop语句比For...Next语句更加灵活,因为它既可以在循环的开始,也可以在循环的结尾测试条件。

Do...Loop语句有两种形式,分别为:

Do While 条件
    代码

Loop

和:

Do
    代码

Loop
While
条件


两者的差别是第二种形式会至少执行一次代码,因为它是在执行完代码后再比较条件,而第一种形式是先比较条件,条件符合再执行代码。

例如,求 1 + 2 + 3 +... + 100的和:

Dim Sum As Integer
Dim
i As Integer = 1
Do
While i <= 100
    Sum = Sum + i
    i = i +
1
Loop
Output.Show(
Sum)

注意,For...Next中,计数器变量是根据步长设置自动增加的,而在Do...Loop中,需要自行编写代码来改变计数器变量的值(粗体代码部分),否则程序将处于死循环之中。

如果要累加1到100之间的偶数,那么代码应该是:

Dim Sum As Integer
Dim
i As Integer = 2
Do
While i <= 100
    Sum = Sum + i
    i = i + 2
Loop
Output.Show(Sum)

在循环过程中,如果提前退出循环,可以用Exit Do语句,例如:

Dim Sum As Integer
Dim
i As Integer = 1
Do
While i <= 100
    Sum = Sum + i
    i = i +
1
   
If i > 50 Then
        Exit
Do
    End
If
Loop

Output.Show(Sum)

上面的代码实际上只是求得1到50的累计值,因为在i大于50的时候退出了循环。

如果在满足指定条件的时候,不执行循环代码,而是直接进行下一次循环,可以用Continue Do语句,例如对于下面的 代码:

Dim Sum As Integer
Dim
i As Integer = 0
Do
While i < 100
    i = i +
1
   
If i Mod 2 = 0 Then
        Continue
Do
    End
If
    Sum = Sum + i

Loop

Output.Show(Sum)

上面的代码累加了1到100之间的奇数,因为碰到偶数,就直接进行下一次循环,而没有累加到变量Sum中。

累加1到100之间的奇数,更合理的方法是:

Dim Sum As Integer
Dim
i As Integer = 1
Do
While i < 100
    Sum = Sum + i
    i= i +
2
Loop

Output.Show(Sum)

循环变量i的初始值为1,每次循环之后,i的值加2。


本页地址:http://www.foxtable.com/webhelp/topics/0227.htm