设计循环结构程序.ppt
《设计循环结构程序.ppt》由会员分享,可在线阅读,更多相关《设计循环结构程序.ppt(51页珍藏版)》请在三一办公上搜索。
1、第5章 设计循环结构程序,Visual Basic 程序设计教程,Visual Basic程序设计教程,2,循环结构又称重复结构。本章主要介绍:逻辑表达式For/Next语句Do/Loop语句While/Wend语句循环的嵌套使用。,Visual Basic程序设计教程,3,循环结构是根据条件来决定某段代码是否重复执行。循环结构中一种常用的流程可以表示如图:条件满足就执行a块程序段然后再进行条件判别如果满足条件,则继续执行a块程序段直到条件不满足,才执行a块后面的程序。,5.1 概述,Visual Basic程序设计教程,4,其中的a程序块段称为循环体。条件使用逻辑表达式。循环的另一种形式是把
2、判断条件放在循环体之后。,Visual Basic程序设计教程,5,循环结构中有两个基本问题需要考虑:(1)条件必须明确,能使循环过程正常结束(2)循环体内,必要时可改变控制循环的条件改变可能导致循环结束改变也可能导致循环进入无休止的状态(死循环)。,Visual Basic程序设计教程,6,循环有两种类型:计数控制控制累计执行循环体的次数次数已到则结束循环如1+2+3+100或98+96+94+4+2事态控制由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。也可以在一个循环过程中同时使用这两种类型,Visual Basic程序设计教程,7,【例5-1】设计一个判断素数的程序。若
3、不是素数,要求分解为a*b的形式控件:1个文本框和1个命令按钮事件:命令按钮的Click。首先要了解什么是素数。素数是指除了1和自身外,不能被其它整数整除的正整数。判断A是否为素数的基本方法是:将A分别除以2、3、A-1,若都不能整除,则它为素数。判断A被i整除可以采用表达式:A Mod i=0 或:A/i=A i 或:A/i=Int(A/i),5.2 判断素数,Visual Basic程序设计教程,8,Option ExplicitPrivate Sub Command1_Click()Dim A As Long,i As Integer A存放要判断的数。i取值为2A-1 Dim Flag
4、 As Boolean Flag作素数标志,False时,表示不是素数 A=Val(Text1.Text)Flag=True 先设A是素数,当A2或能被i整除时,再置为False If A 2 Then Flag=False A2,不是素数 Else i=2 Do While i=A-1 If A Mod i=0 Then Flag=False:Exit Do A能被i整除,则不是素数 i=i+1 Loop End If If Flag Then MsgBox A&是素数,信息 Else A表示成两数之积 MsgBox A&不是素数&Chr(13)&A&=&i&*&A/i,信息 End IfE
5、nd Sub,5.2 判断素数-程序,Visual Basic程序设计教程,9,说明:程序中,也可以不设标志变量,在最后判断i是否超过终值A-1,若超过终值则表示直到循环完成,还没遇到一个能被整除的整数,即它是素数;否则它就不是素数。当A能被其中一个i整除时,A肯定不是素数,所以没有必要再测试下一个i,因此使用Exit Do退出循环。在使用Exit Do退出循环的时候,没有改变i的值,故A能被该i整除,即A可以表示成A=i*(A/i)。事实上只要判断A能否被2、3、Sqr(A)整除即可。,Visual Basic程序设计教程,10,逻辑运算使用逻辑运算符VB提供了多个逻辑运算符,有:非(Not
6、)、与(And)、或(Or)异或(Xor)、等价(Eqv)、蕴含(Imp)。1基本格式Not为一元运算符,其它均为二元运算符。格式:Not 表达式 表达式1 逻辑运算符 表达式2(除Not外)一个逻辑表达式可用一个或多个逻辑运算符。如:A0 And B0 And C02数据类型逻辑运算的数据及结果均为布尔类型。,5.3 进行逻辑运算,Visual Basic程序设计教程,11,3运算方式4优先级,Visual Basic程序设计教程,12,5逻辑表达式举例(1)设变量Name1的值为“王小华”、变量Addr的值为“上海”,则表达式:Name1=“王小华”Or Addr=杭州 值:True 表达
7、式:Name1=“王小华”And Addr=沪 值:False(2)写出数学表达式0 0 And x 10,Visual Basic程序设计教程,13,(3)描述Name1的值不等于“王小华”的表达式。该表达式可写为:Name1 王小华 或:Not Name1=王小华(4)X=3、Y=4、Z=5,求表达式X2 Xor YX+1的值。执行次序如图所示,最终值为False。,Visual Basic程序设计教程,14,闰年的条件是:能被4整除,但不能被100整除;或能被400整除。设变量Y存放年份,则该逻辑表达式应为:Y Mod 4=0 And Y Mod 1000 Or Y Mod 400=0,
8、【例5-2】设计程序,要求对文本框的年份判断是否为闰年,并在标签中显示相应的信息。,Visual Basic程序设计教程,15,程序代码如下:Option ExplicitPrivate Sub Command1_Click()Dim Y As Integer If Command1.Caption=闰年判断 Then 闰年判断 Y=Val(Text1.Text)If Y Mod 4=0 And Y Mod 100 0 Or Y Mod 400=0 Then Label1.Caption=是闰年 Else Label1.Caption=不是闰年 End If Command1.Caption=
9、清除 Else 清除 Text1.Text=:Label1.Caption=:Command1.Caption=闰年判断 Text1.SetFocus End IfEnd Sub,5.3 进行逻辑运算-闰年判断,Visual Basic程序设计教程,16,5.4.1 For/Next语句使用For/Next语句可以方便地实现计数循环For/Next由For语句、循环体、Next语句组成。格式:For 循环控制变量=初值 To 终 值 Step 步长 循环体 Next 循环控制变量,5.4 使用For/Next循环语句,Visual Basic程序设计教程,17,1执行过程(1)将初值送至循环控
10、制变量(2)判断循环控制变量的值是否超过终值:若未超过终值,执行步骤(3);超过终值执行步骤(5)。(3)执行循环体。(4)遇到Next,使循环控制变量加上步长再送入循环控制变量中,转步骤(2)。(5)循环终止,执行Next语句后面的语句。注意:其中“超过终值”不一定是大于终值。,Visual Basic程序设计教程,18,2关于格式省略“Step 步长”则默认为“Step 1”。初值、终值、步长分别控制循环变量的起始值、终止值和增量。For和Next必须成对出现。Next后若有循环控制变量,则必须与For中的相同。建议Next后不要省略循环控制变量,以有利于阅读程序,Visual Basic
11、程序设计教程,19,3关于循环体循环体是一条或多条语句可以包括分支结构和循环结构可以写成一行或多行。循环体中可以引用循环控制变量,也可以不引用。但不要随便修改循环控制变量的值,以防引起循环混乱。4强行终止死循环使用Ctrl+Break可以暂停程序运行再使用VB工具栏上的“结束”按钮终止程序执行。,Visual Basic程序设计教程,20,【例5-3】输入10个非负整数,求所有偶数之和。假定存放和的变量为Sum,先让Sum=0。然后可采用以下方法:将第1个数送入A,如果A是偶数,则让Sum加上A,否则Sum不变。将第10个数送入A,如果A是偶数,则让Sum增加A,否则Sum不变。最终得到的Su
12、m就是和。由此可见,每步都做着同样的工作,即:将第i个数送入A,如果A是偶数,则让Sum增加A,否则Sum不变。,Visual Basic程序设计教程,21,Option ExplicitPrivate Sub Command1_Click()输入10个非负整数,求偶数和。Dim Sum As Long,i As Integer Dim A As Integer Sum=0 赋初值,注意位置 For i=1 To 10 A=Val(InputBox(请输入第&i&个数:,输入非负整数)If A Mod 2=0 Then Sum=Sum+A Next i MsgBox Sum=&SumEnd S
13、ub 一个好的程序,应该为自己用于累加、累乘等的变量赋初值。,Visual Basic程序设计教程,22,【例5-4】求表达式值。x、n由键盘输入。这是一个求和的例子。它由n项构成,能表示成Sum=Sum+Item的形式第i项等于第i-1项乘以X/(i+1),即Item=Item*X/(i+1)故循环体可由Item=Item*X/(i+1)和Sum=Sum+Item构成。初值问题:Sum初值为0,Item初值应为1。,为防止溢出,Item和Sum声明为双精度型。程序运行结果:当X=6,N分别为1、2、3时,其和分别为3、9、18。,Visual Basic程序设计教程,23,Private S
14、ub Command1_Click()Dim Sum As Double,Item As Double,i As Integer Dim N As Integer,X As Double N=Val(InputBox(请输入项数:)X=Val(InputBox(X=)Sum=0:Item=1 For i=1 To N Item=Item*X/(i+1)Sum=Sum+Item Next i MsgBox x/2!+x2/3!+.=&Sum,信息 End Sub,Visual Basic程序设计教程,24,5.4.2 Exit For语句循环中,中途退出循环,称为跳出循环。跳出For/Next循
15、环的语句就是Exit For。跳出循环后,将执行Next语句后面的语句。Exit For语句一般往往与If语句合用。如:If A=2 Then 素数判断 For i=2 To Int(Sqr(A)If A Mod i=0 Then Exit For A能被i整除,不是素数,退出For循环 Next i If i Int(Sqr(A)Then 表示A不能被2 Int(Sqr(A)中的数整除 Print A;是素数 Else 此时表示程序运行是通过Exit For转出来的 Print A;不是素数 End IfElse Print A;不是素数End If,Visual Basic程序设计教程,2
16、5,5.5.1 Do/Loop语句对只知道循环终止条件,可采用Do/Loop循环For/Next语句可改写成Do/Loop循环,反之则不然。Do/Loop语句有五种表示形式,它们的格式为:,5.5 使用Do/Loop循环语句,Visual Basic程序设计教程,26,1执行过程(1)对格式一和二,VB将先判断条件,再执行循环体。(2)对格式三和四,先执行循环体,再判断条件。循环体至少执行一次。(3)对用While的语句,当条件满足(True)时,执行循环体。(4)对用Until的语句,当条件不满足(False)时,执行循环体。(5)格式五的循环体内必须存在Exit Do语句,否则会出现死循环
17、。若程序运行出现死循环,同样可用Ctrl Break暂停程序执行。,Visual Basic程序设计教程,27,2关于格式(1)条件一般应为关系或逻辑表达式,一般应有变量。(2)Do和Loop必须成对出现3关于循环体循环体是一条或多条语句可以包括分支结构和循环结构。可以写成一行或多行。循环体中应有改变循环条件的语句,以避免出现死循环。,Visual Basic程序设计教程,28,5.5.1 Do/Loop语句-编程序:求n!,Visual Basic程序设计教程,29,【例5-6】在文本框中输入两个整数,求它们的最大公约数和最小公倍数。求最大公约数可用辗转相除法。该方法的基本思想是使用带余除法
18、:(1)A除以B,得余数为R1;(2)若R10,则B为最大公约数。若R10,则B赋值给A,R1赋值给B,求余数R2;若R20,则继续以上步骤。,Visual Basic程序设计教程,30,(3)经过有限(n+1)步后,Rn+1=0。这时A和B的最大公约数是Rn。最小公倍数为A*B/Rn。该算法循环次数未知,但循环条件已知:余数不为0。因此适用于Do/Loop语句编程。其循环体为:把上一个B作为新的A,把上一个余数作为新的B,求出新余数。,Visual Basic程序设计教程,31,5.5.1 Do/Loop语句求最大公约数和最小公倍数Private Sub Command1_Click()Di
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 设计 循环 结构 程序

链接地址:https://www.31ppt.com/p-6343973.html