版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6章章 VB控制结构(控制结构(2)循环结构程序设计循环结构程序设计 本章内容及要求:本章内容及要求:(1)掌握)掌握For.Next语句及语句及Exit For语句的使用;语句的使用; (2)掌握)掌握Do.Loop循环语句与循环语句与Exit Do语句的使用;语句的使用;(3)掌握循环结构的嵌套应用;)掌握循环结构的嵌套应用;(4)掌握循环结构和选择结构的嵌套应用。)掌握循环结构和选择结构的嵌套应用。6.1 概述概述在在Visual Basic程序设计中,程序设计中,实现循环结构的语句主要有实现循环结构的语句主要有下列下列几几种:种: l l ForNext语句语句l DoLoop语句
2、语句 l l WhileWend语句语句 Do While Loop形式形式Do Loop While 形式形式Do Until Loop形式形式Do Loop Until 形式形式Do Loop形式形式打印九九乘法表打印九九乘法表 Dim Sgs As String Dim i, j As Integer For i = 1 To 9 被乘数从被乘数从1变到变到9 For j = i To 9 乘数从乘数从1变到变到9 Sgs = i & & j & = & Str(i * j) 打印公式如打印公式如11=1 Picture1.Print Tab(j - 1)
3、 * 9 + 1); Sgs; Next j Picture1.Print Next I For循环语句循环语句 (一般用于循环次数已知一般用于循环次数已知)形式:形式:For 循环变量初值循环变量初值 to 终值终值 Step 步长步长 语句块语句块Exit For 语句块语句块Next 循环变量循环变量 循 环 变 量 在 终 值 内 语 句 块 Exit For 语 句 块 循 环 变 量 加 步 长 T F 循 环 变 量 得 初 值 循环体 =0 循环变量循环变量=终值终值 =终值终值=1 可省略可省略 步长步长6.2 For.Next循环结构循环结构循环次数循环次数) 1(步长初值
4、终值Int例例: For I=2 To 13 Step 3 Print I , Next I Print “I=“, I 循环执行次数循环执行次数 4输出输出I的值分别为的值分别为: 2 5 8 11 出了循环输出为出了循环输出为: I=146.2 For.Next循环结构循环结构6.2 For.Next循环结构循环结构注意跳出注意跳出FOR循环时的循环变量的值循环时的循环变量的值For i= 1 to 10 step 1 s=s+iNext iPrint iFor i= -1 to -10 step -1 s=s+iNext iPrint i6.2 For.Next循环结构循环结构注意对于注
5、意对于ForNext语句来说,一旦进入循环,其语句来说,一旦进入循环,其“终止值终止值”和和“增量增量”便不会再改变了。便不会再改变了。Private Sub Form_Click()Dim i As Integer, j As Integer, k As Integer j = 10: k = 1 For i = 1 To j Step k Print i j = j - 1 k = k + 1 Next Print j, kEnd Sub练习:分析下面程序段结束时窗体上显示的值是多少?练习:分析下面程序段结束时窗体上显示的值是多少?(2)i2=0For i = 1 To -2 Step -
6、1i2 = i2+1NextPrint i , i2 (-3 4)(1)For i = 1 To 10 i2 = i2+1NextPrint i(11)(3)i2=0For i = 1 To 5 Step 2i2 = i2+1NextPrint i(7)(4)i2 = 1For i = 1 To 10i = i + 1i2 = i2 + 1NextPrint i, i2(11 6)(5) i2 = 1i3 = 10i = 10For i = 1 To i3i = i + 1i2 = i2 + 1i3 = i3 + 1NextPrint i, i2(11 6)(6)i2 = 0For i = 1
7、 To 10 i2 = i2 + 1 If i 6 Then Exit ForNextPrint i, i2(7 7)(7) i2 = 0i = 10Do i2 = i2 + 1Loop While i = i2Print i2(1)例例6.7 编程计算:编程计算:S=1+2+3+100Dim S%, I%S=0 累加前变量累加前变量S为为0For I=1 to 100 S=S+INext IPrint S=,S 当I=100I=I+1打印SS=0,I=1S=S+I例例6.7的算法流程图的算法流程图6.2 For.Next循环结构循环结构前测型前测型: Do While 语句块语句块 Exit
8、 Do 语句块语句块 Loop 条 件 F T E xit D o 语 句 块 语 句 块 D o W hile L oop 执 行 过 程 DoLoop循环语句使用形式循环语句使用形式 6.3 Do.Loop循环结构循环结构6.2 Do.Loop循环结构循环结构Private Sub Form_Click() Dim i As Integer: Dim a As Integer 定义所需变量定义所需变量 i = 0: a = 0 给变量赋初值给变量赋初值0,这两条语句可省略这两条语句可省略 Do While i 100 i = i + 1 每次循环,变量每次循环,变量i都增加都增加1 a =
9、 a + i 每次循环,变量每次循环,变量a都加变量都加变量i的值的值 Loop Print a 计算完毕,变量计算完毕,变量a的值即为所求的值即为所求End Sub例例:使用使用Do WhileLoop循环语句计算循环语句计算1+2+3+100的值的值后测型后测型: Do 语句块语句块 Exit Do 语句块语句块 Loop While T F Exit D o 语 句 块 语 句 块 条 件 D o Loop W hile 的 执 行 过 程 6.3 Do.Loop循环结构循环结构6.3 Do.Loop循环结构循环结构例例:使用使用Do Loop While循环语句计算循环语句计算1+2+
10、3+n的值的值,n的的值由文本框输入。值由文本框输入。Private Sub Command1_Click() Dim i As Integer, n As Integer, a As Integer 定义所需变量定义所需变量 n = Text1.Text 得到输入的值得到输入的值 Do i = i + 1 每次循环,变量每次循环,变量i都增加都增加1 a = a + i 每次循环,变量每次循环,变量a都加变量都加变量i的值的值 Loop While i n Text2.Text = a 显示计算结果,变量显示计算结果,变量a的值即为所求的值即为所求End Sub前测型前测型: Do Unti
11、l 语句块语句块 Exit Do 语句块语句块 Loop 条 件 T FE xit D o 语 句 块 语 句 块 D o U ntil L oop 执 行 过 程 DoLoop循环语句使用形式循环语句使用形式 6.3 Do.Loop循环结构循环结构6.3 Do.Loop循环结构循环结构例例:计算阶乘计算阶乘 n!的值(!的值(n的值由文本框输入)。的值由文本框输入)。Private Sub Command1_Click() Dim i As Integer, n As Integer Dim a As Long n = Text1.Text 得到输入的值得到输入的值n a = 1 必须为变量
12、必须为变量a赋初值赋初值1 Do Until i = n i = i + 1 每次循环,变量每次循环,变量i都增加都增加1 a = a * i 每次循环,变量每次循环,变量a都乘以变量都乘以变量i的值的值 Loop Text2.Text = a 计算完毕,变量计算完毕,变量a的值即为所求的值即为所求End Sub后测型后测型: Do 语句块语句块 Exit Do 语句块语句块 Loop Until F T Exit Do 语 句 块 语 句 块 条 件 Do Loop Until 的 执 行 过 程 6.3 Do.Loop循环结构循环结构例例:使用级数求使用级数求的值。的值。根据下式,计算圆周
13、率根据下式,计算圆周率的近似值,当计算到绝对值小于的近似值,当计算到绝对值小于0.0001的通项时,认为满足精度要求,停止计算。的通项时,认为满足精度要求,停止计算。/4=1- 1/3 + 1/5 -1/7 +(-1)n+11/2n-1+6.3 Do.Loop循环结构循环结构Private Sub cmdPi_Click() Dim a As Single 变量变量a保存通项之和保存通项之和 Dim m As Single 变量变量m保存通项的绝对值保存通项的绝对值 Dim s As Integer 变量变量s产生通项的符号产生通项的符号 Dim i As Integer 变量变量i产生通项的
14、分母产生通项的分母 s = 1 第一项符号为正第一项符号为正 i = 1 第一项为第一项为1 Do 开始循环开始循环 m = 1 / i 计算通项的绝对值计算通项的绝对值 a = a + s * m 总和加上一个通项总和加上一个通项 i = i + 2 产生下一个通项分母产生下一个通项分母 s = -s 轮流转换通项的正负号轮流转换通项的正负号 Loop Until m 0.0001 测试是否满足精度要求测试是否满足精度要求 Text1.Text = a * 4 输出计算结果输出计算结果End Sub6.3 Do.Loop循环结构循环结构6.3 Do.Loop循环结构循环结构Do 语句块语句块
15、 Exit Do 语句块语句块LoopPrivate Sub Command1_Click() Dim i As Integer, n As Integer Dim a As Long n = val(Text1.Text) a = 1 Do i = i + 1 a = a * i If i = n Then Exit Do Loop Text2.Text = a End Sub例例6.5:计算计算n!本节小结:本节小结: (1 1)当使用)当使用WhileWhile 构成循环时,当条件为构成循环时,当条件为“真真”,则反复执行循环体,当条件为则反复执行循环体,当条件为“假假”,则退出循环。,
16、则退出循环。 (2)当使用)当使用Until 构成循环时,当条件为构成循环时,当条件为“假假”,则反复执行循环体,直到条件成立,即为则反复执行循环体,直到条件成立,即为“真真”时,则退出循时,则退出循环。环。 (3 3)在循环体内一般应有一个专门用来改变条件表达式中)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。立),最后达到退出循环。 (4)语句)语句Exit Do的作用是退出它所在的循环结构,它只能的作用是退出它所在的循环结构,它只能用在用在DO/Loop结构中,
17、并且常常是同选择结构一起出现在循环结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。结构中,用来实现当满足某一条件时提前退出循环。 6.3 Do.Loop循环结构循环结构 思考思考: :将一个十进制数转换成二进制。将一个十进制数转换成二进制。 算法流程图算法流程图6.3 Do.Loop循环结构循环结构 用用Do.LoopDo.Loop循环的五种形式分别完成循环的五种形式分别完成 将一个十进制数转换成二进制。将一个十进制数转换成二进制。 算法流程图算法流程图6.3 Do.Loop循环结构循环结构分析分析: : 将一个十进制数转换成二进制采用连除将一个十进制数
18、转换成二进制采用连除2 2取余数的方法,即将十进制数除以取余数的方法,即将十进制数除以2取余数,直取余数,直到商为到商为0,然后所得的余数即为二进制数各位的,然后所得的余数即为二进制数各位的数码,从右到左排列,第一次除数码,从右到左排列,第一次除2的余数在最右的余数在最右边。算法设计如下:用变量边。算法设计如下:用变量Dec表示十进制数,表示十进制数,BinBin表示转换所得的二进制数字符串。表示转换所得的二进制数字符串。(1) 输入十进制输入十进制Dec(2) Dec除以除以2 2得余数得余数R Res,商又赋值给商又赋值给Dec;让;让Bin = Res & BinBin = Re
19、s & Bin(3) 若若DecDec=0,则算法结束;否则执行(,则算法结束;否则执行(2)将一个十进制数转换成二进制的程序如下将一个十进制数转换成二进制的程序如下: : Private Sub Form_Click() Dim Dec As Integer 表示十进制数表示十进制数 Dim Bin As String 转换为二进制表示转换为二进制表示 Dim Res As Integer Dec = Val(InputBox(输入一个十进制数输入一个十进制数Dec=?) Print 十进制数:十进制数:; Dec Do Res = Dec Mod 2 求出除以求出除以2的余数的余数
20、 Bin = Res & Bin Dec = Dec 2 Loop Until Dec=0 Print 转换为二进制数为:转换为二进制数为:; BinEnd SubEnd Sub 6.3 Do.Loop循环结构循环结构6.4.1 WhileWend语句语句 使用格式如下:使用格式如下: While Wend 说明:说明:该语句的功能与该语句的功能与Do While .Loop实现的实现的循环完全相同。循环完全相同。6.4 WhileWend语句语句 6.5.1 循环的嵌套循环的嵌套多重循环结构多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称如果在一个循环内完整地包含另一个循
21、环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。嵌套一层称为二重循环,嵌套二层称为三重循环。 上面介绍的几种循环控制结构可以相互嵌套,下面是上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:几种常见的二重嵌套形式:6.5 嵌套结构嵌套结构(1)For I=. . For J=. . Next J . Next I(2)For I=. . Do While/Until . . Loop . Next I(3)Do While. . For J=. . Next J
22、. Loop(4)Do While/Until. . Do While/Until . . Loop . Loop6.5 嵌套结构嵌套结构 For i =1 To 10 For j=1 To 20 Next j Next i For i =1 To 10 Next i For i =1 To 10 Next i 对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项: (1) 内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉;外循环必须完全包含内循环,不能交叉;下面是正确的嵌套下面是正确的嵌套6.5 嵌套结构嵌套结构 For
23、i =1 To 10 For j=1 To 20 Next i Next j For i =1 To 10 For i=1 To 20 Next i Next i下面是不正确的嵌套下面是不正确的嵌套6.5 嵌套结构嵌套结构 Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 3 Print i=; i For j = 1 To 3 Print Tab; j=; j Next NextEnd Sub循环嵌套的执行流程循环嵌套的执行流程:6.5 嵌套结构嵌套结构6.5 嵌套结构嵌套结构Private SubCom
24、mand1_Click() Dim x%, a%,y% For x = 1 to 2 a=0 For y = 1 to x+1 a = a+1 Next y Print a; Next xEnd Sub程序运行后程序运行后,单击命令按钮单击命令按钮,在窗体上显在窗体上显示的值是示的值是 ( 2 3 )6.5 嵌套结构嵌套结构Exit Do和和Exit For语句在循环嵌套时的作用语句在循环嵌套时的作用6.5 嵌套结构嵌套结构例:打印九九乘法表例:打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i & & j & = & i
25、 * j Picture1.Print Tab(j - 1) * 9 + 1); se; Next j Picture1.Print Next i6.5 嵌套结构嵌套结构6.5 嵌套结构嵌套结构例例: 编一程序,显示出所有的水仙花数。所谓水仙花数,编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个三位数,其各位数字立方和等于该数字本身。例是指一个三位数,其各位数字立方和等于该数字本身。例如,如,153153是水仙花数,因为:是水仙花数,因为: 3333511536.5 嵌套结构嵌套结构Private Sub Form_Click() Dim i As Integer, j As Integ
26、er, k As Integer Dim n As Integer For i = 1 To 9 i表示百位上的数表示百位上的数 For j = 0 To 9 j表示十位上的数表示十位上的数 For k = 0 To 9 k表示个位上的数表示个位上的数 n = i * 100 + j * 10 + k If i 3 + j 3 + k 3 = n Then Print n Next k Next j Next iEnd Sub解法一解法一:6.5 嵌套结构嵌套结构解法二解法二:Private Sub Form_Click() Dim i As Integer, j As Integer, k
27、As Integer Dim n As Integer For n = 100 To 999 i = n 100 得到百位上的数字得到百位上的数字 j = n 10 - i * 10 得到十位上的数字得到十位上的数字 k = n Mod 10 得到个位上的数字得到个位上的数字 If i 3 + j 3 + k 3 = n Then Print n Next nEnd Sub6.5.2 循环结构与选择结构的嵌套循环结构与选择结构的嵌套 在循环结构中可以完整嵌套选择结构在循环结构中可以完整嵌套选择结构,即整个选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整都属于循环体。在选
28、择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。不允许出现在两个或两个以上的分支内。 6.5 嵌套结构嵌套结构(1)For I= IF Then End IF Next I(6) IF Then For I= End IF Next I(5)Select Case For I= Case Case Next I End Select(3)For I= IF Then Next I End IF(2)IF Then For I= Next I End IF(4)For I= S
29、elect Case Case Case End Select Next I6.5 嵌套结构嵌套结构6.6强制退出循环强制退出循环6.6.1用Exit for语句强制退出For循环 Exit For 语句可以使程序从For循环中退出来,转到Next语句后面的程序继续执行,而不必等到循环变量到达终值时才退出来。注意:在循环体外面,不可以使用Exit For 语句,而且Exit For通常与IF语句一起使用。例:用300元买100只鸡,母鸡9元1只,小鸡1元1只,问母鸡、小鸡各应买多少只?分析:设买母鸡x只,则x的变化范围为130只,因为买的母鸡只数不可能超过30只,超过30只就不可能买到100只鸡。设小鸡为y只,则y=100-x。下面要做的工作就是求x为何值时,9x+y=300成立。6.6强制退出循环强制退出循环程序代码:Option ExplicitPrivate Sub Form_Click()Dim x as IntegerDim y as IntegerFor x=1 to 30 Y=100-x If 9*x+y=300 then Exit for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论