您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > VB程序设计第2版第6章
第六章循环结构程序设计1第6章循环结构程序设计本章要点:For...Next循环While...Wend循环Do...Loop循环特点:重复相同或相似的操作步骤结构:循环体—要重复执行的语句序列。循环控制部分—规定循环的重复条件或重复次数,确定循环范围的语句第六章循环结构程序设计2初值循环变量6.1For…Next循环结构1.格式For循环变量=初值To终值[Step步长]语句组1[ExitFor]语句组2Next[循环变量]循环变量值超过终值?执行循环体循环变量+步长循环变量后续语句TF2.功能:执行过程如流程图所示第六章循环结构程序设计33.说明1)循环变量——数值型变量2)初值,终值,步长——数值表达式3)步长——可正可负,但不能为0,为1时可以省略步长0时,必须:初值=终值循环结束条件——循环变量的值终值步长0时,必须:初值=终值循环结束条件——循环变量的值终值4)ExitFor——退出循环,常放在条件语句中5)Next之后的循环变量应与For语句中的循环变量一致,也可以省略第六章循环结构程序设计4例:判断以下程序段的执行结果:Fori=5To1Step-1Printi*i;NextiPrintPrinti例:判断以下程序段的执行结果:X=6ForK=1To10Step-2X=X+KNextKPrintK,XK=1;超过终值不进入循环第六章循环结构程序设计5累加分析:累加器(变量)初始化Sum=0重复执行(循环体)Sum=Sum+I(I=1,2,…,N)【例6-1】输入N的值,求1+2+3+4+…+NF0Sum,1IIN?I+1ISum+ISumT输入N输出Sum流程图:第六章循环结构程序设计6设计界面:Text1Label3Command1运行界面:第六章循环结构程序设计7代码:PrivateSubCommand1_Click()DimNAsInteger,IAsInteger,SumAsIntegerN=Val(Text1.Text)'输入累加总项数Sum=0'设累加和初值为0ForI=1ToNSum=Sum+I'循环体:和值=和值+累加项NextILabel3.Caption=Sum'输出累加结果EndSub第六章循环结构程序设计8思考:1.求12+22+32+42+…+10022.求13+33+53+…+n33.求1-3+5-7+…+(-1)n+1(2n-1)12115131111nn)(4.求)(11431321211nn5.求第六章循环结构程序设计9练习:输入N的值,求1×2×3×…×N(即N!)代码:PrivateSubCommand1_Click()DimNAsInteger,IAsInteger,FAsLongN=Val(Text1.Text)F=1ForI=1ToNF=F*INextIText2.Text=FEndSub累乘分析:初始化:F=1循环体:F=F×I(I=1,2,3……N)第六章循环结构程序设计10思考:1.求1×3×5×7……(共N项)。121513111n2.求:3.求:1k2k21k2k2765654343212第六章循环结构程序设计11【例6-2】打印斐波那契(Fibonacci)数列的前20项斐波那契数列如下:0,1,1,2,3,5,8,13,…分析:产生斐波那契数列的方法是:1)首先给出第一项、第二项的值0和1:A=0,B=1。2)输出当前两个数A,B,求后两个数:A=A+BB=A+B这样就产生了数列中新的两个数,且这两个数取代了其前两个数,仍存于变量A、B中。3)重复步骤2),直到输出所有的数。第六章循环结构程序设计12流程图:F0A,1BI9?I+1IA+BAT输出A,BA+BB1I输出A,B第六章循环结构程序设计13设用文本框Text1显示数据,每行显示两个数。代码:PrivateSubForm_Click()A=0:B=1Text1.Text=Str(A)&Str(B)&vbCrLfForI=1To9A=A+BB=A+BText1.Text=Text1.Text&Str(A)&Str(B)&vbCrLfNextIEndSub第六章循环结构程序设计14思考:1.在窗体上打印1、3、5、7、9、…、N。2.在窗体上显示1到500之间所有能被3整除的数,每行10个数。3.在带水平滚动条文本框中显示1到指定N之间所有能被3和7同时整除的数。4.在带垂直滚动条的文本框中显示00~3600之间的正弦和余弦值,每隔20求一组值。第六章循环结构程序设计15【例6-3】从键盘任意输入30次字符,每次一个,分别统计字符A、B、C的个数(不区分大小写)。如果中途连续输入三个字符Q,则结束输入。分析:设置循环次数为30,每循环一次输入一个字符设置变量QCount,首先将QCount清零,如果输入的字符是Q,则QCount累加1;如果不是Q,就将QCount重置为零。当QCount的值累加到3时,说明已经有连续三个Q输入,则用ExitFor退出循环。另设三个变量ACount、BCount和CCount,用于分别存放字符A、B、C的个数。首先在循环开始之前将它们初始化为0,然后在循环体中,每当输入的字符为A、B或C时,相应的变量值增加1第六章循环结构程序设计16设计界面:“开始输入”按钮的Click事件过程:PrivateSubCommand1_Click()DimACountAsInteger,BCountAsInteger,_CCountAsInteger,QCountAsIntegerDimCHAsString*1Text1Text2Text3Command1第六章循环结构程序设计17ACount=0:BCount=0CCount=0:QCount=0ForI=1To30CH=UCase(InputBox(请输入一个字符,字符统计))IfCH=QThenQCount=QCount+1ElseQCount=0EndIfIfQCount=3ThenMsgBox连续输入了三个字符Q,结束输入,,注意ExitForEndIf第六章循环结构程序设计18SelectCaseCHCaseAACount=ACount+1CaseBBCount=BCount+1CaseCCCount=CCount+1EndSelectNextIText1.Text=AcountText2.Text=BcountText3.Text=CCountEndSub第六章循环结构程序设计196.2While...Wend循环结构问题:求12+22+32+42+…大于某数N的最小值,N由用户指定。特点:已知循环条件、未知循环次数,用While...Wend循环结构实现较方便1.格式While条件[语句组]Wend2.功能F条件?语句组T第六章循环结构程序设计20【例6-4】使用While...Wend循环求12+22+32+…大于某数N的最小值,N由用户指定。Text1Label2Command1设计界面:运行界面:第六章循环结构程序设计21流程图:FSNI+1IT输入NS+I2S0S,0I输出S第六章循环结构程序设计22“计算”按钮Command1的Click事件过程:PrivateSubCommand1_Click()DimIAsInteger,NAsInteger,SAsIntegerN=Val(Text1.Text)'输入NI=0:S=0'初始化WhileS=N'当和值S≤N时,进入循环体I=I+1S=S+I*IWendLabel2.Caption=S'输出和值SEndSub思考:求12+22+32+42+…小于某数N的最大值第六章循环结构程序设计23While...Wend循环可以使用Do...Loop循环来代替,但Do...Loop循环具有更多的形式。第六章循环结构程序设计246.3Do…Loop循环结构1.格式格式一:DoWhile条件[语句组1][ExitDo][语句组2]Loop格式二:DoUntil条件[语句组1][ExitDo][语句组2]Loop条件?循环体TF条件?循环体FT2.功能第六章循环结构程序设计25格式格式三:Do[语句组1][ExitDo][语句组2]LoopWhile条件格式四:Do[语句组1][ExitDo][语句组2]LoopUntil条件条件?循环体TF功能条件?循环体TF第六章循环结构程序设计263.说明1)ExitDo语句用于退出循环体2)也可以在Do语句和Loop语句之后都没有条件,这时在循环体内必须有强行退出循环的语句即:Do[语句组1]ExitDo[语句组2]Loop3)当型循环可能一次都不执行;而直到型循环至少要执行一次循环体。多数情况下,当型循环和直到型循环可互相代替。第六章循环结构程序设计27【例6-5】求2222n17151311直至最后一项的值≤10-4为止。分析:用Sum表示累加和,初值:Sum=0重复:Sum=Sum+Term用Term表示每一项,则Term=1/(N*N)用N表示1,3,5,7,…初值:N=1重复:N=N+2归纳:初始化N=1,Sum=0重复Term=1/(N*N),Sum=Sum+Term,N=N+2循环终止条件Term=0.0001第六章循环结构程序设计28流程图:FTerm10-41/(N*N)TermTSum+TermSum1N,0Sum输出SumN+2N第六章循环结构程序设计29设单击窗体时开始计算,代码如下:PrivateSubForm_Click()N=1:Sum=0DoTerm=1/(N*N)Sum=Sum+TermN=N+2LoopUntilTerm=0.0001Form1.FontSize=12'设窗体的字体CurrentY=200'设当前显示位置Print运算结果为:;SumPrint最后一项的值为:;TermEndSub第六章循环结构程序设计30【例6-6】已知某乡镇企业现有产值和年增长率,试问多少年后,该企业的产值可以翻一番。翻一番后实际产值是多少?Text1Text2Text3Text4设计界面:分析:P—现有产值R—年增长率Y—年V—增长后的产值,初始值为P累乘:V=P(1+R)(1+R)…退出循环条件V=2P第六章循环结构程序设计31流程图:输出年份Y输出产值VF产值V≥2PPV,0YTV(1+R)VY+1Y输入现有产值P输入年增长率R第六章循环结构程序设计32设单击窗体时开始计算,代码如下:PrivateSubForm_Click()P=Val(Text1.Text)R=Val(Text2.Text)/100V=P:Y=0DoUntilV=2*PY=Y+1V=V*(1+R)LoopText3.Text=YText4.Text=Format(V,0.00)EndSub第六章循环结构程序设计33【例6-7】给出两个正整数M、N,求它们的最大公约数和最小公倍数。设计界面:Text1Text2Label3Label4Command1Command2第六章循环结构程序设计34分析:求最大公约数的方法如下1)以M作被除数,N作除数,求余数R。2)如果R不为零,则将除数N做为新的被除数M,将余数R做为新的除数N,再进行相除,得到新的余数R。3)如果R仍不等于0,则重复上述步骤(2)。如果R为零,则这时的除数N就是最大公约数。最小公倍数为两个数的积除以它们的最大公约数。第六章循环结构程序设计35流程图:输出最大公约数NFR≠0求M除以N的余数RT求M除以N的余数RNM,RN输入M,N第六章循环结构程序设计36DimAAsInteger,BAsInteger,NAsInteger,_MAsInteger,RAsIntegerPrivateSubCommand
本文标题:VB程序设计第2版第6章
链接地址:https://www.777doc.com/doc-6134481 .html