第五章vb循环结构1.ppt

上传人:sccc 文档编号:4880300 上传时间:2023-05-21 格式:PPT 页数:60 大小:770.01KB
返回 下载 相关 举报
第五章vb循环结构1.ppt_第1页
第1页 / 共60页
第五章vb循环结构1.ppt_第2页
第2页 / 共60页
第五章vb循环结构1.ppt_第3页
第3页 / 共60页
第五章vb循环结构1.ppt_第4页
第4页 / 共60页
第五章vb循环结构1.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第五章vb循环结构1.ppt》由会员分享,可在线阅读,更多相关《第五章vb循环结构1.ppt(60页珍藏版)》请在三一办公上搜索。

1、循环结构,Do Loop之“当”循环,形式1:形式2:Do While Do 语句块(循环体)语句块(循环体)Loop Loop While,当条件为真(true)时循环!,Do Loop循环示例1,Private sub Form_click()Dim num%num=1Do while num=10Print numNum=num+1LoopEnd sub,Private sub Form_click()Dim num%num=1Do Print numNum=num+1Loop while num=10End sub,S=1+2+3+100,Private Sub Form_Click(

2、)Dim i As Integer i为累加数Dim sum As Integer sum为累加和 i=1 sum=0 Do While i=100 sum=sum+i i=i+1 Loop Print sumEnd Sub,S=1+2+3+100,Private Sub Form_Click()Dim i As IntegerDim sum As Integer i=1 sum=0 Do sum=sum+i i=i+1 Loop While i=100 Print sumEnd Sub,Do Loop之“直到”循环,形式1:形式2:Do Until Do 语句块(循环体)语句块(循环体)Lo

3、op Loop Until,直到条件为真(true)时退出循环!,S=1+2+3+n,Private Sub Command1_Click()Dim i As Integer,n As Integer Dim sum As Integer n=Val(Text1.Text)sum=0 i=0 Do Until i n sum=sum+i i=i+1 Loop Text2.Text=sumEnd Sub,S=1+2+3+n,Private Sub Command1_Click()Dim i As Integer,n As Integer Dim sum As long n=Val(Text1.T

4、ext)sum=0 i=0 Do sum=sum+i i=i+1 Loop Until i n Text2.Text=sumEnd Sub,5.2 For 循环语句,For循环语句是计数型循环语句,用于控制循环次数已知的循环结构。语句形式如下:For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量,For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量,(1)“循环变量”:必须为数值型,取值范围在初值和终值之间。(2)“初值”、“终值”:都是数值型,可以是数值表达式。(3)“步长”:是数值型,可以是数值表达式。步长不能为0。如果步长是1,则Step

5、1可以省略不写。(4)“循环体”:在For和Next之间一条或多条语句,他们将被执行指定的次数。(5)Next后面的循环变量与For语句中的循环变量必须相同。,使用For循环计算1+3+5+99的值,Private Sub Command1_Click()Dim i As Integer,n As Integer Dim sum As Integer sum=0 For i=1 to 99 step 2 sum=sum+iNext iPrint sumEnd Sub,For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量,使用For循环计算1+3+5+99的值,Priva

6、te Sub Command1_Click()Dim i As Integer,n As Integer Dim sum As Integer sum=0 For i=99 to 1 step-2 sum=sum+iNext iPrint sumEnd Sub,For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量,For 和Do Loop的比较,采用For语句比Do Loop更加简明。一般情况下,能够预先确定循环次数时,应优先采用For语句,否则的话应该使用Do Loop语句,【例 5.13】利用随机数函数模拟抛硬币,采用的方法是:每次随机产生一个0或1的整数,相当于一

7、次投币,1代表正面,0代表反面。,在窗体上有三个文本框,名称分别是Text1、Text2、Text3,分别用于显示用户输入抛硬币次数、出现正面的次数和出现反面的次数,如图所示。,Private Sub Command1_Click()Dim n As LongDim n1 As Long,n2 As LongRandomizen=Val(Text1.Text)n1=0n2=0For i=1 To nr=Int(Rnd*2)If r=1 Thenn1=n1+1Elsen2=n2+1End IfNextText2.Text=n1Text3.Text=n2End Sub,循环的嵌套多重循环结构 如果

8、在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。下面是几种常见的二重嵌套形式:,(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.Loop,(4)Do While/Until.Do While/Until.Loop.Loop,循环嵌套,Private Sub Form_Click()Dim i As Integer,j As IntegerFor i=1 To 3 Pr

9、int i=”;i For j=1 To 3 Print Tab;j=;j Next jNext IEnd Sub,图5.6 例5.4显示结果,循环嵌套,For i=1 To 3 Step 1 Print i=”;i For j=1 To 3 Step 1 Print Tab;j=;j Next jNext i,i=1,i=3,i=i+1,Print i=”;iFor j=1 To 3 Print Tab;j=;j Next j,N,Y,循环嵌套,i=1,i=3,i=i+1,Print“i=“;i,j=j+1,j=1,j=3,Print Tab;j=;j,Y,N,Y,N,For i=1 To

10、3 Step 1 Print i=”;i For j=1 To 3 Step 1 Print Tab;j=;j Next jNext i,循环嵌套,For i=1 To 3 Step 1 Print i=”;i For j=1 To 3 Step 1 Print Tab;j=;j Next jNext i,i=1,i=3,i=i+1,Print i=”;iFor j=1 To 3 Print Tab;j=;j Next j,N,Y,循环嵌套,i=1,i=3,i=i+1,Print“i=“;i,j=j+1,j=1,j=3,Print Tab;j=;j,Y,N,Y,N,For i=1 To 3 S

11、tep 1 Print i=”;i For j=1 To 3 Step 1 Print Tab;j=;j Next jNext i,循环嵌套,For i=1 To 3 Print i=”;i For j=1 To 3 Print Tab;j=;j Next jNext i,i=1,i=3,i=i+1,j=j+1,j=1,j=3,Print Tab;j=;j,Y,N,Y,N,【例5.8】将一角钱换成零钱(可以包括含1分、2分、5分中的任意多个面值),共有多少种换法?组成一角的零钱中,最多有10个1分、5个2分、2个5分。判断所有的组合中,总和正好是一角(10分)的情况有多少次即为所求。这类方法称

12、为“穷举法”,也称“枚举法”。,Private Sub Command1_Click()Dim i As Integer,j As Integer,k As Integer Dim n As Integer Print 1分个数,2分个数,5分个数 For i=0 To 10 For j=0 To 5 For k=0 To 2 If i+j*2+k*5=10 Then n=n+1 Print i,j,k End If Next Next Next Print 共有&n&种方法 End Sub,图5.8 例5.8显示结果,打印图案,*,*,*,*,01 1 1 2 2 2 2 23 3 3 3

13、3 3 3,11 2 3 1 2 3 4 51 2 3 4 5 6 7,11 2 1 1 2 3 2 11 2 3 4 3 2 1,A A B A A B C B AA B C D C B A,打印图案和九九乘法表,*#*#,*#*#*#*#*#*#*,自顶向下、逐步求精分而治之,For i=1 to 4 打印第i行换行Next i,*,打印第一行星号;换行打印第二行星号;换行打印第三行星号;换行打印第四行星号;换行,分析:?,For i=1 to 4 打印第i行换行Next i,*,For i=1 to 4 For j=1 to 6同行打印第 j 颗“*”Next j printNext i

14、,For i=1 to 4 打印第i行换行Next i,*,For i=1 to 4 For j=1 to 6同行打印第 j 颗“*”Next j printNext i,For i=1 to 4 打印第i行换行Next i,*,For i=1 to 4 For j=1 to 6同行打印第 j 颗“*”Next j printNext i,*,For i=1 to 4 For j=1 to 6同行打印第 j 颗“*”Next j printNext i,Dim i%,j%For i=1 to 4for j=1 to 6print*;next jprintNext i,*,For i=1 to

15、4 打印第i行换行Next i,For i=1 to 4 For j=1 to 2*i-1同行打印第 j 颗“*”Next j printNext i,*,For i=1 to 4 打印第i行换行Next i,For i=1 to 4 For j=1 to 2*i-1同行打印第 j 颗“*”Next j printNext i,*,For i=1 to 4 打印第i行换行Next i,For i=1 to 4 定位第一颗星;For j=1 to 2*i-1同行打印第 j 颗“*”Next j printNext i,*,For i=1 to 4 定位第一颗星;For j=1 to 2*i-1同

16、行打印第 j 颗“*”Next j printNext i,For i=1 to 4 print tab(5-i);For j=1 to 2*i-1print“*”;Next j printNext i,For i=1 to 4 定位第一颗星?;For j=1 to?同行打印第 j 颗“*”Next j printNext i,For i=1 to 4 print tab(i);For j=1 to 9-2*iprint“*”;Next j printNext i,*,打印图案,*#*#,For i=1 to 4 print tab(5-i);For j=1 to 2*i-1?Next j p

17、rintNext i,打印图案,*#*#*#*#*#*#*,For i=1 to 4 print tab(i);For j=1 to 9-2*i?Next j printNext i,打印九九乘法表,图5.7 例5.5显示结果,Private Sub Form_Click()Dim se As String Print Tab(35);九九乘法表 Print Tab(35);-For i=1 To 9 For j=1 To 9 se=i Next j Print Next iEnd Sub,Private Sub Form_Click()Dim se As String Print Tab(3

18、5);九九乘法表 Print Tab(35);-For i=1 To 9 For j=1 To 9 se=i Next j Print Next iEnd Sub,Private Sub Form_Click()Dim se As String Print Tab(35);九九乘法表 Print Tab(35);-For i=1 To 9 For j=1 To 9 se=i Next j Print Next iEnd Sub,Exit Do语句,Exit Do语句可以用来结束Do.Loop循环。一般和选择结构语句一起配合使用。它必须放置在Do.Loop语句的循环体中。当执行到Exit Do时

19、,程序会立即结束循环,跳到loop后面执行下面的语句。当有多个循环嵌套使用时,Exit Do语句只跳出所在的最内层的Do.Loop循环。,S=1+2+3+100,Private Sub Form_Click()Dim i As Integer Dim sum As Integer i=1sum=0Do sum=sum+i i=i+1 If i 100 Then Exit DoLoopPrint sumEnd Sub,Exit For语句,Exit For语句可以用来结束For.Next循环。一般也和选择结构语句一起配合使用。它必须放置在For.Next语句的循环体中。当执行到Exit For时

20、,程序会立即结束循环,跳到Next后执行下面的语句。当有多个循环嵌套使用时,Exit For语句只跳出所在的最内层的For.Next循环。,【例 5.7】给定一个数n,判断它是否是素数,分析:素数就是一个大于2且只能被1和本身整除的整数。判断一个数是否为素数比较简单的方法是:用n逐个除以2n-1之间的每个整数只要有一个可以整除,则说明n不是素数;如果全部不能整除,则说明n是素数。,Private Sub Form_Click()Dim i As Integer Dim n As Integer n=InputBox(请输入一个整数)For i=2 To n-1 If n Mod i=0 The

21、n Exit For End If Next I If i n Then Print n&不是素数 Else Print n&是素数 End IfEnd Sub,比较循环结束后循环变量i的值来判断是正常结束还是强行跳出,从而确定被验证的数n是否为素数。,对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.正 确错 误,For ii=1 To 10 For jj=1 To 20 Next ii Next jj,For ii=1 To 10 For ii=1 To 20 Next

22、 ii Next ii,For ii=1 To 10 For jj=1 To 20 Next jj Next ii,For ii=1 To 10 Next ii For ii=1 To 10 Next ii,常见题型,数值计算1!+2!+.+n!1-1/3+1/5-1/7+1/9+x-x3/3!+x5/5!-x7/7!+x9/9!-,数值计算,伪代码描述:累加项(term)赋初值,累加和(sum)赋初值while()sum=sum+term;求出下一轮的term;,关键问题:找出前项Xi和Xi+1后项之间的关系,1!+2!+3!+n!,单循环实现 累加项(term)赋初值,累加和(sum)赋初

23、值 while()sum=sum+term;求出下一轮的term;双循环实现,求自然对数e的近似值,要求其误差小于0.00001,Private Sub Form_Click()Dim i%,n eEnd Sub,Fibonacci数列 1,1,2,3,5,8,13,21,34,55,兔子繁殖问题,求斐波那契数列前十五项,Private Sub Form_Click()Dim f1%,f2%,f3%,i%f1=1f2=1print f1;f2For i=3 To 15 f3=f1+f2 print f3 f1=f2 f2=f3NextEnd Sub,求最大公约数,【例 5.12】用辗转相除法求

24、两自然数x、y的最大公约数。算法描述如下:x除以y得余数r;若r=0,则y为求得的最大公约数,算法结束,否则执行步骤(3);令x等于y,y等于r,重复执行步骤(1)。,思考:请用Do WhileLoop和DoLoop Until改写辗转相除法求最大公约数,Private Sub Form_Click()x=InputBox(输入x)y=InputBox(输入y)Do r=x Mod y If r=0 Then Exit Do x=y y=rLoopPrint 最大公约数为:;yEnd Sub,作业 2,求100以内的所有素数。求斐波那契数列第多少项大于500,并打印出该项的值。Do WhileLoop和DoLoop Until改写辗转相除法求最大公约数(选做),作业 1,鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何?-算经张丘建求100以内的所有素数。打印讲到的各种星号组合。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号