《vb循环结构》PPT课件.ppt

《vb循环结构》PPT课件.ppt

ID:51090171

大小:1.14 MB

页数:39页

时间:2020-03-18

上传者:U-25935
《vb循环结构》PPT课件.ppt_第1页
《vb循环结构》PPT课件.ppt_第2页
《vb循环结构》PPT课件.ppt_第3页
《vb循环结构》PPT课件.ppt_第4页
《vb循环结构》PPT课件.ppt_第5页
资源描述:

《《vb循环结构》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

程序设计语言的三种基本结构流程图:语句块1语句块2顺序结构条件语句块1语句块2真假选择结构条件循环体真假循环结构循环体条件假真 循环结构用于在一定的条件下多次重复执行一组语句.例如:在一行上输出60个“*”号。用Print方法方法一:可以用60个“*”号组成一个字符串:Print“***……**”方法二:使用60个语句:Print"*";Print"*”;……Print"*"流程图 2.条件型循环(未知循环次数)1.计数型循环(已知循环次数)分类:学习要点:2.实现循环的算法1.进入循环的条件3.退出循环的条件 一:For循环语句:计数型(一般用于循环次数已知)形式如下:For循环变量=初值to终值[Step步长]语句块[ExitFor]语句块Next循环变量例:ForI=2To13Step3PrintI,NextIPrint:Print“I=“,I Exitfor:当遇到该语句,退出循环,执行该循环的下一条语句。步长(也可为实数)>0初值<终值(=1时,可省略)<0初值>终值=0死循环循环次数=int((终值-初值)/步长)+1循环变量:必须是数值型语句块:可以是一条或多条语句,【说明】 For循环流程图循环变量得到初值循环变量在终值内T语句块循环变量加步长F有ExitForFTFor…Next流程图 例:ForI=2To13Step3PrintI,NextIPrint:Print“I=“,I结果:输出I的值分别为:25811循环执行次数:循环结束输出为:I=14(初值+循环次数*步长) 思考1:计算下列循环语句的次数。(1)forI=-3to20step4(2)forI=-3.5to5.5step0.5(3)forI=-3.5to5.5step–0.5(4)forI=-3to20step0结果分别为:6190无数次思考2:如果事先不知道循环次数,如何用For…..Next?For循环变量=1to非常大的数if达到循环结束条件thenexitfor….Netxt循环变量 例4.9改变循环控制变量对循环的影响PrivateSubCommand1_Click()j=0Fori=1To20Step2i=i+3“有无此句结果有什么不同?j=j+1Print"第";j;"次循环i=";iNextiPrint"退出循环后i=";iEndSub正常情况:i=1,3,5,7,9,11,13,15,17,19现在:i=4,9,14,19 ★:常用算法:累加,连乘算法:是对某个问题求解过程的描述例:累加求1-100的偶数和。PrivateSubForm_Load()DimiAsInteger,sAsIntegerShows=0Fori=2To100Step2s=s+I‘赋值语句实现NextiPrint"s=";sEndSub 例:连乘求自然数1-30的乘积(即30的阶乘)PrivateSubForm_Click()s=1Fori=1To10s=s*I‘赋值语句实现Printi;"的阶乘是:";sNextiEndSub 思考?若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?PrivateSubForm_Click()Fori=3To100step3sum=0sum=sum+INextIPrintsumEndSub结论;在一重循环中,存放累加,连乘结果的变量初值设置应该放在循环体外。 二:Do…Loop循环语句:条件型(用于控制循环次数未知)形式1:先判断后循环形式2:先做后判断Do{While|Until}<条件>语句块[ExitDo]语句块LoopDo语句块[ExitDo]语句块Loop{While|Until}<条件> 【说明】:1)形式1先判断后执行,有可能一次也不执行形式2先执行后判断,最少执行一次循环体2)While用于指明条件为真时执行循环体;Until刚好相反。3)当省略了{While|Until}<条件>子句,表示无条件循环,循环体中应有ExitDo语句,否则为死循环。4)遇到ExitDo语句时退出循环,执行Loop下一条语句。 DoWhile…Loop流程图Do…WhileLoop流程图条件语句块语句块TF语句块语句块条件TF有ExitDoFT有ExitDoFTDoWhile|Until...Loop流程图 例4.11:我国有13.2亿人口,按出生率为0.5%的增长率,多少年后超过20亿?PrivateSubForm_Load()DimmAsDoubleDimyearrAsIntegerShowm=1320000000#:yearr=0DoWhilem<=2000000000#m=m+m*0.005yearr=yearr+1LoopPrintyearr;"年后我国的人口为:";mEndSub若将While改为Until,条件表达式怎么修改?DoUntilm>200000000000# 例:迭代法求a的立方根。X=a1/3迭代公式:Xn+1=1/3(2Xn+a/Xn2)当‖Xn+1-Xn‖epsPrintvEndsub若将While改为Until,条件表达式怎么修改?DoUntilabs(v-u)<=eps 例4.12演示:求两自然数m,n的最大公约数和最小公倍数。方法一:用辗转相除法求最大公约数分析:(1)对于已知两数m,n,使得m>n;(2)m除以n得余数r;(3)若r=0,则n为最大公约数结束;否则执行(4);(4)mn,nr,再重复执行(2)★常用算法:求最大公约数和最小公倍数 求m=14,n=6的最大公约数和最小公倍数。z=m*nIfm0)m=nn=rr=mmodnLoopPrint"最大公约数=",nPrint“最小公倍数=",z/nmnr1462620若r=0,则n为最大公约数结束 方法二:辗转相减法求最大公约数z=m*nDoWhilem<>nIfm>nThenm=m-nElsen=n-mEndIfLoopPrintmPrintz/mm=m-nm>nmnm-n1468862264242220n=n-mn>mm、n为公约数m=n若m=n,则m为最大公约数结束若不相等,谁大替换谁。 例4.14:求自然对数e的近似值,要求其误差小于0.00001,近似公式为:e=1+1/1!+1/2!+1/3!+…+1/n!+…该例题涉及两个问题:(1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。(2)累加:e=e+t(循环体外对累加和的变量清零e=0)(3)连乘:n=n*i(循环体外对连乘积变量置1n=1) (三)循环的嵌套一个循环体内又包含了一个完整的循环结构称为循环的嵌套,也叫多重循环。 例4.13演示:打印九九乘法表。Fori=1To9Forj=1To9se=i&"×"&j&"="&i*jPicture1.PrintTab((j-1)*9+1);se;NextjPicture1.PrintNexti 打印上三角或下三角程序如何改动 思考:下列30-90为语句标号,分别标记该语句,第40句执行了几次循环?第50句执行了几次循环?第90句输出结果是多少?Forj=1to12step3Fork=6to2step–2mk=kPrintj,kNextk80nextj90printj,k,mk31213,0,2 Forii=1To10Forjj=1To20…NextiiNextjjForii=1To10Forii=1To20…NextiiNextiiForii=1To10Forjj=1To20…NextjjNextiiForii=1To10…NextiiForii=1To10…Nextii【注意】(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,反之则可以。正确错误 语句形式特点循环条件循环终止条件循环次数Dowhile..loop先判断TrueFalse>=0Dountil..loop先判断FalseTrue>=0Do..loopwhile后判断TrueFalse>=1Do..loopuntil后判断Falsetrue>=1For..next先判断控制变量〈=终值(递增)控制变量〈=终值(递减)控制变量〉=终值(递增)控制变量〉=终值(递减)(终值-初值)/步长+1循环总结 四常见错误1.不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。例如:ForI=10to20step–1ForI=20to10DowhilefalseForI=10to20step0Dowhile12.循环结构中缺少配对的结束语句For少配对的Next,do语句没有loop结束 3.循环嵌套时,内外循环交叉,与IF块结构交叉运行时显示“无效的Next控制变量引用”例如:例如ForI=1to4forI=1to4Forj=1to5if表达式then….….NextInextiNextjendif4.累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。 (2)多重循环这要视具体问题分别对待。5大数相乘产生“溢出”问题见实验P301-4.3其他辅助控制语句1.GoTo语句(建议不使用)形式:GoTo{标号|行号}作用:无条件转移到标号或行号指定的地方。 ★:常用算法:求素数素数:是一个大于2,且不能被1和本身以外的整数整除的整数。方法:判断某数m是否为素数,可从素数本身的定义求解。对于m从I=2,3….m-1判断m是否能被I整除,只要有一个能被整除,m就不是素数。但这种算法速度很慢。 例4.15:求100以内素数的代码:Form=2To100Fori=2Tom-1If(mModi)=0ThenGoToNotNextMNextiPrintmNotNextM:Nextmm是否为素数求100以内的素数分析:实际上m如果是素数的话,是不可能被大于sqr(m)的整数所整除。所以循环条件改为:forI=2toint(sqr(m)).这样循环的次数会大大减少。 2.Exit语句多种形式:ExitFor、ExitDo、ExitSub、ExitFunction等。作用:退出某种控制结构的执行。3.End语句多种形式:End、EndIf、EndSelect、EndWith、EndType、EndSub、EndFunction、作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。 4.With语句形式如下:With对象语句块EndWith作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。WithLabel1.Height=2000.Width=2000.FontSize=22.Caption="MyLabel"EndWithLabel1.Height=2000Label1.Width=2000Label1.FontSize=22Label1.Caption="MyLabel"等价 ★:常用算法:穷举法“穷举法”:也称为“枚举法”或“试凑法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。例4.16:百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。 【分析】设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:x+y+y=1003x+2y+0.5z=100三个未知数,两个方程,此题有若干个解。解决此类问题采用“试凑法”,把每一种情况都考虑到。方法一:最简单三个未知数利用三重循环来实现方法二:从三个未知数的关系,利用两重循环来实现。 ★:常用算法:递推法“递推法”又称为“迭代法”:其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。例4.17:猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子? 【分析】:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子……。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1的一半减1,即xn=xn-1/2–1或者:xn-1=(xn+1)*2PrivateSubForm_Click()Dimn%,i%x=1'第7天的桃子Print"第7天的桃子数为:1只"Fori=6To1Step-1x=(x+1)*2Print"第";i;"天的桃子数为:";x;"只"NextI:EndSub ★:常用算法:求最大或最小值方法:在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例:随机产生10个100~200之间的数,求最大值。PrivateSubCommand1_Click()Max=100Fori=1To10x=Int(Rnd*101+100)Printx;Ifx>MaxThenMax=xNextiPrintPrint"最大值=";MaxEndSub

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭