vb控制结构-循环结构程序设计PPT课件_第1页
vb控制结构-循环结构程序设计PPT课件_第2页
vb控制结构-循环结构程序设计PPT课件_第3页
vb控制结构-循环结构程序设计PPT课件_第4页
vb控制结构-循环结构程序设计PPT课件_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第6章VB控制结构(2),循环结构程序设计,本章内容及要求:(1)掌握For.Next语句及ExitFor语句的使用;(2)掌握Do.Loop循环语句与ExitDo语句的使用;(3)掌握循环结构的嵌套应用;(4)掌握循环结构和选择结构的嵌套应用。,6.1概述,在VisualBasic程序设计中,实现循环结构的语句主要有下列几种:lForNext语句DoLoop语句lWhileWend语句,DoWhileLoop形式DoLoopWhile形式DoUntilLoop形式DoLoopUntil形式DoLoop形式,打印九九乘法表DimSgsAsStringDimi,jAsIntegerFori=1To9被乘数从1变到9Forj=iTo9乘数从1变到9Sgs=iNextjPicture1.PrintNextI,For循环语句(一般用于循环次数已知)形式:For循环变量初值to终值Step步长语句块ExitFor语句块Next循环变量,6.2For.Next循环结构,循环次数,例:ForI=2To13Step3PrintI,NextIPrint“I=“,I,循环执行次数4输出I的值分别为:25811出了循环输出为:I=14,6.2For.Next循环结构,6.2For.Next循环结构,注意跳出FOR循环时的循环变量的值,Fori=1to10step1s=s+iNextiPrinti,Fori=-1to-10step-1s=s+iNextiPrinti,6.2For.Next循环结构,注意对于ForNext语句来说,一旦进入循环,其“终止值”和“增量”便不会再改变了。,PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerj=10:k=1Fori=1TojStepkPrintij=j-1k=k+1NextPrintj,kEndSub,练习:分析下面程序段结束时窗体上显示的值是多少?,(2)i2=0Fori=1To-2Step-1i2=i2+1NextPrinti,i2,(-34),(1)Fori=1To10i2=i2+1NextPrinti,(11),(3)i2=0Fori=1To5Step2i2=i2+1NextPrinti,(7),(4)i2=1Fori=1To10i=i+1i2=i2+1NextPrinti,i2,(116),(5)i2=1i3=10i=10Fori=1Toi3i=i+1i2=i2+1i3=i3+1NextPrinti,i2,(116),(6)i2=0Fori=1To10i2=i2+1Ifi6ThenExitForNextPrinti,i2,(77),(7)i2=0i=10Doi2=i2+1LoopWhilei=i2Printi2,(1),例6.7编程计算:S=1+2+3+100,DimS%,I%S=0累加前变量S为0ForI=1to100S=S+INextIPrintS=,S,例6.7的算法流程图,6.2For.Next循环结构,前测型:DoWhile语句块ExitDo语句块Loop,DoLoop循环语句使用形式,6.3Do.Loop循环结构,6.2Do.Loop循环结构,PrivateSubForm_Click()DimiAsInteger:DimaAsInteger定义所需变量i=0:a=0给变量赋初值0,这两条语句可省略DoWhilei100i=i+1每次循环,变量i都增加1a=a+i每次循环,变量a都加变量i的值LoopPrinta计算完毕,变量a的值即为所求EndSub,例:使用DoWhileLoop循环语句计算1+2+3+100的值,后测型:Do语句块ExitDo语句块LoopWhile,6.3Do.Loop循环结构,6.3Do.Loop循环结构,例:使用DoLoopWhile循环语句计算1+2+3+n的值,n的值由文本框输入。,PrivateSubCommand1_Click()DimiAsInteger,nAsInteger,aAsInteger定义所需变量n=Text1.Text得到输入的值Doi=i+1每次循环,变量i都增加1a=a+i每次循环,变量a都加变量i的值LoopWhileinText2.Text=a显示计算结果,变量a的值即为所求EndSub,前测型:DoUntil语句块ExitDo语句块Loop,DoLoop循环语句使用形式,6.3Do.Loop循环结构,6.3Do.Loop循环结构,例:计算阶乘n!的值(n的值由文本框输入)。,PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimaAsLongn=Text1.Text得到输入的值na=1必须为变量a赋初值1DoUntili=ni=i+1每次循环,变量i都增加1a=a*i每次循环,变量a都乘以变量i的值LoopText2.Text=a计算完毕,变量a的值即为所求EndSub,后测型:Do语句块ExitDo语句块LoopUntil,6.3Do.Loop循环结构,例:使用级数求的值。根据下式,计算圆周率的近似值,当计算到绝对值小于0.0001的通项时,认为满足精度要求,停止计算。/4=1-1/3+1/5-1/7+(-1)n+11/2n-1+,6.3Do.Loop循环结构,PrivateSubcmdPi_Click()DimaAsSingle变量a保存通项之和DimmAsSingle变量m保存通项的绝对值DimsAsInteger变量s产生通项的符号DimiAsInteger变量i产生通项的分母s=1第一项符号为正i=1第一项为1Do开始循环m=1/i计算通项的绝对值a=a+s*m总和加上一个通项i=i+2产生下一个通项分母s=-s轮流转换通项的正负号LoopUntilm0.0001测试是否满足精度要求Text1.Text=a*4输出计算结果EndSub,6.3Do.Loop循环结构,6.3Do.Loop循环结构,Do语句块ExitDo语句块Loop,PrivateSubCommand1_Click()DimiAsInteger,nAsIntegerDimaAsLongn=val(Text1.Text)a=1Doi=i+1a=a*iIfi=nThenExitDoLoopText2.Text=aEndSub,例6.5:计算n!,本节小结:(1)当使用While构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。,(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句ExitDo的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,6.3Do.Loop循环结构,思考:将一个十进制数转换成二进制。,算法流程图,6.3Do.Loop循环结构,用Do.Loop循环的五种形式分别完成,将一个十进制数转换成二进制。,算法流程图,6.3Do.Loop循环结构,分析:将一个十进制数转换成二进制采用连除2取余数的方法,即将十进制数除以2取余数,直到商为0,然后所得的余数即为二进制数各位的数码,从右到左排列,第一次除2的余数在最右边。算法设计如下:用变量Dec表示十进制数,Bin表示转换所得的二进制数字符串。(1)输入十进制Dec(2)Dec除以2得余数Res,商又赋值给Dec;让Bin=ResDecDoRes=DecMod2求出除以2的余数Bin=ResBinEndSub,6.3Do.Loop循环结构,6.4.1WhileWend语句使用格式如下:WhileWend说明:该语句的功能与DoWhile.Loop实现的循环完全相同。,6.4WhileWend语句,6.5.1循环的嵌套多重循环结构如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,6.5嵌套结构,(1)ForI=.ForJ=.NextJ.NextI,(2)ForI=.DoWhile/Until.Loop.NextI,(3)DoWhile.ForJ=.NextJ.Loop,(4)DoWhile/Until.DoWhile/Until.Loop.Loop,6.5嵌套结构,对于循环的嵌套,要注意以下事项:(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;下面是正确的嵌套,6.5嵌套结构,Fori=1To10Forj=1To20NextiNextj,Fori=1To10Fori=1To20NextiNexti,下面是不正确的嵌套,6.5嵌套结构,PrivateSubForm_Click()DimiAsInteger,jAsIntegerFori=1To3Printi=;iForj=1To3PrintTab;j=;jNextNextEndSub,循环嵌套的执行流程:,6.5嵌套结构,6.5嵌套结构,PrivateSubCommand1_Click()Dimx%,a%,y%Forx=1to2a=0Fory=1tox+1a=a+1NextyPrinta;NextxEndSub程序运行后,单击命令按钮,在窗体上显示的值是(23),6.5嵌套结构,ExitDo和ExitFor语句在循环嵌套时的作用,6.5嵌套结构,例:打印九九乘法表.Fori=1To9Forj=1To9se=iNextjPicture1.PrintNexti,6.5嵌套结构,6.5嵌套结构,例:,编一程序,显示出所有的水仙花数。所谓水仙花数,是指一个三位数,其各位数字立方和等于该数字本身。例如,153是水仙花数,因为:,6.5嵌套结构,PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerFori=1To9i表示百位上的数Forj=0To9j表示十位上的数Fork=0To9k表示个位上的数n=i*100+j*10+kIfi3+j3+k3=nThenPrintnNextkNextjNextiEndSub,解法一:,6.5嵌套结构,解法二:,PrivateSubForm_Click()DimiAsInteger,jAsInteger,kAsIntegerDimnAsIntegerForn=100To999i=n100得到百位上的数字j=n10-i*10得到十位上的数字k=nMod10得到个位上的数字Ifi3+j3+k3=nThenPrintnNextnEndSub,6.5.2循环结构与选择结构的嵌套,在循环结构中可以完整嵌套选择结构,即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。,6.5嵌套结构,(1)ForI=IFThenEndIFNextI,(6)IFThenForI=EndIFNextI,(5)SelectCaseForI=CaseCaseNextIEndSelect,(3)ForI=IFThenNextIEndIF,(2)IFThenForI=NextIEndIF,(4)ForI=SelectCaseCaseCaseEndSelectNextI,6.5嵌套结构,6.6强制退出循环,6.6.1用Exitfor语句强制退出For循环,ExitFor语句可以使程序从For循环中退出来,转到Next语句后面的程序继续执行,而不必等到循环变量到达终值时才退出来。注意:在循环体外面,不可以使用ExitFor语句,而且ExitFor通常与IF语句一起使用。例:用300元买100只鸡,母鸡9元1只,小鸡1元1只,问母鸡、小鸡各应买多少只?分析:设买母鸡x只,则x的变化范围为130只,因为买的母鸡只数不可能超过30只,超过30只就不可能买到100只鸡。设小鸡为y只,则y=100-x。下面要做的工作就是求x为何值时,9x+y=300成立。,6.6强制退出循环,程序代码:OptionExplicitPrivateSubForm_Click()DimxasIntegerDimyasIntegerForx=1to30Y=100-xIf9*x+y=300thenExitforNextxPrint“母鸡有”;x;”只”,”小鸡有”;y;”只”EndSub,6.6强制退出循环,6.6.2用ExitDo语句强制退出Do循环ExitDo语句可以使程序从Do循环中退出来,转到Loop语句后面的程序继续执行,而不必等到循环达到结束条件时才退出来。注意:在循环体外面,不可以使用ExitDo语句,而且ExitDo通常与IF语句一起使用。例:用DoWhile循环改写上例程序,体会ExitDo语句的作用,6.6强制退出循环,程序代码:OptionExplicitPrivateSubForm_Click()DimxasIntegerDimyasIntegerX=1DowhilexKThenPrintN;是素数ElsePrintN;不是素数EndIf,算法流程图,程序代码:,6.7应用举例,6.7应用举例,例:将一角钱换成零钱(可以包括含1分、2分、5分中的任意多个面值),共有多少种换法?组成一角的零

温馨提示

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

评论

0/150

提交评论