您好,欢迎访问三七文档
VisualBASIC程序设计1第6章循环结构程序设计本章要点:•For...Next循环•Do...Loop循环特点:重复相同或相似的操作步骤结构:循环体—要重复执行的语句序列。循环控制部分—规定循环的重复条件或重复次数,确定循环范围的语句第六章循环结构程序设计2初值循环变量6.1For…Next循环结构1.格式For循环变量=初值To终值[Step步长]语句组1[ExitFor]语句组2Next[循环变量]循环变量值超过终值?执行循环体循环变量+步长循环变量后续语句YesNo2.功能:执行过程如流程图所示第六章循环结构程序设计33.说明(1)循环变量——数值变量(2)初值,终值,步长——数值表达式(3)步长——可正可负,但不能为0,为1时可以省略步长0时,必须:初值=终值循环结束条件——循环变量的值终值步长0时,必须:初值=终值循环结束条件——循环变量的值终值(4)ExitFor——退出循环,常放在条件语句中(5)Next之后的循环变量应与For语句中的循环变量应一致,也可以省略第六章循环结构程序设计4Text1Label3累加分析:累加器(变量)初值S=0循环体(重复执行)S=S+I(I=1,2,…,N)PrivateSubCommand1_Click()DimNAsInteger,IAsInteger,SumAsIntegerN=Val(Text1.Text)Sum=0ForI=1ToNSum=Sum+INextILabel3.Caption=SumEndSub【例6-1】求1+2+3+4+…+N第六章循环结构程序设计5思考:1.求12+22+32+42+……+10022.求13+33+53+……+n33.求1-3+5-7+…+(-1)n+1(2n-1)1n21)1(5131111n4.求)1n(n14313212115.求第六章循环结构程序设计6例:判断以下程序段的执行结果:Fori=5To1Step-1Printi*i;NextiPrintPrinti例:判断以下程序段的执行结果:X=6ForK=1To10Step-2X=X+KNextKPrintK,X第六章循环结构程序设计7【例6-2】求N!(N!=1×2×3×…×N)累乘分析:初始化:F=1循环体:F=F×I(I=1,2,3……N)程序:PrivateSubCommand1_Click()DimNAsInteger,IAsInteger,FAsLongN=Val(Text1.Text)F=1ForI=1ToNF=F*INextIText2.Text=FEndSub第六章循环结构程序设计8思考:1.求1×3×5×7……(共N项)。1n215131112.求:3.求:1k2k21k2k2765654343212第六章循环结构程序设计9【例6-3】打印斐波那契(Fibonacci)数列的前20项斐波那契数列如下:0,1,1,2,3,5,8,13,…即从第三项起每一项是其前两项之和。分析:……PrivateSubForm_Click()A=0:B=1Text1.Text=Text1.Text&Str(A)&Str(B)&_Chr(13)&Chr(10)ForI=1To9A=A+BB=A+BText1.Text=Text1.Text&Str(A)&Str(B)&_Chr(13)&Chr(10)NextIEndSub第六章循环结构程序设计10思考:1.在窗体上打印1、3、5、7、9、…、N。2.在窗体上显示1到500之间所有能被3整除的数,每行10个数。3.在带水平滚动条文本框中显示1到指定N之间所有能被3和7同时整除的数。4.在带垂直滚动条的文本框中显示00~3600之间的正弦和余弦值,每隔20求一组值。第六章循环结构程序设计11例:找出1-1000之间的全部同构数说明:如果一个数出现在其平方数的右端,则称此数为同构数。如5在5^2=25的右端,25在25^2=625的右端等第六章循环结构程序设计126.2Do…Loop循环结构问题:求12+22+32+42+…小于某数N的最大值,N由用户指定。特点:已知循环条件、未知循环次数,用Do…Loop循环结构实现1.格式格式一:DoWhile条件[语句组1][ExitDo][语句组2]Loop格式二:DoUntil条件[语句组1][ExitDo][语句组2]Loop第六章循环结构程序设计132.功能使用While条件:条件为True时,执行循环体条件为False时,退出循环使用Until条件:条件为False时,执行循环体条件为True时,退出循环格式一、二:在循环起始处判断条件,为当型循环格式三、四:在循环终止处判断条件,为直到型循环格式三:Do[语句组1][ExitDo][语句组2]LoopWhile条件格式四:Do[语句组1][ExitDo][语句组2]LoopUntil条件第六章循环结构程序设计143.说明(1)ExitDo语句用于退出循环体(2)也可以在Do语句和Loop语句之后都没有条件,这时在循环体内必须有强行退出循环的语句(3)多数情况下,当型循环和直到型循环可互相代替【例6-4】求12+22+32+42+…小于某数N的最大值,N由用户指定。设计界面下图:Text1Text2Command1第六章循环结构程序设计15PrivateSubCommand1_Click()DimnAsLong,SAsLongN=Val(Text1.Text)I=0S=0DoWhileSNI=I+1S=S+I*ILoopText2.Text=S–I*IEndSub初始化循环体循环条件UntilS=NWhileSN思考:求12+22+32+42+…大于或等于某数N的最小值第六章循环结构程序设计16【例6-5】求2222n17151311直至最后一项的值≤10-4为止。分析:用N表示每一项的分母(N=1、3、5…)用Term表示每一项的值,则Term=1/N用Sum表示累加和循环初始条件:N=1,Sum=0循环终止条件:Term=0.0001第六章循环结构程序设计17PrivateSubForm_Click()N=1:Sum=0DoTerm=1/(N*N)Sum=Sum+TermN=N+2LoopUntilTerm=0.0001Form1.FontSize=12'设窗体的字体CurrentY=200'设当前显示位置Print运算结果为:;SumPrint最后一项的值为:;TermEndSub第六章循环结构程序设计18【例6-6】已知某乡镇企业现有产值和年增长率,试问多少年后,该企业的产值可以翻一番。翻一番后实际产值是多少?分析:P—现有产值R—年增长率Y—年V—增长后的产值,初始值为P累乘:V=P(1+R)(1+R)…退出循环条件V=2PText1Text2Text3Text4第六章循环结构程序设计19PrivateSubForm_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第六章循环结构程序设计20【例6-7】给出两个正整数M、N,求它们的最大公约数和最小公倍数。分析:求最大公约数的方法如下(1)以M作被除数,N作除数,求余数R。(2)如果R不为零,则将除数N做为新的被除数M,将余数R做为新的除数N,再进行相除,得到新的余数R。(3)如果R仍不等于0,则重复上述步骤(2)。如果R为零,则这时的被除数N就是最大公约数。最小公倍数为两个数的积除以它们的最大公约数。第六章循环结构程序设计21设计界面如下图所示:Text1Text2Label3Label4第六章循环结构程序设计22DimAAsInteger,BAsInteger,NAsInteger,_MAsInteger,RAsIntegerPrivateSubCommand1_Click()M=Val(Text1.Text):N=Val(Text2.Text)A=M:B=NR=MModNDoWhileR0M=NN=RR=MModNLoopLabel3.Caption=NEndSubPrivateSubCommand2_Click()Label4.Caption=A*B/NEndSub第六章循环结构程序设计23【例6-8】给一个整数n(n=3),判断它是否是素数分析:将数N被2—SQR(N)间全部整数除,如果都除不尽,则N是素数,否则N不是素数。设标志变量Flag,只要有一个被整除,就置为1。第六章循环结构程序设计24PrivateSubCommand1_Click()N=Val(Text1.Text):K=Int(Sqr(N)):I=2Flag=0DoWhileI=KAndFlag=0IfNModI=0ThenFlag=1ElseI=I+1LoopIfFlag=0ThenLabel1.Caption=是素数ElseLabel1.Caption=不是素数EndIfEndSub第六章循环结构程序设计256.3循环的嵌套在一个循环体内又完整地包含另一个循环,称为循环的嵌套(或多重循环)例:ForI=1To3ForJ=5To7PrintI,JNextJNextI执行过程:……例:ForI=1To3ForJ=1ToIForK=-1To-2S=S+I+J+KNextKNextJNextI执行过程:……第六章循环结构程序设计26说明(1)嵌套的循环可以是For…Next循环,也可以是Do…Loop循环(2)FOR循环有一个公共端点,可使用一个NEXT语句,循环变量按从内到外排列FORI=1TO3FORJ=5TO7PRINTI,JNEXTJ,IFORI=1TO3FORJ=5TO7PRINTI,JNEXTJNEXTI例:(3)内外循环不应交叉例:FORI=...FORJ=......NEXTINEXTJ第六章循环结构程序设计27(4)嵌套循环应选用不同的循环变量例:FORI=1...FORJ=......NEXTJ...FORJ=......NEXTJNEXTI第六章循环结构程序设计28【例6-9】求1+(1+2)+(1+2+3)+…(1+2+3+…+n),n由用户输入。分析:……PrivateSubForm_Click()N=Val(Text1.Text)Sum=0ForI=1ToNSum1=0ForJ=1ToISum1=Sum1+JNextJSum=Sum+Sum1NextIText2.Text=SumEndSub第六章循环结构程序设计29【例6-10】公鸡5个钱一只,母鸡三个钱一只、小鸡一个钱三只,要用100个钱买100只鸡,问公鸡、母鸡、和小鸡各买几只?分析:……PrivateSubForm_Click()DimIAsInteger,JAsInteger,KAsIntegerPrintTab(5);公鸡;Tab(15);母鸡;Tab(25);_小鸡ForI=0To20ForJ=0To33ForK=0To100Step3IfI*5+J*3+K\3=100AndI+J+K=100ThenPrintTab(5);I;Tab(15);J;Tab(25);KEndIfNextK,J,IEndSub第六章循环结构程序设计30【例6-11】数字灯谜。有算式:ABCD-)CDCABCA、B、C、D为非负一位数字,要求找出满足以上算式的A、B、C、D。答案:10981098-989109第六章循环结构程序设计31PrivateSubForm_Click()DimAAsInteger,BAsInteger,CAsInteger,_DAsIntegerDimS1AsInteger,S2AsInteger,S3
本文标题:vb教程-循环结构
链接地址:https://www.777doc.com/doc-2017362 .html