1、1,第五章 循环结构、列表框和组合框,5.1 循环语句 5.2 循环嵌套 5.3 列表框和组合框,2,5.1 循环语句,5.1.1 ForNext结构,For 循环变量=初值 To 终值 Step 步长Exit For Next 循环变量,具体格式:,3,(1)计算初值、终值及步长表达式的值,并将初值赋给循环变量; (2)判断循环变量的值是否“超过”终值: 当步长为正时,“超过”是指循环变量的值终值; 当步长为负时,“超过”是指循环变量的值终值; 若“超过”时,退出循环,转到Next语句的下一语句; (3)执行循环体中的语句; (4)执行Next语句,循环变量增加一个步长; (5)返回第(2)
2、步。,基本步骤:,4,结构流程图,5,(1)“循环变量” 必须为数值型; (2)“初值”、“终值”为数值表达式,若值不是整数,系统会自动取整; (3)“步长”为数值表达式,可为正数,也可为负数,若值不是整数,系统会自动取整;分步长大于0、步长小于0、步长等于0这几种情况。步长等于1时,可省略Step子句; 例如:For i10 To 1 Step 1Print iNext i,注意事项:,6,(4)循环次数的计算公式:循环次数Int(终值-初值)步长+1),若所得为负数,则取循环次数0。 (5)循环必须遵循“先检查、后执行”的原则。 (6)Exit For语句。该语句允许在循环体内出现一次或多
3、次。 (7)Next后面的循环变量与For语句中的循环变量必须相同,且两者必须成对出现。 (8)在For循环体中改变循环控制变量的值,将会影响循环次数。例如: Dim s As Integer,i As IntegerFor i1 To 10s=s+iii+1Next i,执行几次?,5次,7,例题:,1、单击窗体时,在窗体上打印输出5个“_”符号。,8,程序代码如下:Private Sub Form_Click()For i = 1 To 5 Print “_“ 循环体Next i End Sub,9,2、通过循环变量的变化在窗体上输出彩色字,程序运行界面如图所示。,10,11,Privat
4、e Sub Form_Click()Dim i As Integer, green As Integer, blue As IntegerRandomize TimerFor i = 1 To 2000 Step 200green = Int(255 * Rnd + 1)blue = Int(255 * Rnd + 1)CurrentX = 500 + iCurrentY = 500 + iForeColor = RGB(i, green, blue)Print “欢迎来到VB世界“Next i End Sub,12,编写程序找出100999之间的所有“水仙花数”。所谓“水仙花数”是指一个三位
5、数,其各位数字的立方和等于该数本身。,13,Private Sub Form_Click()Dim x As IntegerDim y As IntegerDim z As IntegerFor i = 100 To 999x = i 100y = (i - x * 100) 10z = i - x * 100 - y * 10If x 3 + y 3 + z 3 = i ThenText1.Text = Text1.Text & “ “ & CStr(i)End IfNext i End Sub,14,5.1.2 DoLoop结构,1、DoLoop语句 2、Do WhileLoop语句 3、
6、DoLoop While语句 4、Do UntilLoop语句 5、DoLoop Until语句,15,1、DoLoop语句,具体格式:,DoExit Do Loop,其中,Exit Do语句是可选语句,它提供一种退出Do循环的方法,并且只能在Do循环中使用,可以在循环体任何位置放置任意多个Exit Do语句。根据所在位置,确定要退出的循环。,要有退出循环的语句,16,Dim n As Integern0Don=n+1If n10 Then Exit DoEnd IfLoop,程序运行时,循环体语句nn+1被重复执行10次后,因执行语句If n10 Then Exit Do End If时,满
7、足条件n10,退出循环。,17,具体格式: Do WhileExit DoLoop,2、Do WhileLoop语句,18,首先判断条件表达式的值是否为True。若为True,则执行循环体中的语句,当执行到Loop语句时,返回到Do While语句,继续判断条件表达式的值是否为True ;若为False,则退出循环,执行Loop后面的语句。如此反复执行,直到条件表达式的值为False才退出循环。,必须存在改变条件表达式的语句,19, Do、Loop、While都是关键字,Do While和Loop应成对出现; 条件表达式为关系或逻辑型,若为数值型,以0表示False,非0表示True; Do
8、WhileLoop语句是先判断条件后执行循环体,有可能一次也不执行; 遇到Exit Do语句时,将强制提前结束循环,执行Loop后的下一条语句,该语句允许在循环体内出现一次或多次。,注意事项:,20,3、Do Loop While语句,具体格式: Do Exit DoLoop While,21,首先执行一次循环体内的语句,执行到Loop while语句时,判断条件表达式的值是否为True。若为True,则返回到循环体的开始语句,再次执行循环体,这样一直到条件表达式的值为False时才退出循环。,必须存在改变条件表达式的语句,22,区别:Do While.Loop循环先测试条件是否成立;Do.L
9、oop While循环先执行一次循环体。,23,例如: 程序段1: Dim n As Integern=1Do While n1n=n+1LoopPrint n,程序段2: Dim n As Integern=1Don=n+1Loop While n1Print n,输出结果为:1,输出结果为:2,24,4、Do UntilLoop语句,具体格式: Do Until Exit DoLoop,25,首先判断条件表达式的值是否为False。若是False,则执行循环体,当执行到Loop语句时,返回到Do Until语句,继续判断条件表达式的值是否为False;若是True,则退出循环,执行Loop
10、后面的语句。如此反复执行,直到条件表达式的值为True才退出循环。,26,例如:求s=1+2+3+100的值。,方法1:用Do WhileLoop语句实现的:,Dim n As Integer ,s As Integern=1s=0Do While n100s=s+nn=n+1LoopPrint s,n=100,27,方法2:用Do UntilLoop语句实现的:,Dim n As Integer ,s As Integern=1s=0Do Until n=100s=s+nn=n+1LoopPrint s,n100,28,具体格式: DoExit DoLoop Until ,5、Do Loop
11、 Until语句,29,首先执行一次循环体内的语句,执行到Loop Until 语句时,判断条件表达式的值是否为False。若为False,则返回到循环体的开始语句,再次执行循环体,这样一直到条件表达式的值为True时才退出循环。,30,例【5-6】:编写程序在标签中显示1100之间既能被3整除又能被7整除的整数,并计算它们的和。要求用DoLoop While和DoLoop Until两种语句分别编写循环体部分。,31,编程思路:程序的循环次数是确定的,即从1到100。对于用DoLoop While语句编写循环体部分,While后的条件表达式是满足条件执行循环,所以条件表达式是“n 100”。
12、,32,Private Sub ComputeCmd _Click()Dim n As Integer, s As IntegerDim t As Stringn = 1:s = 0:t = “DoIf n Mod 3 = 0 And n Mod 7 = 0 Thent = t & Str(n)t = t & “,“s = s + nEnd Ifn = n + 1Loop While n = 100NumLabel.Caption = tSumLabel.Caption = s End Sub,33,Private Sub ComputeCmd _Click()Dim n As Integer
13、, s As IntegerDim t As Stringn = 1:s = 0:t = “DoIf n Mod 3 = 0 And n Mod 7 = 0 Thent = t & Str(n)t = t & “,“s = s + nEnd Ifn = n + 1Loop Until n 100NumLabel.Caption = tSumLabel.Caption = s End Sub,34,按下列公式计算: e=1+1/1!+1/2!+1/3!+1/n!+ 使1/n!小于0.000001,Private Sub Form_Click()Dim e As DoubleDim i As In
14、tegerDim fact As DoubleDim result As Longe = 0: i = 1: fact = 1: result = 1Dofact = 1 / resulte = e + factresult = result * ii = i + 1Loop While fact 0.000001Label1.Caption = Val(e) End Sub,35,S=1*(1+2)*(1+2+3)*(1+2+3+n) 编程求S不大于20000时最大的n值,36,Private Sub Form_Click()Dim sum As LongDim s As LongDim n
15、 As Integersum = 0: s = 1: n = 0Don = n + 1sum = sum + ns = s * sumLoop Until s 20000Label3.Caption = Val(n - 1) End Sub,37,定义:在一个循环体中含有另一个循环结构,这就构成了循环的嵌套。以上几节介绍的循环语句都可以实现循环嵌套。两层的循环嵌套,称为二重循环,三层以上的循环嵌套,称为多重循环。,5.2 循环嵌套,38,(1) 对于ForNext的循环嵌套,在每层循环中的控制变量要使用不同的变量名。(2) 内循环结构语句必须完整地嵌在外循环体中,不可交叉。DoLoop或For
16、Next语句需成对使用,Visual Basic会给每个循环结构结束语句(Loop或Next)匹配最近的循环结构开始语句(Do或For)。(3) 多重循环执行时,外循环每重复执行一次,内循环则要完整地执行其应重复的次数。,注意事项:,39,例【5-8】:打印如图5-15所示的上三角的九九乘法表。,40,程序代码如下: Private Sub Form_Click()Dim s As StringPrint Tab(45); “九九乘法表“Print Tab(45); “=“For i = 1 To 9For j = 1 To is = i Next jPrintNext i End Sub,4
17、1,在窗体上打印星号“*”矩形,42,Private Sub Command1_Click()Dim n As Integern = Val(Text1.Text)For i = 1 To nFor j = 1 To nPrint “*“;Next jPrintNext i End Sub,43,5.3 列表框与组合框,1.常用属性 (1) Columns属性:用于设置列表项排列的列数。取值为0,按单列显示,垂直滚动条;取值为1,按单列显示,水平滚动条;取值大于1,多列显示。 (2) List属性:是一个字符型数组,用于存放列表框的选项内容,其元素与列表的选项相对应,下标从0开始。 (3) L
18、istCount属性:列表框中条目的个数,ListCount-1表示最后一项的序号。只能在程序中引用。,5.3.1 列表框,44,(4) ListIndex属性:表示运行时被选定的选项的序号(下标)。只能在程序中引用。 (5) Selected属性:一个逻辑型数组,表示运行时对应选项被选中或未被选中。只能在程序中引用。 (6) Sorted属性:列表框中的条目是否按字母顺序排列显示。只能在属性窗口设置。 (7) Text属性:返回当前被选中项目的文本内容。只能在程序中引用。 (8) MultiSelect属性:设置能否多项选项以及如何进行选择。只能在属性窗口设置。 (9) Style属性:设置
19、控件外观。,45,2.常用方法 (1) AddItem方法 格式:列表框名AddItem ,下标 说明:用于在列表框指定位置上添加一个新项目。如果下标省略,则把文本添加到列表框的尾部,下标范围从0到ListCount-1。 (2) Clear方法 格式:列表框名Clear 说明:用于清除列表框中的全部内容。执行该方法后,ListCount重新被设置为0。,46,3.事件列表框能够响应Click事件和DblClick事件。如果在Click事件中有代码,则DblClick事件将永远不会被触发,因为Click事件是优先被触发的事件。,(3) RemoveItem方法 格式:列表框名RemoveIte
20、m 说明:用于删除列表框中指定位置上的项目,下标必须小于ListCount-1,否则程序出错。,47,1.特有属性(1) Style属性:决定组合框的类型和显示方式。取值为0,下拉式组合框;取值为1,简单组合框,没有下拉箭头;取值为2,下拉列表式组合框。(2) Text属性获取组合框当前选定项目值的最简单最常用方法就是使用Text属性。组合框在运行时Text属性都与最后文本框中显示的文本相对应。该文本既可以是选中的列表项目,也可以是用户在文本框中输入的文本。,5.3.2 组合框,MultiSelect、Selected属性与列表框形同,48,2.事件 组合框响应的事件与Style属性有关。 Style=0时,能响应Click、Change和DropDown事件。 Style=1时,能响应DblClick、Click和Change事件。 Style=2时,只能响应Click和DropDown事件。,小结,本章主要介绍ForNext语句、DoLoop语句、Do WhileLoop语句、DoLoop While语句、Do UntilLoop语句和DoLoop Until语句。本章最后介绍了列表框和组合框的使用。,