vb循环结构(课堂PPT)_第1页
vb循环结构(课堂PPT)_第2页
vb循环结构(课堂PPT)_第3页
vb循环结构(课堂PPT)_第4页
vb循环结构(课堂PPT)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

程序设计语言的三种基本结构流程图:,顺序结构,选择结构,循环结构,1,循环结构,用于在一定的条件下多次重复执行一组语句.,例如:在一行上输出60个“*”号。用Print方法方法一:可以用60个“*”号组成一个字符串:Print“*”方法二:使用60个语句:Print*;Print*”;Print*,流程图,2,2.条件型循环(未知循环次数),1.计数型循环(已知循环次数),分类:,学习要点:,2.实现循环的算法,1.进入循环的条件,3.退出循环的条件,3,一:For循环语句:计数型(一般用于循环次数已知),形式如下:,For循环变量初值to终值Step步长语句块ExitFor语句块Next循环变量,4,Exitfor:当遇到该语句,退出循环,执行该循环的下一条语句。,步长(也可为实数),循环次数int(终值-初值)/步长)+1,循环变量:必须是数值型,语句块:可以是一条或多条语句,【说明】,5,For循环流程图,循环变量得到初值,循环变量在终值内,T,语句块,循环变量加步长,F,有ExitFor,F,T,ForNext流程图,6,循环执行次数:,7,思考1:计算下列循环语句的次数。,(1)forI=-3to20step4(2)forI=-3.5to5.5step0.5(3)forI=-3.5to5.5step0.5(4)forI=-3to20step0,结果分别为:6190无数次,思考2:如果事先不知道循环次数,如何用For.Next?,For循环变量=1to非常大的数if达到循环结束条件thenexitfor.Netxt循环变量,8,例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,9,:常用算法:累加,连乘,算法:是对某个问题求解过程的描述,例:累加求1-100的偶数和。,PrivateSubForm_Load()DimiAsInteger,sAsIntegerShows=0Fori=2To100Step2s=s+I赋值语句实现NextiPrints=;sEndSub,10,例:连乘求自然数1-30的乘积(即30的阶乘),PrivateSubForm_Click()s=1Fori=1To10s=s*I赋值语句实现Printi;的阶乘是:;sNextiEndSub,11,思考?若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?,PrivateSubForm_Click()Fori=3To100step3sum=0sum=sum+INextIPrintsumEndSub,结论;在一重循环中,存放累加,连乘结果的变量初值设置应该放在循环体外。,12,二:DoLoop循环语句:条件型(用于控制循环次数未知),形式1:先判断后循环,形式2:先做后判断,DoWhile|Until语句块ExitDo语句块Loop,Do语句块ExitDo语句块LoopWhile|Until,13,【说明】:,1)形式1先判断后执行,有可能一次也不执行形式2先执行后判断,最少执行一次循环体,2)While用于指明条件为真时执行循环体;Until刚好相反。,3)当省略了While|Until子句,表示无条件循环,循环体中应有ExitDo语句,否则为死循环。,4)遇到ExitDo语句时退出循环,执行Loop下一条语句。,14,DoWhileLoop流程图,DoWhileLoop流程图,条件,语句块,语句块,T,F,语句块,语句块,条件,T,F,有ExitDo,F,T,有ExitDo,F,T,DoWhile|Until.Loop流程图,15,例4.11:我国有13.2亿人口,按出生率为0.5%的增长率,多少年后超过20亿?,PrivateSubForm_Load()DimmAsDoubleDimyearrAsIntegerShowm=1320000000#:yearr=0DoWhilem200000000000#,16,例:迭代法求a的立方根。X=a1/3迭代公式:Xn+1=1/3(2Xn+a/Xn2)当Xn+1-XnepsPrintvEndsub,若将While改为Until,条件表达式怎么修改?,DoUntilabs(v-u)n;(2)m除以n得余数r;(3)若r=0,则n为最大公约数结束;否则执行(4);(4)mn,nr,再重复执行(2),常用算法:求最大公约数和最小公倍数,18,求m=14,n=6的最大公约数和最小公倍数。,z=m*nIfm0)m=nn=rr=mmodnLoopPrint最大公约数=,nPrint“最小公倍数=,z/n,若r=0,则n为最大公约数结束,19,方法二:辗转相减法求最大公约数,z=m*nDoWhilemnIfmnThenm=m-nElsen=n-mEndIfLoopPrintmPrintz/m,m=m-nmn,n=n-mnm,m、n为公约数m=n,若m=n,则m为最大公约数结束若不相等,谁大替换谁。,20,例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),21,(三)循环的嵌套,一个循环体内又包含了一个完整的循环结构称为循环的嵌套,也叫多重循环。,22,例4.13演示:打印九九乘法表。,Fori=1To9Forj=1To9se=iNextjPicture1.PrintNexti,23,打印上三角或下三角程序如何改动,24,思考:,下列30-90为语句标号,分别标记该语句,第40句执行了几次循环?第50句执行了几次循环?第90句输出结果是多少?,Forj=1to12step3Fork=6to2step2mk=kPrintj,kNextk80nextj90printj,k,mk,31213,0,2,25,Forii=1To10Forjj=1To20NextiiNextjj,Forii=1To10Forii=1To20NextiiNextii,Forii=1To10Forjj=1To20NextjjNextii,Forii=1To10NextiiForii=1To10Nextii,【注意】(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,反之则可以。正确错误,26,循环总结,27,四常见错误1.不循环或死循环的问题主要是循环条件、循环初值、循环终值、循环步长的设置有问题。例如:ForI=10to20step1ForI=20to10DowhilefalseForI=10to20step0Dowhile12.循环结构中缺少配对的结束语句For少配对的Next,do语句没有loop结束,28,3.循环嵌套时,内外循环交叉,与IF块结构交叉运行时显示“无效的Next控制变量引用”例如:例如ForI=1to4forI=1to4Forj=1to5if表达式then.NextInextiNextjendif4.累加、连乘时,存放累加、连乘结果的变量赋初值问题(1)一重循环在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。,29,(2)多重循环这要视具体问题分别对待。5大数相乘产生“溢出”问题见实验P301-4.3,其他辅助控制语句,1.GoTo语句(建议不使用)形式:GoTo标号|行号作用:无条件转移到标号或行号指定的地方。,30,:常用算法:求素数,素数:是一个大于2,且不能被1和本身以外的整数整除的整数。方法:判断某数m是否为素数,可从素数本身的定义求解。对于m从I=2,3.m-1判断m是否能被I整除,只要有一个能被整除,m就不是素数。但这种算法速度很慢。,31,例4.15:求100以内素数的代码:Form=2To100Fori=2Tom-1If(mModi)=0ThenGoToNotNextMNextiPrintmNotNextM:Nextm,m是否为素数,求100以内的素数,分析:实际上m如果是素数的话,是不可能被大于sqr(m)的整数所整除。所以循环条件改为:forI=2toint(sqr(m).这样循环的次数会大大减少。,32,2.Exit语句多种形式:ExitFor、ExitDo、ExitSub、ExitFunction等。作用:退出某种控制结构的执行。3.End语句多种形式:End、EndIf、EndSelect、EndWith、EndType、EndSub、EndFunction、作用:End结束一个程序的运行;其余表示某个结构的结束,与对应的结构语句配对出现。,33,4.With语句形式如下:With对象语句块EndWith作用:对某个对象执行一系列的操作,而不用重复指出对象的名称。WithLabel1.Height=2000.Width=2000.FontSize=22.Caption=MyLabelEndWith,Label1.Height=2000Label1.Width=2000Label1.FontSize=22Label1.Caption=MyLabel,等价,34,:常用算法:穷举法,“穷举法”:也称为“枚举法”或“试凑法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。,例4.16:百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。,35,【分析】设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为:x+y+y=1003x+2y+0.5z=100三个未知数,两个方程,此题有若干个解。解决此类问题采用“试凑法”,把每一种情况都考虑到。方法一:最简单三个未知数利用三重循环来实现方法二:从三个未知数的关系,利用两重循环来实现。,36,:常用算法:递推法,“递推法”又称为“迭代法”:其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。,例4.17:猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子?,37,【分析】:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1的一半减1,即xn=xn-1/21或者:xn-1=(xn+1)*2,PrivateSubForm_Click()Dimn%,i%x=1第7天的桃子Print第7天的桃子数为:1只Fori=6To1Step-1x=(x+1)*2Print第;i;天的桃子数为:;x;只NextI:EndSub,38,:常用算法:求

温馨提示

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

评论

0/150

提交评论