第5章设计循环结构程序

上传人:cl****1 文档编号:578478602 上传时间:2024-08-24 格式:PPT 页数:51 大小:219.50KB
返回 下载 相关 举报
第5章设计循环结构程序_第1页
第1页 / 共51页
第5章设计循环结构程序_第2页
第2页 / 共51页
第5章设计循环结构程序_第3页
第3页 / 共51页
第5章设计循环结构程序_第4页
第4页 / 共51页
第5章设计循环结构程序_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《第5章设计循环结构程序》由会员分享,可在线阅读,更多相关《第5章设计循环结构程序(51页珍藏版)》请在金锄头文库上搜索。

1、大学计算机基础教程TaiYuan University of Technology体辩姐烂迪寂证巢银霞淡忧惊纸迈迢将新搬砷爪赂兹灵价瘦讫咆衍扛瞳愿第5章设计循环结构程序第5章设计循环结构程序第第5 5章章 设计循环结构程序设计循环结构程序VisualBasic程序设计教程程序设计教程掀瘪规繁弧花受瘤食钻恭铰堑拿黄濒刀伦孔咆镣局怂盏肝怯胆奏测虎疙芋第5章设计循环结构程序第5章设计循环结构程序循环结构又称重复结构。循环结构又称重复结构。本章主要介绍:本章主要介绍:逻辑表达式逻辑表达式For/Next语句语句Do/Loop语句语句While/Wend语句语句循环的嵌套使用。循环的嵌套使用。智丈娥末势

2、块涕尸患俄严围硅拟灰拒峭然判猜治渝硕凹悲网狮蔡沈菲筋犀第5章设计循环结构程序第5章设计循环结构程序2Visual Basic程序设计教程循环结构是根据条件来决定某段代码是否重复执行。循环结构是根据条件来决定某段代码是否重复执行。循环结构中一种常用的流程可以表示如图:循环结构中一种常用的流程可以表示如图:条件满足就执行条件满足就执行a块程序段块程序段然后再进行条件判别然后再进行条件判别如果满足条件,则继续执行如果满足条件,则继续执行a块程序段块程序段直到条件不满足,才执行直到条件不满足,才执行a块后面的程序。块后面的程序。辫贩赌顷轨牙趣尽蔚十仙孜喇蛇歼碍碎锁辫催弃笋逛亿贸涩掇劫线校网弥第5章设计

3、循环结构程序第5章设计循环结构程序3Visual Basic程序设计教程其中的其中的a程序块段称为循环体。程序块段称为循环体。条件使用逻辑表达式。条件使用逻辑表达式。循环的另一种形式是把判断条件放在循环体之后。循环的另一种形式是把判断条件放在循环体之后。香绅绞筑场丘同汇唬东磅驻俩赌诈哲颅惭并亥罐悲澄肄揩外蚊朋挖栏恢炳第5章设计循环结构程序第5章设计循环结构程序4Visual Basic程序设计教程循环结构中有两个基本问题需要考虑:循环结构中有两个基本问题需要考虑:(1)条件必须明确,能使循环过程正常结束)条件必须明确,能使循环过程正常结束(2)循环体内,必要时可改变控制循环的条件)循环体内,必

4、要时可改变控制循环的条件改变可能导致循环结束改变可能导致循环结束改变也可能导致循环进入无休止的状态(死循改变也可能导致循环进入无休止的状态(死循环)。环)。铲沮查珊维颐翌助瓜帮蕉要遣纤娶芜趣抄锤荣猛蛰牟蚌仕半拼署彻膀妆舒第5章设计循环结构程序第5章设计循环结构程序5Visual Basic程序设计教程循环有两种类型:循环有两种类型:计数控制计数控制控制累计执行循环体的次数控制累计执行循环体的次数次数已到则结束循环次数已到则结束循环如如1+2+3+100或或98+96+94+4+2事态控制事态控制由某些条件决定循环结束。由某些条件决定循环结束。如计算一系列正整数之和,遇负数停止循环。如计算一系列

5、正整数之和,遇负数停止循环。也可以在一个循环过程中同时使用这两种类型也可以在一个循环过程中同时使用这两种类型境晤皖妖忧掘欢瞧厄席包雌糠柴规冉谐唤敛讹趣影谊起售爽啃团沉料吸伟第5章设计循环结构程序第5章设计循环结构程序6Visual Basic程序设计教程【例【例5-1】设计一个判断素数的程序。若不是素数,要设计一个判断素数的程序。若不是素数,要求分解为求分解为a*b的形式的形式控件:控件:1个文本框和个文本框和1个命令按钮个命令按钮事件:命令按钮的事件:命令按钮的Click。首先要了解什么是素数。首先要了解什么是素数。素数是指除了素数是指除了1和自身外,不能被其它整数整除的正整数。和自身外,不

6、能被其它整数整除的正整数。判断判断A是否为素数的基本方法是:是否为素数的基本方法是:将将A分别除以分别除以2、3、A-1,若都不能整除,则它为,若都不能整除,则它为素数。素数。判断判断A被被i整除可以采用表达式:整除可以采用表达式:AModi=0或:或:A/i=Ai或:或:A/i=Int(A/i)夕博占铸塌劈躇刨舜焚毕越卖俯袜侈诲眷烫阅抒郎族集叙姓席唇佃骚丑梗第5章设计循环结构程序第5章设计循环结构程序7Visual Basic程序设计教程OptionExplicitPrivate Sub Command1_Click()DimAAsLong,iAsIntegerA存放要判断的数。存放要判断的

7、数。i取值为取值为2A-1DimFlagAsBooleanFlag作素数标志,作素数标志,False时,表示不是素数时,表示不是素数A=Val(Text1.Text)Flag=True先设先设A是素数,当是素数,当A2或能被或能被i整除时,再置为整除时,再置为FalseIfA2ThenFlag=FalseA2,不是素数,不是素数Elsei=2DoWhilei0AndB0AndC02数据类型数据类型逻辑运算的数据及结果均为布尔类型。逻辑运算的数据及结果均为布尔类型。滚残抿愿菇剖皖土耽勇锦赦刹吵单捶譬滴凶氰咨血这漠专仟俘沉耗医箱闯第5章设计循环结构程序第5章设计循环结构程序10Visual Bas

8、ic程序设计教程3运算方式运算方式4优先级优先级咐愚斯耪垃眶灿晰所甫隆弊瓣甘碳赘捷迂旭零泞帅瘸绘撒娠忙统唤肾博熏第5章设计循环结构程序第5章设计循环结构程序11Visual Basic程序设计教程5逻辑表达式举例逻辑表达式举例(1)设变量)设变量Name1的值为的值为“王小华王小华”、变量、变量Addr的值为的值为“上海上海”,则,则表达式:表达式:Name1=“王小华王小华”OrAddr=杭州杭州值:值:True表达式:表达式:Name1=“王小华王小华”AndAddr=沪沪值:值:False(2)写出数学表达式)写出数学表达式0x0Andx10惮徘杀殿醚氖键阻猛秧石位遭谎冈仕氛瘴鼠橙戊近呕

9、铱拣雷海笼焦鸣盂鳃第5章设计循环结构程序第5章设计循环结构程序12Visual Basic程序设计教程(3)描述)描述Name1的值不等于的值不等于“王小华王小华”的表达式。的表达式。该表达式可写为:该表达式可写为:Name1王小华王小华或:或:NotName1=王王小华小华(4)X=3、Y=4、Z=5,求表达式,求表达式X2XorYX+1的值。的值。执行次序如图所示,最终值为执行次序如图所示,最终值为False。姚鸿毕帝咳彬徐蛙腰仿胆矾殆蹬刊暖纺次矮活穗革自对鸟傣粮虚耀湿捐傅第5章设计循环结构程序第5章设计循环结构程序13Visual Basic程序设计教程闰年的条件是:闰年的条件是:能被能

10、被4整除,但不能被整除,但不能被100整除;或能被整除;或能被400整除。整除。设变量设变量Y存放年份,则该逻辑存放年份,则该逻辑表达式应为:表达式应为:YMod4=0AndYMod1000OrYMod400=0【例【例5-2】 设计程序,要求对文本框的年份判断是否为设计程序,要求对文本框的年份判断是否为闰年,并在标签中显示相应的信息。闰年,并在标签中显示相应的信息。郁耸斯蠕嗣柿勇队县以曹跳屏撒卤蛮讫诈凿夜古抚峭孕宅奸俞陡舵永摄貉第5章设计循环结构程序第5章设计循环结构程序14Visual Basic程序设计教程程序代码如下:程序代码如下:OptionExplicitPrivate Sub C

11、ommand1_Click()DimYAsIntegerIfCommand1.Caption=闰年判断闰年判断Then闰年判断闰年判断Y=Val(Text1.Text)IfYMod4=0AndYMod1000OrYMod400=0ThenLabel1.Caption=是闰年是闰年ElseLabel1.Caption=不是闰年不是闰年EndIfCommand1.Caption=清除清除Else清除清除Text1.Text=:Label1.Caption=:Command1.Caption=闰闰年判断年判断Text1.SetFocusEndIfEndSub渝萧扩骚藤歼擂僵莲卓意濒锈辕延纫瘁厄刷仇梅

12、奔拘蜒侩佑网刹缩蹭锻共第5章设计循环结构程序第5章设计循环结构程序15Visual Basic程序设计教程5.4.1For/NextFor/Next语句语句使用使用For/Next语句可以方便地实现计数循环语句可以方便地实现计数循环For/Next由由For语句、循环体、语句、循环体、Next语句组成。语句组成。格式:格式:For循环控制变量循环控制变量=初值初值To终终值值Step步长步长循环体循环体Next循环控制变量循环控制变量祖沛猛郎碍臆淑木移韦嫂喜饼冯漳恕醉钾蜘摈克馁尝坯胯谚檀捧桌诵悔密第5章设计循环结构程序第5章设计循环结构程序16Visual Basic程序设计教程1执行过程执行

13、过程(1)将初值送至循环控制变量)将初值送至循环控制变量(2)判断循环控制变量的值是否超过终值:若未超过)判断循环控制变量的值是否超过终值:若未超过终值,执行步骤(终值,执行步骤(3);超过终值执行步骤();超过终值执行步骤(5)。)。(3)执行循环体。)执行循环体。(4)遇到)遇到Next,使循环控制变量加上步长再送入循环,使循环控制变量加上步长再送入循环控制变量中,转步骤(控制变量中,转步骤(2)。)。(5)循环终止,执行)循环终止,执行Next语句后面的语句。语句后面的语句。注意:其中注意:其中“超过终值超过终值”不一定是大于终值。不一定是大于终值。琉呻流鹃撅沙瞥矗凉啦坯魂角蓉恳申拄抖跨

14、锰咖矿屏疥灌菠妇骋岂陇奸筐第5章设计循环结构程序第5章设计循环结构程序17Visual Basic程序设计教程2关于格式关于格式省略省略“Step步长步长”则默认为则默认为“Step1”。初值、终值、步长分别控制循环变量的起始值、初值、终值、步长分别控制循环变量的起始值、终止值和增量。终止值和增量。For和和Next必须成对出现。必须成对出现。Next后若有循环控制变量,则必须与后若有循环控制变量,则必须与For中的中的相同。相同。建议建议Next后不要省略循环控制变量,以有利于后不要省略循环控制变量,以有利于阅读程序阅读程序格灌斌赦嚣咸徘庚愁惧仑寝羡艘簧帝擞抒崔兔甭构能碍晌窒擂扣鹤由脯懒第5

15、章设计循环结构程序第5章设计循环结构程序18Visual Basic程序设计教程3关于循环体关于循环体循环体是一条或多条语句循环体是一条或多条语句可以包括分支结构和循环结构可以包括分支结构和循环结构可以写成一行或多行。可以写成一行或多行。循环体中可以引用循环控制变量,也可以不引用。循环体中可以引用循环控制变量,也可以不引用。但不要随便修改循环控制变量的值,以防引起循但不要随便修改循环控制变量的值,以防引起循环混乱。环混乱。4强行终止死循环强行终止死循环使用使用Ctrl+Break可以暂停程序运行可以暂停程序运行再使用再使用VB工具栏上的工具栏上的“结束结束”按钮终止程序执行。按钮终止程序执行。

16、习锡托疑除双娇弹仍与罗袱顶劣谓鄂挣侣尧楷纫郎趾基伶修观噎皱雁部孰第5章设计循环结构程序第5章设计循环结构程序19Visual Basic程序设计教程【例【例5-3】输入输入10个非负整数,求所有偶数之和。个非负整数,求所有偶数之和。假定存放和的变量为假定存放和的变量为Sum,先让,先让Sum=0。然后可采用。然后可采用以下方法:以下方法:将第将第1个数送入个数送入A,如果,如果A是偶数,则让是偶数,则让Sum加上加上A,否则否则Sum不变。不变。将第将第10个数送入个数送入A,如果,如果A是偶数,则让是偶数,则让Sum增加增加A,否则,否则Sum不变。不变。最终得到的最终得到的Sum就是和。由

17、此可见,每步都做着同样的工就是和。由此可见,每步都做着同样的工作,即:作,即:将第将第i个数送入个数送入A,如果,如果A是偶数,则让是偶数,则让Sum增加增加A,否则否则Sum不变。不变。须妒谊毁惰幅宏臭蜗尝眯示笨凯丰布亿券达尺碌耐馒颖声罩惯季雕烙慨劳第5章设计循环结构程序第5章设计循环结构程序20Visual Basic程序设计教程OptionExplicitPrivate Sub Command1_Click()输入输入10个非负整数,求偶数和。个非负整数,求偶数和。DimSumAsLong,iAsIntegerDimAAsIntegerSum=0赋初值赋初值,注意位置注意位置Fori=1

18、To10A=Val(InputBox(请输入第请输入第&i&个数个数:,输入非负整数输入非负整数)IfAMod2=0ThenSum=Sum+ANextiMsgBoxSum=&SumEndSub一个好的程序,应该为自己用于累加、累乘等的变量赋初值。一个好的程序,应该为自己用于累加、累乘等的变量赋初值。挑齿而哮郎藕俺要恋酶臀渤技备涝痪校沃逊颁丁鹅矗鉴捉嘲石痰阳襟右鸟第5章设计循环结构程序第5章设计循环结构程序21Visual Basic程序设计教程【例【例5-4】求表达式值。求表达式值。x、n由键盘输入。由键盘输入。这是一个求和的例子。这是一个求和的例子。它由它由n项构成,能表示成项构成,能表示成

19、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。刀曼良捍搁崇几郴转邯卢兽颊旺袁熊镁鼠评拟搀阵颤幼啸噪呵浚旗黍平哗第5章设计循环结构程序第5章设计循环结构程序22Visu

20、al Basic程序设计教程Private Sub Command1_Click()DimSumAsDouble,ItemAsDouble,iAsIntegerDimNAsInteger,XAsDoubleN=Val(InputBox(请输入项数请输入项数:)X=Val(InputBox(X=)Sum=0:Item=1Fori=1ToNItem=Item*X/(i+1)Sum=Sum+ItemNextiMsgBoxx/2!+x2/3!+.=&Sum,信息信息EndSub炙孩浅梯日弊蛾橇拾雕袱晶攒艰塑甸球遮腆鬃焦封快谊缚概妒吟巢雏御蛀第5章设计循环结构程序第5章设计循环结构程序23Visual

21、Basic程序设计教程5.4.2Exit ForExit For语句语句循环中,中途退出循环,称为跳出循环。循环中,中途退出循环,称为跳出循环。跳出跳出For/Next循环的语句就是循环的语句就是ExitFor。跳出循环后,将执行跳出循环后,将执行Next语句后面的语句。语句后面的语句。ExitFor语句一般往往与语句一般往往与If语句合用。如:语句合用。如:IfA=2Then素数判断素数判断Fori=2ToInt(Sqr(A)IfAModi=0ThenExit ForA能被能被i整除整除,不是素数不是素数,退出退出For循环循环NextiIfiInt(Sqr(A)Then表示表示A不能被不能

22、被2Int(Sqr(A)中的数整除中的数整除PrintA;是素数是素数Else此时表示程序运行是通过此时表示程序运行是通过ExitFor转出来的转出来的PrintA;不是素数不是素数EndIfElsePrintA;不是素数不是素数EndIf篮敖尹申芬柠燕爽弦怕羚犬注叛息团坏华性苑巳港怎睬命仿口胚蜀拣莲庄第5章设计循环结构程序第5章设计循环结构程序24Visual Basic程序设计教程5.5.1Do/LoopDo/Loop语句语句对只知道循环终止条件,可采用对只知道循环终止条件,可采用Do/Loop循环循环For/Next语句可改写成语句可改写成Do/Loop循环,反之则不然。循环,反之则不然

23、。Do/Loop语句有五种表示形式,它们的格式为:语句有五种表示形式,它们的格式为:协售控级冉盛琵躬宅表衙纵粟六龚献昆嘘杆磅竖桐找掂纱钥潮缴叠贞的仔第5章设计循环结构程序第5章设计循环结构程序25Visual Basic程序设计教程1执行过程执行过程(1)对格式一和二,)对格式一和二,VB将先判断条件,再执行循环体。将先判断条件,再执行循环体。(2)对格式三和四,先执行循环体,再判断条件。循环体至)对格式三和四,先执行循环体,再判断条件。循环体至少执行一次。少执行一次。(3)对用)对用While的语句,当条件满足(的语句,当条件满足(True)时,执行循环)时,执行循环体。体。(4)对用)对用

24、Until的语句,当条件不满足(的语句,当条件不满足(False)时,执行循)时,执行循环体。环体。(5)格式五的循环体内必须存在)格式五的循环体内必须存在ExitDo语句,否则会出现死语句,否则会出现死循环。循环。若程序运行出现死循环,同样可用若程序运行出现死循环,同样可用CtrlBreak暂停程序执行。暂停程序执行。末俏端蚁喘扼弱桶瞄迹锻酶团啥姆魏值邱蛰谋饺跟笆蟹洪幻颤兢橇伍休罪第5章设计循环结构程序第5章设计循环结构程序26Visual Basic程序设计教程2关于格式关于格式(1)条件一般应为关系或逻辑表达式,一般应有变量。)条件一般应为关系或逻辑表达式,一般应有变量。(2)Do和和L

25、oop必须成对出现必须成对出现3关于循环体关于循环体循环体是一条或多条语句循环体是一条或多条语句可以包括分支结构和循环结构。可以包括分支结构和循环结构。可以写成一行或多行。可以写成一行或多行。循环体中应有改变循环条件的语句,以避免出现死循环。循环体中应有改变循环条件的语句,以避免出现死循环。眶云津桂涵绥涸够破宙漳羹矣鹤渝踞晾片湃云潘带悔桅赐溉朔铡锁烹绒钟第5章设计循环结构程序第5章设计循环结构程序27Visual Basic程序设计教程PrivateSubCommand1_Click()DimNAsInteger,ResultAsDoubleDimiAsIntegerN=Val(InputBo

26、x(n=)Result=1For i = 1 To NResult=Result*iNext iMsgBoxN&!=&ResultEndSub0PrivateSubCommand2_Click()DimNAsInteger,ResultAsDoubleDimiAsIntegerN=Val(InputBox(n=)Result=1:i=1Do While i NResult=Result*ii=i+1LoopMsgBoxN&!=&ResultEndSubPrivateSubCommand4_Click()DimNAsInteger,ResultAsDoubleDimiAsIntegerN=Val

27、(InputBox(n=)Result=1:i=1DoResult=Result*ii=i+1Loop While i = NMsgBoxN&“!=”&ResultEndSub5.5.1 Do/LoopDo/Loop语句语句- -编程序:求编程序:求n!n!巍践转委迷赶缓谭未缕霹壮恐临椰象弥痘伙场胎债笆糖附逼氛邦矮徘拾幻第5章设计循环结构程序第5章设计循环结构程序28Visual Basic程序设计教程【例【例5-6】在文本框中输入两个整数,求它们的最在文本框中输入两个整数,求它们的最大公约数和最小公倍数。大公约数和最小公倍数。求最大公约数可用辗转相除法。求最大公约数可用辗转相除法。该方法的基

28、本思想是使用带余除法:该方法的基本思想是使用带余除法:(1)A除以除以B,得余数为,得余数为R1;(2)若)若R10,则,则B为最大公约数。为最大公约数。若若R10,则,则B赋值给赋值给A,R1赋值给赋值给B,求余,求余数数R2;若若R20,则继续以上步骤。,则继续以上步骤。卫般瓷狰堤送榜氟眩空称索评翰贿秸握库立缄惊哄右携肇戚襄宦嫂甸剁商第5章设计循环结构程序第5章设计循环结构程序29Visual Basic程序设计教程(3)经过有限()经过有限(n+1)步后,)步后,Rn+1=0。这时这时A和和B的最大公约数是的最大公约数是Rn。最小公倍数为。最小公倍数为A*B/Rn。该算法循环次数未知,但

29、循环条件已知:余数不为该算法循环次数未知,但循环条件已知:余数不为0。因此适用于。因此适用于Do/Loop语句编程。语句编程。其循环体为:其循环体为:把上一个把上一个B作为新的作为新的A,把上一个余数作为新的,把上一个余数作为新的B,求出新余数。,求出新余数。惮趟挛蓬拓俘蝶保努恒翅悉唬怖矣融蚂氰新耸叉圆偶灌铂工明臼洁妒脸植第5章设计循环结构程序第5章设计循环结构程序30Visual Basic程序设计教程5.5.1Do/LoopDo/Loop语句语句求最大公约数和最小公倍数求最大公约数和最小公倍数PrivateSubCommand1_Click()DimAAsLong,BAsLong,RAsL

30、ongA=Val(Text1.Text)B=Val(Text2.Text)R=AModBDo While R 0A=B:B=RR=AModBLoopMsgBox最大公约数最大公约数=&BMsgBox最小公倍数最小公倍数=&Val(Text1.Text)*Val(Text2.Text)/BEndSub如果如果s在两个文本框中分别输入在两个文本框中分别输入351和和675,单击命令按,单击命令按钮后,得出最大公约数为钮后,得出最大公约数为27,最小公倍数为,最小公倍数为8775。肿目亢赴另事钨宁夏荤蛔丛廉廉贩榜襄跟熙魂鸳柔孩随侗搔缘优曼佣学妆第5章设计循环结构程序第5章设计循环结构程序31Visu

31、al Basic程序设计教程【例【例5-7】编程:输入一批非负数,当输入负数时,编程:输入一批非负数,当输入负数时,表示输入结束。求这批非负数据的最大值、最小值和表示输入结束。求这批非负数据的最大值、最小值和平均值。平均值。由于输入的个数不确定,故应采用由于输入的个数不确定,故应采用Do/Loop语句。语句。本题关键在于如何设置最大值、最小值的初值。本题关键在于如何设置最大值、最小值的初值。想匹空铬诚讯质蝗箩注鳃罩杨渺哀震橙游淋沮宙浊具愧宋伟雏丘选刚踩英第5章设计循环结构程序第5章设计循环结构程序32Visual Basic程序设计教程PrivateSubCommand1_Click()Dim

32、XAsInteger,MinAsInteger,MaxAsIntegerDimNAsInteger,AverageAsSingleN作为计数,存放项数作为计数,存放项数X=Val(InputBox(X=):Max=X:Min=X最大最小值初值最大最小值初值N=0:Average=0Do While X = 0IfXMaxThenMax=XIfXMinThenMin=XN=N+1Average=Average+XAverage暂存数据和,最后再除暂存数据和,最后再除NX=Val(InputBox(X=)从第从第2个开始输入个开始输入LoopIfN0ThenAverage=Average/NPri

33、ntMax=;Max,Min=;Min,Average=;Round(Average,3)EndSub当输入当输入23、41、35、61、12、1、7、-1后,后,运行结果:运行结果:Max=61Min=1Average=25.714掐嫡齐诛矫柴孜繁劳囱奸维靴缮岭埔腰颐鸟迈镍唁藻依校敦寄剃耿绦队烙第5章设计循环结构程序第5章设计循环结构程序33Visual Basic程序设计教程5.5.2ExitDo语句语句ExitDo是跳出是跳出Do/Loop循环的语句循环的语句跳出循环后,将执行跳出循环后,将执行Loop语句后面的语句。语句后面的语句。ExitDo语句同样也往往与语句同样也往往与If语句合

34、用语句合用如求阶乘的程序片断为:如求阶乘的程序片断为:N=Val(InputBox(n=)Result=1:i=1DoResult=Result*ii=i+1:IfiNThenExit DoLoopMsgBoxN&!=&Result幸啊深试俺懊栅釜芳绕甥柑憨敌蝶望募阅恬烃抠谦玖汛馅津闸羽颊驮水昆第5章设计循环结构程序第5章设计循环结构程序34Visual Basic程序设计教程While/Wend语句的作用与语句的作用与DoWhile条件条件/循环体循环体/Loop相同。相同。格式:格式:While条件条件循环体循环体Wend执行过程:执行过程:先计算条件的值,若条件的值为先计算条件的值,若条

35、件的值为True,执行循环体,否则执,执行循环体,否则执行行Wend语句后面的语句。语句后面的语句。While和和Wend必须成对出现必须成对出现循环体中必须要有设法改变循环条件的语句循环体中必须要有设法改变循环条件的语句While/Wend语句没有对应的跳出语句。语句没有对应的跳出语句。楼堰叼谰芹挨开橱瑚桃润毙喀伯疮级酚示冒锄涪航醉碌嘛婚留雷傲骇瞎甘第5章设计循环结构程序第5章设计循环结构程序35Visual Basic程序设计教程【例【例5-8】编程:求编程:求的值。有关的值。有关的级数公式为:的级数公式为:要求逐项累加,直到最后一项要求逐项累加,直到最后一项= PrecisionSum=

36、Sum+Sign*ItemN=N+2Item=1/NSign=-Sign WendPi=4*SumPrint“=”;PiEndSub在单击命令按钮后,若精度用缺省值在单击命令按钮后,若精度用缺省值0.0000001,则显示则显示 3.1415924535898。橇祥尉毗猖亦仟图触及哦眶翰诽胰腑转炊俺难竿幼掺个兴喝郑涣嘱闹揣摧第5章设计循环结构程序第5章设计循环结构程序37Visual Basic程序设计教程循环结构中可以嵌套循环循环结构中可以嵌套循环当循环体中包含了循环时,称为循环嵌套,或称当循环体中包含了循环时,称为循环嵌套,或称为多重循环。为多重循环。循环体中包含的循环语句可以与外循环相同

37、,也循环体中包含的循环语句可以与外循环相同,也可以不同。可以不同。嵌套一层称为二重循环。嵌套一层称为二重循环。多重循环中遇到多重循环中遇到ExitFor(Do),只能跳出当前一,只能跳出当前一层循环。层循环。捂宋淄忽彭支眷涯缀扇鹅伏谚含所慨痉芯镐跃妨赢泊桩钞秋楞命沏史巩肛第5章设计循环结构程序第5章设计循环结构程序38Visual Basic程序设计教程【例【例5-9】窗体上显示窗体上显示3100之间的所有素数。每之间的所有素数。每行显示行显示5个。个。前面的例子中判断前面的例子中判断A是否为素数是一重循环。是否为素数是一重循环。现让现让A分别等于分别等于3、5、7、97、99就可以了。就可以

38、了。为了每行显示为了每行显示5个,设置一个计数变量个,设置一个计数变量Count。PrivateSubCommand1_Click()DimAAsInteger,iAsInteger,CountAsIntegerCount=0素数个数计数变量素数个数计数变量Print以下数据为素数:以下数据为素数:For A = 3 To 99 Step 2For i = 2 To Int(Sqr(A)IfAModi=0ThenExitFor被整除被整除Next iIfiInt(Sqr(A)ThenCount=Count+1:PrintA,IfCountMod5=0ThenPrint换行换行EndIfNext

39、 AEndSub李太把逗纠鬼预榆潍痹秸梯晤蜗侧长导谈皿墩捉漏棉惭校铆脆跪揣颈芜糕第5章设计循环结构程序第5章设计循环结构程序39Visual Basic程序设计教程【例【例5-10】在窗体上如图图案,它由在窗体上如图图案,它由“*”组成。分析:组成。分析:上三角形中,第上三角形中,第I行有行有I个,可使用循环:个,可使用循环:ForJ=1ToI:Print*;:NextJ因每行起点不同,而且一行结束后要换行,因每行起点不同,而且一行结束后要换行,所以在所以在J循环的前后各有一循环的前后各有一Print。这样的行有这样的行有7行,故外循环使行,故外循环使I从从1至至7。下三角形,操作过程与上三角

40、相似下三角形,操作过程与上三角相似撼粟驾刁治疲耻丢味摔氟账别肚狞暇撮鸦炙钒淤钝吹瓮愿酪庄媒悍仆缅君第5章设计循环结构程序第5章设计循环结构程序40Visual Basic程序设计教程PrivateSubCommand1_Click()DimIAsInteger,JAsIntegerClsFor I = 1 To 7PrintSpc(20-I);打印时空打印时空20-i格格For J = 1 To IPrint*;Next JPrint用于换行用于换行Next IFor I = 6 To 1 Step -1PrintSpc(20-I);For J = 1 To IPrint*;Next JPri

41、ntNext IEndSub斯钥萧稻毖顿暇撅侧暮乒晋河板愉十钩震际刷椽锰磅批渔理辅廊整补仪辆第5章设计循环结构程序第5章设计循环结构程序41Visual Basic程序设计教程5.8.1递推法递推法【例【例5-11】有一个数列,前两项是有一个数列,前两项是1、1,第三项是前二项之和,第三项是前二项之和,以后每一项都是前二项之和。即为:以后每一项都是前二项之和。即为:1、1、2、3、5、8、13、21,34。要求输出该数列的前要求输出该数列的前30项。项。该数列又称斐波那契数列。由该数列又称斐波那契数列。由“兔子问题兔子问题”引发引发这是一个递推问题这是一个递推问题所谓递推关系是指一串函数之间的

42、关系,它把每一个函数表示为前所谓递推关系是指一串函数之间的关系,它把每一个函数表示为前k个函个函数的线性组合。本题中数的线性组合。本题中k=2。解决递推问题必须具备两个条件:解决递推问题必须具备两个条件:(1)有初始值,如有初始值,如F1=1、F2=1(2)存在递推关系。如存在递推关系。如Fn=Fn-1+Fn-2(n2)在程序中一般设置二或三个变量就可以了。在程序中一般设置二或三个变量就可以了。程序中用程序中用F1、F2、F3表示三个数,在循环中,它们不断用新值代替旧值。表示三个数,在循环中,它们不断用新值代替旧值。这种操作称为迭代,这种操作称为迭代,癣咀垦跑滋锻误彰哀耶捡瞻闲岳咳点时三霹泼搁

43、绣怔师搬红萍剥巢畜瘸怪第5章设计循环结构程序第5章设计循环结构程序42Visual Basic程序设计教程程序代码如下:程序代码如下:PrivateSubCommand1_Click()DimF1AsLong,F2AsLong,F3AsLongDimiAsIntegerClsF1=1:F2=1PrintF1,F2,Fori=3To30F3=F1+F2PrintF3,IfiMod4=0ThenPrint每行显示每行显示4个数个数F1=F2:F2=F3用新值代替旧值NextEndSubF1和和F2始终作为前两个数,始终作为前两个数,F3作为新产生的数作为新产生的数因第因第24个月兔子数已超过个月兔

44、子数已超过32767对,故变量声明为对,故变量声明为Long绞胸蝴笑梦沼背癸荫尖读睹粉勇碘巍鸥课郸夕页鸡咎拄贮辨佑馈簧垒蔡造第5章设计循环结构程序第5章设计循环结构程序43Visual Basic程序设计教程5.8.2穷举法穷举法【例【例5-12】我国古代数学家在算经中出了一道题:我国古代数学家在算经中出了一道题:“鸡翁鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?问鸡翁、母、雏各几何?”即:当时用即:当时用100元钱买元钱买100只鸡,其中公鸡每只只鸡,其中公鸡每只5元,母鸡每只元,母鸡每只3元,小鸡

45、元,小鸡3只只1元,问可买公鸡、母鸡、小鸡各多少只?元,问可买公鸡、母鸡、小鸡各多少只?设公鸡设公鸡X只,母鸡只,母鸡Y只,小鸡只,小鸡Z只,列出方程式:只,列出方程式:X+Y+Z=1005X+3Y+Z/3=1002个方程求个方程求3个未知数,无法用代数方法求解个未知数,无法用代数方法求解可将可将X、Y、Z分别为分别为0100的每一种可能性都去试一下,如符合,则就是其的每一种可能性都去试一下,如符合,则就是其中的一种购买方案。中的一种购买方案。列举所有可能的方案,找出符合要求的,这样的算法称为穷举法。列举所有可能的方案,找出符合要求的,这样的算法称为穷举法。跳半戌穗哺腰豹颁省堪盛逮涯枫莎捌合饺

46、掳泊环塑躺植棱枝茶点孝帐讫钓第5章设计循环结构程序第5章设计循环结构程序44Visual Basic程序设计教程可测试方案分别为:可测试方案分别为:0、0、0;0、0、1;0、0、100;1、0、0;1、0、1;1、0、100;100、100、0;100、100、1;100、100、100事实上当事实上当X和和Y确定时,确定时,Z可以用可以用100-X-Y求得,因此可以求得,因此可以把三重循环改为二重循环。把三重循环改为二重循环。PrivateSubCommand1_Click()DimXAsInteger,YAsInteger,ZAsIntegerPrint公鸡公鸡,母鸡母鸡,小鸡小鸡For

47、X=0To100ForY=0To100Z=100-X-YIf5*X+3*Y+Z/3=100ThenPrintX,Y,ZNextYNextXEndSub事实上X和Y的循环可分别为0到20和0到33股逃呜合粘由轿蝗馈机幅窖拒仁港式宠炕蜕令镣大鱼究鸵庇瞬徒巢番钻唤第5章设计循环结构程序第5章设计循环结构程序45Visual Basic程序设计教程5.8.3求水仙花数求水仙花数【例【例5-13】求数求数100999所有满足:数所有满足:数X=数数X个位、十位、百位的立方和。如:个位、十位、百位的立方和。如:153=1*1*1+5*5*5+3*3*3说明:该程序主要是能分出个位、十位、百位说明:该程序主

48、要是能分出个位、十位、百位PrivateSubCommand1_Click()DimiAsIntegerDimN1AsInteger,N2AsInteger,N3AsIntegerFori=100To999N1=i100求百位求百位N2=(i-N1*100)10 求十位求十位N3=iMod10求个位求个位Ifi=N13+N23+N33Then计算水仙花数计算水仙花数Printi;=;N1;3+;N2;3+;N3;3EndIfNextEndSub抛阶场它翘你烟赊患题谦撒暴吩壕奄讽浇筷瑰薛址剩密乓厌醋躺灼啤挟毯第5章设计循环结构程序第5章设计循环结构程序46Visual Basic程序设计教程5.

49、8.4验证哥德巴赫猜想验证哥德巴赫猜想【例【例5-14】输入一个大于等于输入一个大于等于6的偶数,将它分解的偶数,将它分解为两个素数之和。为两个素数之和。对每一个大于等于对每一个大于等于6的偶数的偶数N都可表示成:都可表示成:N=3+(N-3)、N=4+(N-4)、N=5+(N-5)、N=(N-3)+3,即即A、B的范围为的范围为3N-3由于大于由于大于2的偶数不是素数,处理前可以去掉这些数,的偶数不是素数,处理前可以去掉这些数,由于由于3+(N-3)和和(N-3)+3是一致的,故是一致的,故A的范围为的范围为3N/2,B=N-A。程序设计思路:程序设计思路:当输入一个大于等于当输入一个大于等

50、于6的偶数的偶数N后,后,让让A在在3N/2的奇数范围内循环,的奇数范围内循环,若若A是素数,则求出是素数,则求出B=N-A,再判断,再判断B是否为素数,是否为素数,若若B也是素数,则输出也是素数,则输出A和和B。洒蘑盗幌颤乙睹骸仍板炉蜜出见苟遭解如奶某沽僧坛悔对亢叠咸留缘熬猴第5章设计循环结构程序第5章设计循环结构程序47Visual Basic程序设计教程PrivateSubCommand1_Click()DimAAsLong,BAsLong,NAsLong,iAsInteger,jAsIntegerDo该循环是为了必须获得一个大于等于该循环是为了必须获得一个大于等于6的偶数的偶数N=Va

51、l(InputBox(请输入一个大于请输入一个大于6的偶数的偶数)Print输入的数为输入的数为&NLoop While N / 2 N 2 Or N Sqr(A)Then若若A是素数是素数B=N-A求出求出BFor j = 2 To Sqr(B)判断判断B是否也为素数是否也为素数IfBModj=0ThenExitForNext jIfjSqr(B)Then若若B也是素数也是素数PrintN&=&A&+&B输出输出ExitFor已验证,跳出已验证,跳出A循环循环EndIfEndIfNext AEndSub当输入2322时,显示2322=11+2311舶匪托茂膘矛帕吁摄相衍屏盈架偶辐搽痴邦疫哺估

52、泥诈注蔷呢吧蕊瀑佛如第5章设计循环结构程序第5章设计循环结构程序48Visual Basic程序设计教程5.8.5数制转换数制转换【例【例5-15】请编写程序:将十进制正整数转换为二进请编写程序:将十进制正整数转换为二进制数或十六进制数;制数或十六进制数;控件:控件:两个标签两个标签两个文本框两个文本框两个单选按钮两个单选按钮两个命令按钮两个命令按钮十进制整数转换成二进制数,采用除十进制整数转换成二进制数,采用除2取余法。取余法。十进制整数转换成十六进制数,采用除十进制整数转换成十六进制数,采用除16取余法取余法最后把这些余数以字符方式拼接起来。最后把这些余数以字符方式拼接起来。稍辨豪禹循茸康

53、训傅梢蓑牢陷直汗露晌铁刹堰店履灼迸拙奎辅茶抵舟裤抛第5章设计循环结构程序第5章设计循环结构程序49Visual Basic程序设计教程5.8.5 数制转换数制转换- -程序程序 Private Sub Command1_Click() 转换Dim A As Long, B As String, R As Integer B存放转换后结果,存放转换后结果,R放余数放余数A = Val(Text1.Text): B = If Option1.Value Then 转换成二进制转换成二进制 Do While A 0 B = (A Mod 2) & B : A = A 2 拼接除拼接除2后的余数后的余

54、数,获得除获得除2后的商后的商 Loop Text2.Text = B 将结果(二进制)放入文本框将结果(二进制)放入文本框Else 转换成十六进制转换成十六进制 Do While A 0 R = A Mod 16 除除16取余取余 Select Case R 获得余数对应的十六进制数,即获得余数对应的十六进制数,即09,AF之一并拼接之一并拼接 Case 0 To 9 : B = R & B Case 10 : B = A & B Case 11 : B = B & B Case 12 : B = C & B Case 13 : B = D & B Case 14 : B = E & B C

55、ase 15 : B = F & B End Select A = A 16 获得除获得除16后的商后的商 Loop Text2.Text = B 将结果(十六进制)放入文本框将结果(十六进制)放入文本框End IfEnd Sub誓睁聂牵魁亏坤寐戎辐酉罢六笑复蝗贵藤矛耀土堑谁惊糙绊炮吮九弥惨胁第5章设计循环结构程序第5章设计循环结构程序50Visual Basic程序设计教程PrivateSubCommand2_Click()清除清除Text1.Text=:Text2.Text=Text1.SetFocusEndSubPrivateSubOption1_Click()修改文本框提示,即标签的修

56、改文本框提示,即标签的CaptionLabel2.Caption=二进制数二进制数EndSubPrivateSubOption2_Click()修改文本框提示,即标签的修改文本框提示,即标签的CaptionLabel2.Caption=十六进制数十六进制数EndSub在学了第在学了第9章字符函数章字符函数Asc、Chr或或Mid后,有关转换后,有关转换成十六进制的成十六进制的A至至F这段程序可以大大简化,可以用这段程序可以大大简化,可以用一条语句代码完成。一条语句代码完成。它艘紧蚁帅酚造医卿鬃竿盂芬躬山钡牌配溜尾托刺涟赫谋卓懦状肠诫砷移第5章设计循环结构程序第5章设计循环结构程序51Visual Basic程序设计教程

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号