哈哈,都是些什么答案哦,误导:
VB循环主要有以下三类:
1)
FOR
循环变量=初值
TO
终值
[STEP
步长]
循环体
NEXT
循环变量
2)
WHILE
条件表达式
循环体
WEND
3)
DO
WHILE|UNTIL
表达式
循环体
LOOP
或
DO
循环体
LOOP
WHILE|UNTIL
表达式
使用循环语句
使用循环重复执行代码
循环用于重复执行一组语句。循环可分为三类:一类在条件变为 False 之前重复执行语句,一类在条件变为 True 之前重复执行语句,另一类按照指定的次数重复执行语句。
在 VBScript 中可使用下列循环语句:
DoLoop: 当(或直到)条件为 True 时循环。
WhileWend: 当条件为 True 时循环。
ForNext: 指定循环次数,使用计数器重复运行语句。
For EachNext: 对于集合中的每项或数组中的每个元素,重复执行一组语句。
使用 Do 循环
可以使用 DoLoop 语句多次(次数不定)运行语句块。当条件为 True 时或条件变为 True 之前,重复执行语句块。
当条件为 True 时重复执行语句
While 关键字用于检查 DoLoop 语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的 ChkFirstWhile 示例);或者在循环至少运行完一次之后检查条件(如下面的 ChkLastWhile 示例)。在 ChkFirstWhile 过程中,如果 myNum 的初始值被设置为 9 而不是 20,则永远不会执行循环体中的语句。在 ChkLastWhile 过程中,循环体中的语句只会执行一次,因为条件在检查时已经为 False。
Sub ChkFirstWhile()
Dim counter, myNum
counter = 0
myNum = 20
Do While myNum > 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "循环重复了 " & counter & " 次。"
End Sub
Sub ChkLastWhile()
Dim counter, myNum
counter = 0
myNum = 9
Do
myNum = myNum - 1
counter = counter + 1
Loop While myNum > 10
MsgBox "循环重复了 " & counter & " 次。"
End Sub
重复执行语句直到条件变为 True
Until 关键字用于检查 DoLoop 语句中的条件。有两种方式检查条件:在进入循环之前检查条件(如下面的 ChkFirstUntil 示例);或者在循环至少运行完一次之后检查条件(如下面的 ChkLastUntil 示例)。只要条件为 False,就会进行循环。
Sub ChkFirstUntil()
Dim counter, myNum
counter = 0
myNum = 20
Do Until myNum = 10
myNum = myNum - 1
counter = counter + 1
Loop
MsgBox "循环重复了 " & counter & " 次。"
End Sub
Sub ChkLastUntil()
Dim counter, myNum
counter = 0
myNum = 1
Do
myNum = myNum + 1
counter = counter + 1
Loop Until myNum = 10
MsgBox "循环重复了 " & counter & " 次。"
End Sub
退出循环
Exit Do 语句用于退出 DoLoop 循环。因为通常只是在某些特殊情况下要退出循环(例如要避免死循环),所以可在 IfThenElse 语句的 True 语句块中使用 Exit Do 语句。如果条件为 False,循环将照常运行。
在下面的示例中,myNum 的初始值将导致死循环。IfThenElse 语句检查此条件,防止出现死循环。
Sub ExitExample()
Dim counter, myNum
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
使用 WhileWend
WhileWend 语句是为那些熟悉其用法的用户提供的。但是由于 WhileWend 缺少灵活性,所以建议最好使用 DoLoop 语句。
使用 ForNext
ForNext 语句用于将语句块运行指定的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。
例如,下面的示例将过程 MyProc 重复执行 50 次。For 语句指定计数器变量 x 及其起始值与终止值。Next 语句使计数器变量每次加 1。
Sub DoMyProc50Times()
Dim x
For x = 1 To 50
MyProc
Next
End Sub
关键字 Step 用于指定计数器变量每次增加或减少的值。在下面的示例中,计数器变量 j 每次加 2。循环结束后,total 的值为 2、4、6、8 和 10 的总和。
Sub TwosTotal()
Dim j, total
For j = 2 To 10 Step 2
total = total + j
Next
MsgBox "总和为 " & total & "。"
End Sub
要使计数器变量递减,可将 Step 设为负值。此时计数器变量的终止值必须小于起始值。在下面的示例中,计数器变量 myNum 每次减 2。循环结束后,total 的值为 16、14、12、10、8、6、4 和 2 的总和。
Sub NewTotal()
Dim myNum, total
For myNum = 16 To 2 Step -2
total = total + myNum
Next
MsgBox "总和为 " & total & "。"
End Sub
Exit For 语句用于在计数器达到其终止值之前退出 ForNext 语句。因为通常只是在某些特殊情况下(例如在发生错误时)要退出循环,所以可以在 IfThenElse 语句的 True 语句块中使用 Exit For 语句。如果条件为 False,循环将照常运行。
使用 For EachNext
For EachNext 循环与 ForNext 循环类似。For EachNext 不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。
1、“For”语句,它的格式是:
For <循环变量>=<初赋值> To <终值> [Step <步长>]
…要循环执行D的代码…
Next <循环变量>
在默认情况下,Step被设为“1”,可以省略 例如:
Dim a As Integer
a = 0
For I=1 To 10
a=a+I
Next I
这是一个最简单的累加器的例子,把1到10累加在一起,然后赋值给“a”
2、While语句也是一个很常用的循环语句,它的形式很多:
①While …条件…
…要循环执行D的代码…
Wend
例如
Dim a As Integer
a = 0
I = 1
While I <= 10
a = a + I
I = I + 1
Wend
②Do While …条件…
…要循环执行D的代码…
Loop
例如
Dim a As Integer
a = 0
i = 1
Do While i <= 10
a = a + i
i = i + 1
Loop
③Do …要循环执行D的代码…
Loop While …条件…
例如
Dim a As Integer
a = 0
i = 1
Do
a = a + i
i = i + 1
Loop While i <= 10
While后面都跟逻辑条件判断,“Do While …… Loop语句”和“While …… Wend 语句”作用相似,都是先判断While后面的条件是否为“真”,如果为“真”则执行里面的语句,如果为“假”,则退出循环,循环直至条件为“假”终止。“Do …… Loop While ”与前两者的区别在于,它不管条件的真假,都会先执行“Do”后面的语句,也就是说,它至少执行语句一次。
●与While用法相似的还有Until语句,它是直至条件为真则终止循环,句式把do untilloop 和 do loop until,但是因为容易记混,所以我建议只用While即可。Until <条件>可以相当于While Not <条件>。
如
Dim a As Integer
a = 0
i = 1
Do Until i > 10
a = a + i
i = i + 1
Loop
Dim a As Integer
a = 0
i = 1
Do
a = a + i
i = i + 1
Loop Until i > 10
●For循环和Whlie循环应当根据适当的环境使用,它们有时也可替换。
1、运行For语句和Do语句的循环语句的功能示范frm(注意步长为负时,如-1时For语句的运行情况讨论),掌握它们的功能;
2、例2:求S=1+1/2+1/3+…+1/n的循环结构程序如下:(演示:例2累加求和程序FRM,再一次说明为什么要用第二种Do循环语句)
S = 0
n = Val(Text1Text) (因为条件表达式是数值比较,所以要把Text1Text得到的
字符串数字转为数值类型,例如:”100”100)
Do While n < 1 Or n <> Fix(n) Fix(x)是取整函数;
n = InputBox("输入n不是自然数,请重新输入n=") ‘输入框:InputBox
Text1Text = n
n = Val(n) (因为条件表达式是数值比较,所以要把InputBox得到的
Loop 字符串数字转为数值类型,例如:”100”100)
For k = 1 To n
S = S + 1 / k 循环求S=1+1/2+1/3+…+1/n
Next k
Text2Text = S
3、两种循环结构语句的格式:
(1) For语句的一般格式: P79
For 循环变量=初值 To 终值 Step 步长
程序段
Next循环变量 (当循环变量没超出终值时,执行程序段)
(2) Do语句的常用格式: P80
Do While 条件表达式 (当条件成立时,进入循环,执行程序段)
程序段
Loop (负责回到条件表达式,判断是否成立?)
提问:程序段的结构是什么样的?
就是以前讲的程序有三种基本控制结构:顺序结构、(分支)选择结构、循环结构!
这三种基本控制结构通常会被组合起来使用,以表达各种较为复杂的问题的算法。例如:
在(分支)选择模式内嵌入(分支)选择模式;
在循环模式内嵌入循环模式;
在循环模式内嵌入在(分支)选择模式;在(分支)选择模式内嵌入循环模式;
因此,循环内的程序段可以再包含选择模式和循环模式,今天我们先来讨论:
循环内的程序段可以再包含循环模式——多重循环的使用!
如果一层循环内只包含一层循环,我们把它叫做双重循环,掌握了双重循环的用法,那么多重循环也就容易使用掌握了。
二、双重循环的使用:
1、一般结构:(以For语句为例)
For 循环变量A=初值 To 终值 Step 步长
…
For 循环变量B=初值 To 终值 Step 步长
程序段
Next循环变量B
…
Next循环变量A
2、双重循环执行实例:
双重循环是如何执行的呢?我们来看下面:
实例1:For i=1 To 3 Step 1
For j=1 To 5 Step 1
List1AddItem Str(i) + "" + Str(j) ‘复习列表框List1AddItem的作用,
Next j
Next i ‘运行、演示多重循环程序;
从实际演示可知:当i=1时,j=1、2、3、4、5;
当i=2时,j=1、2、3、4、5;
当i=3时,j=1、2、3、4、5;
规律总结:先外循环,后内循环,内循环完成后,再进入外循环;
实例2:打印(输出)用“”组成的图形;
右边程序中,只要改变a、b的值,便打印出用“”组成的各种图形;(演示…)
注意:Print ""; 后分号“;” 表示不换行,下次循环打印还在同一行上。用立即方式验证如下:
Print "3";"+" ;"9=";39
3+9= 27
提问:输出 39=27 的语句有几种写法?(用立即方式展示)
实例3:修改实例2,可得到一个九九乘法表,程序如下:
For i=1 To 9 Step 1
For j=i To 9 Step 1
Print Str(i) + "" + Str(j)+ "=";ij;
Nextj
Print ‘打印空行,起到换行的作用!
Next i
讲解上程序,演示九九乘法表程序;
注意:为了内、外循环程序结构层次清楚,上面程序的同一个循环语句For/Next上下对齐,而且内循环语句缩进2格书写;
1、循环内的程序段可以再包含循环模式,我们称为多重循环;
如果一层循环内只包含一层循环,我们把它叫做双重循环。
2、双重循环的运行是先外循环,后内循环,内循环完成后,再进入外循环;
(多重循环运行次序也一样类推,见课本P22-23(P96-97)的包装问题算法);
如图,建立文本框数组 txtLed(0) ~ txtLed(8) ,依次填入 1~ 9
程序如下:
Dim start_led As Long, end_led As Long, loop_count As Long
Public Function Flicker() As Boolean
Static i As Long, last_led As Long
If i < start_led Then i = start_led
txtLed(last_led)BackColor = vbWhite '将前一盏灯变回白色
txtLed(i)BackColor = vbRed '将当前灯变成红色
last_led = i
i = i + 1
If i > end_led Then
i = start_led
Flicker = True '完成一个循环
Else
Flicker = False '循环没有完成
End If
End Function
Private Sub Timer1_Timer()
If loop_count < 4 Then
start_led = 0 '从一号灯开始
end_led = 8 '到九号灯结束
If Flicker() Then loop_count = loop_count + 1
ElseIf loop_count < 9 Then
start_led = 2 '从三号灯开始
end_led = 6 '到七号灯结束
If Flicker() Then loop_count = loop_count + 1
End If
End Sub
For Each ……Next格式:语句只为集合与数组二种数据类型专门度身定做的。
For Each <成员>In<数组或集>
[<语句组>]
[Exit For ]
Next [<成员>]
例子中a为一个数组;x是成员,不用定义! 例:
For Each x In a
sum = sum + x
Next x
VB For EachNext语句在数组中的使用:
VB For EachNext语句好像只是为二种数据类型专门度身定做的,其一就是集合,另外一个就是数组了。通过VB For EachNext语句,可以十分方便的访问数组中的任一元素。请仔细分析一下下列代码:
Dim arrString ( 2 ) As String = {"星期一","星期二","星期三"}
Dim Temp As String
For Each Temp In arrString
If Temp = "星期三" Then
MsgBox ( "在数组中寻找到""星期三""字符串")
Exit For '退出For Each … Next语句
End If
Next Temp
上面代码的功能是通过VB For EachNext语句访问arrString数组中各元素,如果发现有元素为字符串“星期三”,则弹出提示框,并退出循环。
同样用For … Next语句也能够实现上面同样的功能,只是感觉有点不专业,并且有点繁琐,下面代码是用For … Next语句实现上面VB For EachNext语句同等功能的代码:
Dim i As Integer
For i = 0 To 2
If arrString ( i ) = "星期三" Then
MsgBox ( "在数组中寻找到""星期三""字符串" )
Exit For
End If
Next i
for
<循环变量>=<初赋值>
to
<终值>
[step
<步长>]
……
……
next
<循环变量>
在默认情况下,step被设为“1”,可以省略,step也可以设为负值,例如:
dim
a=0
for
i=1
to
10
a=a+i
next
i
这是一个最简单的累加器的例子,把1到10累加在一起,然后赋值给“a”这样的效果和上面是一样的,只不过是倒着加罢了,请看:
dim
a=0
for
i=10
to
1
step
–1
a=a+i
next
i
while语句也是一个很常用的循环语句,它的形式很多。
do
while
……
loop语句
while
……
wend
语句
do
……
loop
while
while后面都跟逻辑条件判断,“do
while
……
loop语句”和“while
……
wend
语句”作用相似,都是先判断while后面的条件是否为“真”,如果为“真”则执行里面的语句,如果为“假”,则退出循环,循环直至条件为“假”终止。“do
……
loop
while
”与前两者的区别在于,它不管条件的真假,都会先执行“do”后面的语句,也就是说,它至少执行语句一次。
与while用法相似的还有until语句,它是直至条件为真则终止循环,句式把while上述三个语句的while换成until即可,但是因为容易记混,所以我建议只用while即可。until
<条件>可以相当于while
not
<条件>。
for循环和whlie循环应当根据适当的环境使用,它们有时也可替换。
-------------------------------------------------------------
最好找点资料看看,像vb神童教程,新手还是很容易看懂的。希望对你有帮助。。。
“loop until i>7” 符合题目条件中i的最小值是7
已经把第一次进入循环体计算在3次范围内
因为:
第一次进入循环体,使得I变为4
第二次,使得I变为7,但是I只是等于7,而并没有大于7,所以循环继续
第三次,使得I变为10,条件判断I已经大于7,退出循环!
欢迎分享,转载请注明来源:表白网
评论列表(0条)