Skip to content

Do...Loop

当条件为True时重复语句块,或直到条件变为True

语法:

  • Do [{ While | Until } 条件 ]     [ 语句 ]     [ Exit Do | Continue Do ]     [ 语句 ] ... Loop

  • Do     [ 语句 ]     [ Exit Do | Continue Do ]     [ 语句 ] ... Loop [{ While | Until } 条件 ]

条件 : 可选TrueFalse的数值表达式或字符串表达式。如果条件为Null,则将条件视为False

语句 : 当或直到条件True时重复的一个或多个语句。

Exit Do语句可以放置在Do…Loop中的任何位置,作为退出Do…Loop的替代方法。Exit Do通常在评估某些条件(例如If…Then)后使用,在这种情况下,Exit Do语句将控制权转移到紧跟在Loop后面的语句。

当在嵌套的Do…Loop语句中使用时,Exit Do将控制权转移到比Exit Do出现的循环高一级的循环。

Continue Do语句可以放置在Do…Loop中的任何位置,以跳过其余语句并继续新的迭代。

示例

此示例显示如何使用Do...Loop语句。内部Do...Loop语句循环10次,询问用户是否应该继续,当用户选择时将标志的值设置为False,并使用Exit Do语句提前退出。外部循环在检查标志的值后立即退出。

vb
Public Sub LoopExample()
    Dim Check As Boolean, Counter As Long, Total As Long
    Check = True: Counter = 0: Total = 0 ' 初始化变量。
    Do ' 外部循环。
        Do While Counter < 20 ' 内部循环
            Counter = Counter + 1 ' 增加计数器。
            If Counter Mod 10 = 0 Then ' 在每个10的倍数时检查用户。
                Check = (MsgBox("继续吗?", vbYesNo) = vbYes) ' 当用户点击否时停止
                If Not Check Then Exit Do ' 退出内部循环。
            End If
        Loop
        Total = Total + Counter ' Exit Do 到达这里。
        Counter = 0
    Loop Until Check = False ' 立即退出外部循环。
    MsgBox "计数到:" & Total
End Sub

使用Do...Loop语句

使用Do...Loop语句运行语句块不确定的次数。语句要么在条件为True时重复,要么直到条件变为True

当条件为True时重复语句

有两种方法可以在Do...Loop语句中使用While关键字检查条件。您可以在进入循环之前检查条件,或者在循环至少运行一次后检查条件。

在以下ChkFirstWhile过程中,您在进入循环之前检查条件。如果myNum设置为9而不是20,循环内的语句将永远不会运行。在ChkLastWhile过程中,循环内的语句仅在条件变为False之前运行一次。

vb
Sub ChkFirstWhile()
    counter = 0
    myNum = 20
    Do While myNum > 10
        myNum = myNum - 1
        counter = counter + 1
    Loop
    MsgBox "循环重复了" & counter & "次。"
End Sub

Sub ChkLastWhile()
    counter = 0
    myNum = 9
    Do
        myNum = myNum - 1
        counter = counter + 1
    Loop While myNum > 10
    MsgBox "循环重复了" & counter & "次。"
End Sub

重复语句直到条件变为True

有两种方法可以在Do...Loop语句中使用Until关键字检查条件。您可以在进入循环之前检查条件(如ChkFirstUntil过程中所示),或者在循环至少运行一次后检查条件(如ChkLastUntil过程中所示)。当条件保持False时继续循环。

vb
Sub ChkFirstUntil()
    counter = 0
    myNum = 20
    Do Until myNum = 10
        myNum = myNum - 1
        counter = counter + 1
    Loop
    MsgBox "循环重复了" & counter & "次。"
End Sub

Sub ChkLastUntil()
    counter = 0
    myNum = 1
    Do
        myNum = myNum + 1
        counter = counter + 1
    Loop Until myNum = 10
    MsgBox "循环重复了" & counter & "次。"
End Sub

从循环内部退出Do...Loop语句

您可以使用Exit Do语句退出Do...Loop。例如,要退出无限循环,请在If...Then...Else语句或Select Case语句的True语句块中使用Exit Do语句。如果条件为False,循环将正常运行。

在以下示例中,myNum被分配创建无限循环的值。If...Then...Else语句检查此条件,然后退出,防止无限循环。

vb
Sub ExitExample()
    counter = 0
    myNum = 9
    Do Until myNum = 10
        myNum = myNum - 1
        counter = counter + 1
        If myNum < 10 Then Exit Do
    Loop
    MsgBox "循环重复了" & counter & "次。"
End Sub

NOTE

要停止无限循环,请按ESC或CTRL+BREAK。

twinBASIC及其LOGO版权为作者"韦恩"所有