vb控制结构-循环结构程序设计【谷风详析】_第1页
vb控制结构-循环结构程序设计【谷风详析】_第2页
vb控制结构-循环结构程序设计【谷风详析】_第3页
vb控制结构-循环结构程序设计【谷风详析】_第4页
vb控制结构-循环结构程序设计【谷风详析】_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 VB控制结构(2),循环结构程序设计,本章内容及要求: (1)掌握For.Next语句及Exit For语句的使用; (2)掌握Do.Loop循环语句与Exit Do语句的使用; (3)掌握循环结构的嵌套应用; (4)掌握循环结构和选择结构的嵌套应用。,6.1 概述,在Visual Basic程序设计中,实现循环结构的语句主要有下列几种: l ForNext语句 DoLoop语句 l WhileWend语句,Do While Loop形式 Do Loop While 形式 Do Until Loop形式 Do Loop Until 形式 Do Loop形式,打印九九乘法表 DimSgs

2、AsString Dimi,jAsInteger Fori=1To9被乘数从1变到9 Forj=iTo9 乘数从1变到9 Sgs=i Nextj Picture1.Print NextI,For循环语句 (一般用于循环次数已知) 形式: For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,6.2 For.Next循环结构,循环次数,例: For I=2 To 13 Step 3 Print I , Next I Print “I=“, I,循环执行次数 4 输出I的值分别为: 2 5 8 11 出了循环输出为: I=14,6.2 For.Ne

3、xt循环结构,6.2 For.Next循环结构,注意跳出FOR循环时的循环变量的值,For i= 1 to 10 step 1 s=s+i Next i Print i,For i= -1 to -10 step -1 s=s+i Next i Print i,6.2 For.Next循环结构,注意对于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 Pri

4、nt i j = j - 1 k = k + 1 Next Print j, k End Sub,练习:分析下面程序段结束时窗体上显示的值是多少?,(2) i2=0 For i = 1 To -2 Step -1 i2 = i2+1 Next Print i , i2,(-3 4),(1) For i = 1 To 10 i2 = i2+1 Next Print i,(11),(3) i2=0 For i = 1 To 5 Step 2 i2 = i2+1 Next Print i,(7),(4) i2 = 1 For i = 1 To 10 i = i + 1 i2 = i2 + 1 Nex

5、t Print i, i2,(11 6),(5) i2 = 1 i3 = 10 i = 10 For i = 1 To i3 i = i + 1 i2 = i2 + 1 i3 = i3 + 1 Next Print i, i2,(11 6),(6) i2 = 0 For i = 1 To 10 i2 = i2 + 1 If i 6 Then Exit For Next Print i, i2,(7 7),(7) i2 = 0 i = 10 Do i2 = i2 + 1 Loop While i = i2 Print i2,(1),例6.7 编程计算:S=1+2+3+100,Dim S%, I%

6、 S=0 累加前变量S为0 For I=1 to 100 S=S+I Next I Print S=,S,例6.7的算法流程图,6.2 For.Next循环结构,前测型: Do While 语句块 Exit Do 语句块 Loop,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

7、= a + i 每次循环,变量a都加变量i的值 Loop Print a 计算完毕,变量a的值即为所求 End Sub,例:使用Do WhileLoop循环语句计算1+2+3+100的值,后测型: Do 语句块 Exit Do 语句块 Loop While ,6.3 Do.Loop循环结构,6.3 Do.Loop循环结构,例:使用Do Loop While循环语句计算1+2+3+n的值,n的值由文本框输入。,Private Sub Command1_Click() Dim i As Integer, n As Integer, a As Integer 定义所需变量 n = Text1.Tex

8、t 得到输入的值 Do i = i + 1 每次循环,变量i都增加1 a = a + i 每次循环,变量a都加变量i的值 Loop While i n Text2.Text = a 显示计算结果,变量a的值即为所求 End Sub,前测型: Do Until 语句块 Exit Do 语句块 Loop,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 =

9、Text1.Text 得到输入的值n a = 1 必须为变量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 ,6.3 Do.Loop循环结构,例:使用级数求的值。 根据下式,计算圆周率的近似值,当计算到绝对值小于0.0001的通项时,认为满足精度要求,停止计算。 /4=1- 1/3 + 1/5 -1/7 +(-1)n+11/2n-1+,6.3 Do

10、.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产生通项的分母 s = 1 第一项符号为正 i = 1 第一项为1 Do 开始循环 m = 1 / i 计算通项的绝对值 a = a + s * m 总和加上一个通项 i = i + 2 产生下一个通项分母 s = -s 轮流转换通项的正负号 Loop Until m 0.0001 测试是否满足精度要求 Text1.Tex

11、t = a * 4 输出计算结果 End Sub,6.3 Do.Loop循环结构,6.3 Do.Loop循环结构,Do 语句块 Exit Do 语句块 Loop,Private 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)当使用While构成循环时,当条件为“真”,则反复执行

12、循环体,当条件为“假”,则退出循环。 (2)当使用Until 构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。,(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。 (4)语句Exit Do的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,6.3 Do.Loop循环结构,思考:将一个十进制数转换成二进制。,算法流程图,6.3 Do.Loop循环结构,用Do.Loop循环的五种形式分别完成,

13、将一个十进制数转换成二进制。,算法流程图,6.3 Do.Loop循环结构,分析: 将一个十进制数转换成二进制采用连除2取余数的方法,即将十进制数除以2取余数,直到商为0,然后所得的余数即为二进制数各位的数码,从右到左排列,第一次除2的余数在最右边。算法设计如下:用变量Dec表示十进制数,Bin表示转换所得的二进制数字符串。 (1) 输入十进制Dec (2) Dec除以2得余数Res,商又赋值给Dec;让Bin = Res Dec Do Res = Dec Mod 2 求出除以2的余数 Bin = Res Bin End Sub,6.3 Do.Loop循环结构,6.4.1 WhileWend语句

14、 使用格式如下: While Wend 说明:该语句的功能与Do While .Loop实现的循环完全相同。,6.4 WhileWend语句,6.5.1 循环的嵌套多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。 上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,6.5 嵌套结构,(1)For I=. . For J=. . Next J . Next I,(2)For I=. . Do While/Until . . Loop . Next I,(3)Do Whi

15、le. . For J=. . Next J . Loop,(4)Do While/Until. . Do While/Until . . Loop . Loop,6.5 嵌套结构,对于循环的嵌套,要注意以下事项: (1) 内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉; 下面是正确的嵌套,6.5 嵌套结构,For 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()

16、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 Next End Sub,循环嵌套的执行流程:,6.5 嵌套结构,6.5 嵌套结构,Private SubCommand1_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 x End Sub 程序运行后,单击命令按钮,在窗体上显示的值是 ( 2 3 ),6.5 嵌套结构,Exit D

17、o和Exit For语句在循环嵌套时的作用,6.5 嵌套结构,例:打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i Next j Picture1.Print Next i,6.5 嵌套结构,6.5 嵌套结构,例:,编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个三位数,其各位数字立方和等于该数字本身。例如,153是水仙花数,因为:,6.5 嵌套结构,Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer Dim n As Integer For i = 1 To

18、 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 i End Sub,解法一:,6.5 嵌套结构,解法二:,Private Sub Form_Click() Dim i As Integer, j As Integer, k As Integer Dim n As Integer For n = 100 To 999 i = n 100 得到百位上的数字 j = n

19、10 - i * 10 得到十位上的数字 k = n Mod 10 得到个位上的数字 If i 3 + j 3 + k 3 = n Then Print n Next n End Sub,6.5.2 循环结构与选择结构的嵌套,在循环结构中可以完整嵌套选择结构,即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。,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

20、= 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= Select Case Case Case End Select Next I,6.5 嵌套结构,6.6强制退出循环,6.6.1用Exit for语句强制退出For循环,Exit For 语句可以使程序从For循环中退出来,转到Next语句后面的程序继续执行,而不必等到循环变量到达终值时才退出来。 注意:在循环体外面,不可以使用Exit For 语句,而且Exit For通常与IF语句一起

21、使用。 例:用300元买100只鸡,母鸡9元1只,小鸡1元1只,问母鸡、小鸡各应买多少只? 分析:设买母鸡x只,则x的变化范围为130只,因为买的母鸡只数不可能超过30只,超过30只就不可能买到100只鸡。设小鸡为y只,则y=100-x。下面要做的工作就是求x为何值时,9x+y=300成立。,6.6强制退出循环,程序代码: Option Explicit Private Sub Form_Click() Dim x as Integer Dim y as Integer For x=1 to 30 Y=100-x If 9*x+y=300 then Exit for Next x Print

22、“母鸡有”;x;”只”,”小鸡有”;y;”只” End Sub,6.6强制退出循环,6.6.2用Exit Do语句强制退出Do循环 Exit Do语句可以使程序从Do循环中退出来,转到Loop语句后面的程序继续执行,而不必等到循环达到结束条件时才退出来。 注意:在循环体外面,不可以使用Exit Do 语句,而且Exit Do通常与IF语句一起使用。 例:用Do While循环改写上例程序,体会Exit Do语句的作用,6.6强制退出循环,程序代码: Option Explicit Private Sub Form_Click() Dim x as Integer Dim y as Integer X=1 Do while x= 30 Y=100-x If 9*x+y=300 then Exit Do Loop Print “母鸡有”;x;”只”,”小鸡有”;y;”只” End Sub,6.7 应用举例,例: 判断一个给定的整数是否为素数。,算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论