请高手指教如何清晰认清比较for---next与do---loop的具体区别? 以及适用的范围??
若一段代码是:如何用for---next代替do---loop来实现?????Private Sub Form_Load()
Dim p As Integer
Randomize
p = ""
For i = 1 To 10
Do
x = Int(Rnd * 91 + 10)
yes = 0
For j = 1 To i - 1
If x = a(i) Then
yes = 1
Exit For
End If
Loop While yes = 1
Next i
End Sub
若一段代码是:如何用for---next代替do---loop来实现?????Private Sub Form_Load()
Dim p As Integer
Randomize
p = ""
For i = 1 To 10
Do
x = Int(Rnd * 91 + 10)
yes = 0
For j = 1 To i - 1
If x = a(i) Then
yes = 1
Exit For
End If
Loop While yes = 1
Next i
End Sub
...
next i
等效
i = 1
do
if i > 100 then exit do
...
i = i + 1
loopdo
...
loop也可以等效
for i = 1 to 2
...
i = i - 1
next所以没有区别。
以指定次数来重复执行一组语句。Do...Loop 语句
当条件为 True 时,或直到条件变为 True 时,重复执行一个语句块中的命令。很多时候for...next是不能代替do...loop,因为你根本就不知道循环体要执行多少遍。
比如你举的例子中的do..loop,你会知道它循环多少次吗?
do loop用于循环次数上限未知的情况,可用 exit do中止循环
do while---loop是当型循环,执行循环体前首先检查条件是否成立,不成立则中止
do loop while是直到型循环,执行循环体后再检查条件是否成立,不成立则中止。
(PS:某些时候,不懂用Do...Loop循环的家伙,我见过一个,他就开个For循环,循环值就是10000000....,然后在循环里面判断退出这种人还真把For当Do用了)Do...Loop广义来说是未知类循环,你根本不知道它有多少,要循环多少次,就需要在循环中实时判断退出条件。
Do While语句的循环是Do循环的一种简单自动判断模式,一般可以使用,不过需要判断的条件太多太杂的时候只能在Do...Loop循环里面使用If语句判断。
do事先不知道循环次数,循环体至少执行一次,提前退出用exit do