《循环结构》PPT课件.ppt_第1页
《循环结构》PPT课件.ppt_第2页
《循环结构》PPT课件.ppt_第3页
《循环结构》PPT课件.ppt_第4页
《循环结构》PPT课件.ppt_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

,在Visual Basic程序的三种结构中,循环结构是一种重要结构。,循环的本质:不断地重复某种动作。,对计算机程序而言,循环必须具备两个重要因素:,1. 在一定的条件下,重复执行一组语句,2. 必然出现不满足条件的情况,使循环终止,一、循环程序设计结构,VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。Visual Basic 支持的循环结构有: DoLoop For.Next WhileWend GoTo 语句 重点掌握: DoLoop、 For.Next、 WhileWend等前三种循环,、For循环语句,语法格式: For 循环变量 = 初值 To 终值 Step 步长 Next 循环变量,例题: 编程计算:S=1*2*3*10,Dim S& , i% S=1 累加前变量S为1 For K=1 to 100 S=S * K Next K Print “ S=“ , S,For循环语句,步长可为正、可为负、为1时可省略 如果步长为正,则变量小于等于终值时循环 如果步长为负,则变量大于等于终值时循环 当是单层循环时,Next后面的循环变量可不写 特点:计数型循环, 循环次数=INT(终值-初值)/步长+1 For语句和Next语句必须成对出现 在循环体中可以使用循环变量,但一般不再对循环变量赋值。,2、DoLoop循环结构,DoLoop循环用于事先不知道循环次数的循环结构。此种语句四种语法格式: . Do While Loop 语句 . Do Loop While 语句 . Do Until Loop 语句 . Do Loop Until 语句,语法格式: Do While 条件表达式 循环体 Loop,说明: 条件表达式可以是一个逻辑表达式,也可以是一个关系表达式,其值应是逻辑型。 Do While和Loop应成对出现。 循环体中要有改变循环控制变量值的语句,以避免出现死循环。 由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。 Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句,一般与If 语句联用,(2). Do Loop While语句,语法格式: 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+B+C)/3 Print Avg,编程:通过输入对话框输入三个学生成绩,计算成绩平均分。,此程序存在问题:如果需要输入20个成绩或更多或成绩个数根本不确定,则几乎让人无法忍受,编程:通过输入对话框输入10个学生成绩,计算成绩平均分。,K=1 Do While K=10 A=val(InputBox(“请输入第1个学生成绩”) K=K+1 Loop Avg=(A+B+C)/10 Print Avg,思路:在前一程序的基础上作些改动,10个数据的输入过程用循环实现:让第一个输入语句循环10次,思考:此程序存在哪些问题?,1、输入的前面9个成绩丢失,B 和 C中无值 2、输入对话框中的提示总是显示“第1个”,解决办法:1、每个输入的成绩即时累加;2、提示信息分解成三部分: “请输入第” 、变量K 、 “个学生成绩”,K=1:s=0 Do While K=10 A=val(InputBox(“请输入第” & K & “个学生成绩”) S=S+Val(A) : K=K+1 Loop Avg=S/10 Print Avg,编程:通过输入对话框输入若干成绩,如果输入的成绩为-1,表示输入数据完毕,计算成绩平均分。,S = 0 : N = 1 cj = Val(InputBox(“请输入第“ Avg,Exit Do与Exit For语句,语句功能:强制退出循环 Exit Do语句只能用在Do循环语句中 Exit For 语句只能用在For循环语句中 使用方法:在循环体中,作为IF语句的子句,x = 1 For K = 1 To 30 If x = 10 Then Exit For If x Mod 2 = 1 Then x = x + 7 Else x = x - 5 Next K Print x,功能:当While的条件表达式的值是True时执行循环体内的 代码,直到While后的条件表达式的值为False。 说明:它与Do Loop语句的差别是: While Wend语句中不能使用Exit语句跳出循环。,语法格式: While (条件表达式 ) 等价于 do While(条件表达式) 循环体 循环体 Wend LOOP,3、WhileWend循环结构,4、GoTo语句构成循环,格式:GoTo 标号| 行号 说明: 标号:冒号结尾的标识符 行号:一个整数,不跟冒号 功能:无条件转移到指定行号或标号处执行,P=10000: r=0.025 T=1 Again: If t10 then goto 100 I=P* r P=P+I T=t+1 Goto Again 100 Print p,二、循环的嵌套多重循环结构,1、如果在一个循环内完整地包含另一个循环 结构,则称为多重循环,或循环嵌套, 2、嵌套的层数可以根据需要而定,嵌套一层 称为二重循环,嵌套二层称为三重循环。 上面介绍的几种循环控制结构可以相互嵌套, 下面是几种常见的二重嵌套形式:,(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,对于循环的嵌套,要注意以下事项: (1) 内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉; (3) 不能从循环体外转向循环体内,也不能从外循环转向内循环. 正 确 错 误,For i =1 To 10 For i=1 To 20 Next i Next i,一、程序分析举例,题目1: K = 7 A = 5 Do K = K - 1 A = A + 2 Loop Until K = 4 Print “K=“ ; K Print “A=“ ; A,写出程序的输出结果:,K=4 A=11,程序分析举例,题目2: n = 3 j = 1 Do Until n 1 n = n + 1 j = j + n * (n + 1) Loop Print n ; j,写出程序的输出结果:,3 1,程序分析举例,题目3: k = 1: m = 2: n = 4 Do While k = n m = m * 2 k = k + 1 Loop Print m ; k,写出程序的输出结果:,32 5,程序分析举例,题目4: C=4 D=Val(InputBox(“请输入一个数“) Do While D0 If DC Then C= C+1 D= Val(InputBox(“请输入一个数“) Loop Print C+D,运行时输入9,8,7,0写出程序的输出结果:,7,程序分析举例,题目5: S=0:i=1 Do while i0 then s=s+i end if i=i+1 Loop Print “s= “ ; s,写出程序的输出结果:,S=4500,程序分析举例,题目6: x = 1 y = 1 For i = 1 To 3 f = x + y y = x x = f Print f; Next i,写出程序的输出结果:,2 3 5,程序分析举例,题目7: x = 1 For 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 If Next y Print x,写出程序的输出结果:,10,程序分析举例,题目8: For i = 1 To 10 k = 2 * i - 1 Print k; If I Mod 3 = 0 Then Print Next 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:N=0 X=Val(inputbox() Do while x0 S=S+x X=Val(inputbox() loop,题目2:目前我国人口为13亿,如果以每年1.1%的速度增长,多少年以后我国人口将达到15亿。,循环控制变量赋初值 及其他相关初始化语句,循环体语句,改变循环控制变量的语句,循环控制条件,人口x=15?,X=13 N=0,N=N+1,X=x*1.011,Do while x=15 N=N+1 X=x*1.011 loop,题目3: 对SUM=1+3+5+N,求SUM不大于1000的最大整数之和以及所对应的N值。,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,Sum=1000?,Sum=1 K=1,K=K+2,Sum=Sum+K,Do while sum=1000 K=K+2 sum=sum+k loop,题目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+1 loop,题目5: 统计一文本框中数字字符的个数。,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,位置号k=总长L?,K=1 L=len(text1.text),C=第k个字符 C是数字字符?如是,个数N累加1,K=k+1,:N=0,Do while k=“0” and c k=k+1 loop,Do while kx if x mod k=0 then exit do k=k+1 Loop If k=x then print x,思考:什么情况下说明是素数?,题目6: 判断一个数x是否为素数。,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,分母kx?,K=2 X=val(text1.text),如果x能被k整除,则强行退出,K=k+1,For k=2 to x-1 if Next k If 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=3 A=1:B=1,C=A+B:输出C A=B:B=C,K=K+1,a=1:b=1 For k=3 to 20 c=a+b print c a=b:b=c Next k,循环嵌套举例,一、程序分析举例,题目1: n = 1 For i = 1 To 3 For j = 5 To I Step -1 n = n + 2 Next j Print n ; j ; i Next i Print n ; j ; i,写出程序的输出结果:,11 0 1 19 1 2 25 2 3 25 2 4,程序分析举例,题目2: k = 0 For 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 I Next j Print k ; I,写出程序的输出结果:,4 3 3 4 3 6 3,程序分析举例,题目3: For m = 1 To 2 For j = 1 To m For k = j To 2 Print “m=“ ; m , “j=“; j , “k= “ ; k Next 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 j Next i Print s,写出程序的输出结果:,28,把s = 0#放在For i的前一行呢?,程序设计举例,题目1: 输出一行(20个)星号。 输出一列(20个)星号。 输出5行星号,每行20个。 输出5行三角形形式星号。,* * * * * * * * * * * * * * *,* * * * * * * * * * * * * * *,Print “*“,Print “*“ Print “*“ 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行星号,中间不换行 输出完后换行,K=K+1,For K=1 to 5 输出第K行星号 Print Next 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 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=2 X=val(t1.text),如果x能被k整除,则强行退出,K=K+1,结论:X=k说明是素数,如何判断X是素数?,K=2 X=Val( T1 . text ) Do while K X If X mod K=0 Then Exit Do K=K+1 Loop,Sqrt(X),循环控制变量赋初值 及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,数值x201?,X=101:s=0,如果是素数,则累加:X=x+2,S=0 For 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!,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,数值X8?,X=1:Sum=0,S = X!,累加:Sum=Sum+S X=X+1,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,循环体语句,改变循环控制变量的语句,k=X?,K=1 X=val(text1.text),S=S*K,K=k+1,例:求一个数X的阶乘,循环控制变量赋初值 及其他相关初始化语句,循环控制条件,改变循环控制变量的语句,数值X8?,X=1:Sum=0,Sum=Sum+S:X=X+1,Sum=0 For X=1 to 8 S=1 For k=1 to x S=S*K Next K Sum=Sum+S Next X,解法一: 每一项阶乘值独立求

温馨提示

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

评论

0/150

提交评论