第4章3循环结构2.ppt

上传人:夺命阿水 文档编号:740545 上传时间:2023-11-03 格式:PPT 页数:63 大小:982.50KB
返回 下载 相关 举报
第4章3循环结构2.ppt_第1页
第1页 / 共63页
第4章3循环结构2.ppt_第2页
第2页 / 共63页
第4章3循环结构2.ppt_第3页
第3页 / 共63页
第4章3循环结构2.ppt_第4页
第4页 / 共63页
第4章3循环结构2.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《第4章3循环结构2.ppt》由会员分享,可在线阅读,更多相关《第4章3循环结构2.ppt(63页珍藏版)》请在课桌文档上搜索。

1、,在Visual Basic程序的三种结构中,循环结构是一种重要结构。,循环的本质:不断地重复某种动作。,对计算机程序而言,循环必须具备两个重要因素:,1.在一定的条件下,重复执行一组语句,2.必然出现不满足条件的情况,使循环终止,一、循环程序设计结构,VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有:DoLoop For.Next WhileWend GoTo 语句重点掌握:DoLoop、For.Next、WhileWend等前三种循环,、For循环语句,语法格式:For 循环变量=初值 To 终值 Step 步长 Next

2、 循环变量,例题:编程计算:S=1*2*3*10,Dim S&,i%S=1 累加前变量S为1For K=1 to 100 S=S*KNext KPrint S=,S,For循环语句,步长可为正、可为负、为1时可省略如果步长为正,则变量小于等于终值时循环如果步长为负,则变量大于等于终值时循环当是单层循环时,Next后面的循环变量可不写特点:计数型循环,循环次数=INT(终值-初值)/步长+1For语句和Next语句必须成对出现在循环体中可以使用循环变量,但一般不再对循环变量赋值。,2、DoLoop循环结构,DoLoop循环用于事先不知道循环次数的循环结构。此种语句四种语法格式:.Do While

3、 Loop 语句.Do Loop While 语句.Do Until Loop 语句.Do Loop Until 语句,语法格式:Do While 条件表达式 循环体 Loop,说明:条件表达式可以是一个逻辑表达式,也可以是一个关系表达式,其值应是逻辑型。Do While和Loop应成对出现。循环体中要有改变循环控制变量值的语句,以避免出现死循环。由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句,一般与If 语句联用,(2).Do Loop While语句,语法格

4、式:Do 循环体 Loop While条件表达式,注意:至少要执行循环体一次。与Do While循环的区别:Do While循环先测试条件是否成立,只有成立才执行循环;而该循环先执行循环体,后测试条件是否成立。,语法格式:Do Until条件表达式 循环体 Loop,Do Until Loop语句流程图,格式:Do 循环体 Loop Until条件表达式,T,F,条件,循环体,Do Loop Until语句流程图,A=val(InputBox(“请输入第1个学生成绩”)B=val(InputBox(“请输入第2个学生成绩”)C=val(InputBox(“请输入第3个学生成绩”)Avg=(A+

5、B+C)/3Print Avg,编程:通过输入对话框输入三个学生成绩,计算成绩平均分。,此程序存在问题:如果需要输入20个成绩或更多或成绩个数根本不确定,则几乎让人无法忍受,编程:通过输入对话框输入10个学生成绩,计算成绩平均分。,K=1Do While K=10 A=val(InputBox(“请输入第1个学生成绩”)K=K+1LoopAvg=(A+B+C)/10Print Avg,思路:在前一程序的基础上作些改动,10个数据的输入过程用循环实现:让第一个输入语句循环10次,思考:此程序存在哪些问题?,1、输入的前面9个成绩丢失,B 和 C中无值2、输入对话框中的提示总是显示“第1个”,解决

6、办法:1、每个输入的成绩即时累加;2、提示信息分解成三部分:“请输入第”、变量K、“个学生成绩”,K=1:s=0Do While K=10 A=val(InputBox(“请输入第”&K&“个学生成绩”)S=S+Val(A):K=K+1LoopAvg=S/10Print Avg,编程:通过输入对话框输入若干成绩,如果输入的成绩为-1,表示输入数据完毕,计算成绩平均分。,S=0:N=1 cj=Val(InputBox(请输入第 Avg,Exit Do与Exit For语句,语句功能:强制退出循环Exit Do语句只能用在Do循环语句中Exit For 语句只能用在For循环语句中使用方法:在循环

7、体中,作为IF语句的子句,x=1For K=1 To 30 If x=10 Then Exit For If x Mod 2=1 Then x=x+7 Else x=x-5Next KPrint x,功能:当While的条件表达式的值是True时执行循环体内的代码,直到While后的条件表达式的值为False。说明:它与Do Loop语句的差别是:While Wend语句中不能使用Exit语句跳出循环。,语法格式:While(条件表达式)等价于 do While(条件表达式)循环体 循环体Wend LOOP,3、WhileWend循环结构,4、GoTo语句构成循环,格式:GoTo 标号|行号说

8、明:标号:冒号结尾的标识符 行号:一个整数,不跟冒号功能:无条件转移到指定行号或标号处执行,P=10000:r=0.025T=1Again:If t10 then goto 100I=P*rP=P+IT=t+1Goto Again100Print p,二、循环的嵌套多重循环结构,1、如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,2、嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,(1)For I=.For J=.Next J.Next I,(2)For I=.Do While

9、/Until.Loop.Next I,(3)Do While.For J=.Next J.Loop,(4)Do While/Until.Do While/Until.Loop.Loop,对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.正 确错 误,For i=1 To 10 For i=1 To 20 Next i Next i,一、程序分析举例,题目1:K=7A=5Do K=K-1 A=A+2Loop Until K=4Print K=;KPrint“A=;A,写出程序

10、的输出结果:,K=4A=11,程序分析举例,题目2:n=3j=1Do Until n 1 n=n+1 j=j+n*(n+1)LoopPrint n;j,写出程序的输出结果:,3 1,程序分析举例,题目3:k=1:m=2:n=4Do While k=n m=m*2 k=k+1LoopPrint m;k,写出程序的输出结果:,32 5,程序分析举例,题目4:C=4D=Val(InputBox(请输入一个数)Do While D0 If DC Then C=C+1 D=Val(InputBox(请输入一个数)LoopPrint C+D,运行时输入9,8,7,0写出程序的输出结果:,7,程序分析举例,

11、题目5:S=0:i=1Do while i0 then s=s+i end if i=i+1LoopPrint s=;s,写出程序的输出结果:,S=4500,程序分析举例,题目6:x=1y=1For i=1 To 3 f=x+y y=x x=f Print f;Next i,写出程序的输出结果:,2 3 5,程序分析举例,题目7:x=1For y=1 To 30 If x=10 Then Exit For End If If x Mod 2=1 Then x=x+7 Else x=x-5 End IfNext yPrint x,写出程序的输出结果:,10,程序分析举例,题目8:For i=1

12、To 10 k=2*i-1 Print k;If I Mod 3=0 Then PrintNext i,写出程序的输出结果:,1 3 5 7 9 11 13 15 17 19,循环结构程序的要素:,二、程序设计举例,依据四要素画出流程图,再写程序,处理的数据量大或处理的步骤多对每个数据的处理或每个步骤的处理有规律,首行考虑什么情况下要用循环技术来设计程序?,循环体是什么?循环控制变量及循环控制表达式是什么?循环应如何初始化?对于每次循环,其控制变量如何改变?,题目1:输入若干个职工工资,输入0时结束,求平均工资。,X=输入一个工资S=0:N=0,工资X0?,S=S+x,X=输入一个工资,S=0

13、:N=0X=Val(inputbox()Do while x0 S=S+x X=Val(inputbox()loop,题目2:目前我国人口为13亿,如果以每年1.1%的速度增长,多少年以后我国人口将达到15亿。,循环控制变量赋初值及其他相关初始化语句,循环体语句,改变循环控制变量的语句,循环控制条件,人口x=15?,X=13N=0,N=N+1,X=x*1.011,Do while x=15 N=N+1 X=x*1.011loop,题目3:对SUM=1+3+5+N,求SUM不大于1000的最大整数之和以及所对应的N值。,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控

14、制变量的语句,Sum=1000?,Sum=1K=1,K=K+2,Sum=Sum+K,Do while sum=1000 K=K+2 sum=sum+kloop,题目4:输出所的水仙花数,所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身,例如,153是一个水仙花数,因为153=13+53+33。,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,数值K=999?,K=100,a=个位数:b=十位数:c=百位数判断是否是水仙花数,如是,则输出它,K=K+1,Do while k=999 a=k mod 10:if k=a3+b3 k=k+1loop

15、,题目5:统计一文本框中数字字符的个数。,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,位置号k=总长L?,K=1L=len(text1.text),C=第k个字符C是数字字符?如是,个数N累加1,K=k+1,:N=0,Do while k=“0”and c k=k+1loop,Do while kx if x mod k=0 then exit do k=k+1LoopIf k=x then print x,思考:什么情况下说明是素数?,题目6:判断一个数x是否为素数。,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制

16、变量的语句,分母kx?,K=2X=val(text1.text),如果x能被k整除,则强行退出,K=k+1,For k=2 to x-1 if Next kIf k=x then print x,结论:x=k说明是素数,题目7:求裴波那契数列的前20项,该数列形式为:1,1,2,3,5,8。即A(1)=1,A(2)=1,A(K+2)=A(K)+A(K+1),循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,项数k=20?,K=3A=1:B=1,C=A+B:输出CA=B:B=C,K=K+1,a=1:b=1For k=3 to 20 c=a+b print

17、c a=b:b=cNext k,循环嵌套举例,一、程序分析举例,题目1:n=1For i=1 To 3 For j=5 To I Step-1 n=n+2 Next j Print n;j;iNext iPrint n;j;i,写出程序的输出结果:,11 0 1 19 1 2 25 2 3 25 2 4,程序分析举例,题目2:k=0For j=1 To 2 Print I For i=1 To 3 k=i+1 Next I Print I For i=1 To 2 k=k+1 Next I Print INext jPrint k;I,写出程序的输出结果:,4 3 3 4 3 6 3,程序分析

18、举例,题目3:For m=1 To 2 For j=1 To m For k=j To 2 Print m=;m,j=;j,k=;kNext k,j,m,写出程序的输出结果:,注意其写法:顺序,原则,等价形式,程序分析举例,题目4:For i=5 To 4 Step-1 s=0#For j=i To 3 Step-1 s=s+i*j Next jNext iPrint s,写出程序的输出结果:,28,把s=0#放在For i的前一行呢?,程序设计举例,题目1:输出一行(20个)星号。输出一列(20个)星号。输出5行星号,每行20个。输出5行三角形形式星号。,*,*,Print*,Print*P

19、rint*Print*Print*.Print*Print*Print*Print*Print*,Print*Print*Print*“Print*Print*,Print*Print*Print*Print*Print*,请分析这些语句与Print*;的联系与区别,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,列号X=20?,X=1,输出一个星号,输出后不换行,X=X+1,For X=1 to 20 Print*;Next X,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,行号K=5?,K=1,输出第K行

20、星号,中间不换行输出完后换行,K=K+1,For K=1 to 5 输出第K行星号 PrintNext K,*,循环控制变量赋初值及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,行号K=5?,K=1,换行,K=K+1,For K=1 to 5 For X=1 to 20 Print*;Next X Print Next K,*,*,*,*,For K=1 to 5 在第K行前输出?个空格 For X=1 to?Print*;Next X Print Next K,For K=1 to 5 在第K行前输出?个空格 For X=1 to?Print*;Next X Print Next

21、 K,Print tab(5-K);,例题:打印九九乘法表.For i=1 To 9 For j=1 To 9 se=i Next j Print Next i,题目2:求100至200内所有素数(之和)。,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,数值X201?,X=101,X是否是素数?如是,累加到S,X=X+2,思考:什么情况下说明是素数?,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,分母KX?,K=2X=val(t1.text),如果x能被k整除,则强行退出,K=K+1,结论:X=k说明是素数

22、,如何判断X是素数?,K=2X=Val(T1.text)Do while K X If X mod K=0 Then Exit Do K=K+1Loop,Sqrt(X),循环控制变量赋初值及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,数值x201?,X=101:s=0,如果是素数,则累加:X=x+2,S=0For x=101 to 201 step 2 for k=2 to x-1 if x mod k=0 then exit for next k if x=k then s=s+x(print x)Next x,题目3:求S=1!+2!+3!+7!,循环控制变量赋初值及其他相关

23、初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,数值X8?,X=1:Sum=0,S=X!,累加:Sum=Sum+S X=X+1,循环控制变量赋初值及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,k=X?,K=1X=val(text1.text),S=S*K,K=k+1,例:求一个数X的阶乘,循环控制变量赋初值及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,数值X8?,X=1:Sum=0,Sum=Sum+S:X=X+1,Sum=0For X=1 to 8 S=1 For k=1 to x S=S*K Next K Sum=Sum+SNext X,

24、解法一:每一项阶乘值独立求解,循环控制变量赋初值及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,数值N8?,N=1:S=1:Sum=0,S=S*N,累加:Sum=Sum+S N=N+1,解法二:第N项阶乘值等于第N-1项阶乘值再乘以N,优点:省去内层循环,效率高,Sum=0:S=1For N=1 to 8 S=S*N Sum=Sum+SNext N,练习:教材习题P116,二,5,程序设计举例,题目4:穷举法 for a=1 to 9 for b=0 to 9 for c=0 to 9 next c,b,a,(1)请用上面的循环方式找出所有水仙花数(2)教材P105,例4-22(3

25、)教材习题:P116,二,4,以下代码用于计算,的近似值,当级数第i项的绝对值小于10-5时计算结束,同时调用内部函数进行验证。这里,x为弧度。x=3.14159/6i=1:t=x:sinx=tDo While(1)i=i+2t=(2)sinx=sinx+tLoopPrint sinx,(3),下面的程序用于对9位的准考证号进行校验。参数mno存放准考证号,mjy存放产生的校验位,tag判断校验正确否,若校验正确在L1中显示“yes”,否则在L1中显示“no”。产生校验位的算法为:取准考证号右边的8位数之和关于9的模作为校验值,准考证号最左边的一位为校验位。Mno$=text1.text msum=0(1)m=Mid(mno,j,1)msum=msum+Val(m)Next j mjy=(2)If(3)Then L1.Caption=“Yes”Else L1.Caption=“No”End If,三、程序填空题,题目1:以下程序用于计算数学表达式 12-22+32-+972-982的值S=0:I=1:C=1Do S=S+C*I*I c=_ I=_Loop while_Print s=;s,本章到此结束,

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

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号