VB程序设计——循环结构名茂院学循环结构程序设计本章要点:While...Wend循环For...Next循环Do...Loop循环特点:重复相同或相似的操作步骤结构:循环体—要重复执行的语句序列。循环控制部分—规定循环的重复条件或重复次数,确定循环范围的语句VB程序设计——循环结构名茂院学语句块T循环条件While循环条件语句块Wend当循环格式:执行过程:(1)判断循环条件是否为真(2)若是,执行循环体(语句块)(3)然后返回While语句再次判断循环条件是否为真(4)重复1~3步骤。(5)否则,结束循环§1While循环结构(循环次数未知)FVB程序设计——循环结构名茂院学累加分析:累加器(变量)初值Sum=0循环体(重复执行)Sum=Sum+i(i=1,2,…,N)【例1】求1+2+3+4+…+N√Text1Label3VB程序设计——循环结构名茂院学PrivateSubCommand1_Click()N=Val(Text1.Text):Sum=0i=1Whilei=100Sum=Sum+ii=i+1WendLabel3.Caption=SumEndSub循环初值循环条件循环终值循环体循环变量增值VB程序设计——循环结构名茂院学特点:先判断表达式,后执行循环体说明:循环体有可能一次也不执行循环体可为任意类型语句退出while循环条件表达式不成立,值为.F.无限循环:While(.T.)循环体WendVB程序设计——循环结构名茂院学【例2】显示1~10的平方√PrivateSubForm_Click()k=1Whilek=10Printstr(k)+”*”+str(k)+”=“+str(k*k)k=k+1WendEndSub运行结果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100VB程序设计——循环结构名茂院学§2For循环结构(循环次数为已知)1.格式(For循环语句)For循环变量=初值To终值[Step步长]语句组1[ExitFor]语句组2Next[循环变量]循环体VB程序设计——循环结构名茂院学2.功能:执行过程如流程图所示例:求1~1000的和,但当和超过3000时停止。s=0Fork=1to1000s=s+kifs3000thenExitForEndifNexta=0Next循环变量=循环变量+步长k=k+1语句块FExitFor语句块T循环变量=终值K=10循环变量赋初值k=1FTVB程序设计——循环结构名茂院学3.说明(1)循环变量——数值变量(2)初值,终值,步长——数值表达式(3)步长0,初值终值(=1时,可省略)0,初值终值=0,死循环(4)循环次数=Max{Int(终值-初值)/步长+1),0}(5)ExitFor——退出循环,常放在条件语句中,又称“非正常出口”(6)Next之后的循环变量应与For语句中的循环变量应一致,也可以省略a=0Fork=1to10a=a+kNextVB程序设计——循环结构名茂院学累加分析:已知量:累加器(变量)初值Sum=0N(输入)初值、终值和增量:1、N、1重复执行(循环体)Sum=Sum+i(i=1,2,…,N)PrivateSubCommand1_Click()DimN%,iAsInteger,Sum%N=Val(Text1.Text)Sum=0Fori=1ToNSum=Sum+iNextiLabel3.Caption=SumEndSubText1Label3【例1】求1+2+3+4+…+N√初值与终值换位可以吗?循环体的执行次数是多少?i=1执行多少次?i=N执行多少次?最后i的值是多少?VB程序设计——循环结构名茂院学i=1Whilei=100Sum=Sum+ii=i+1WendFori=1ToNSum=Sum+iNext与前面所学While循环的不同PrivateSubCommand1_Click()EndSubN=Val(Text1.Text)Sum=0Label3.Caption=SumVB程序设计——循环结构名茂院学【例2】求N!(N!=1×2×3×…×N)累乘分析:初始化:F=i循环体:F=F×i(i=1,2,3……N)程序:PrivateSubCommand1_Click()DimN%,iAsInteger,F!’FASLongN=Val(Text1.Text)F=1Fori=1ToNF=F*iNextilabel3.caption=FEndSublabel3text1VB程序设计——循环结构名茂院学【例3】从键盘输入10个数,输出其中的最大值与最小值。PrivateSubCommand1_Click()N=Val(inputbox(“请输入一个数:”))max=N:min=NFori=1to9N=Val(inputbox(“请输入一个数:”))ifmaxNthenmax=NifminNthenmin=NNextPrintmax,minEndSubVB程序设计——循环结构名茂院学例:判断以下程序段的执行结果:Fori=5To1Step-1Printi*i;NextiPrintPrinti例:判断以下程序段的执行结果X=6ForK=1To10Step-2X=X+KNextKPrintK,X将初值赋给循环变量判断循环变量是否超过终值修改循环变量,继续判断循环变量是否大于终值VB程序设计——循环结构名茂院学思考1:1.求1×3×5×7……(共N项)。F=F*(2*I-1);循环变量I,循环终值N1n215131112.求:3.求:1k2k21k2k2765654343212F=F*4*I*I/(2*I-1)/(2*I+1);循环变量I,循环终值KVB程序设计——循环结构名茂院学思考2:1.求12+22+32+42+……+10022.求13+33+53+……+n33.求1-3+5-7+…+(-1)n+1(2n-1)1.Sum=Sum+I*I;3.Sum=Sum+(-1)^(I+1)*(2*I-1);1n21)1(5131111n4.求)1n(n14313212115.求4.Sum=Sum+(-1)^(I+1)/(2*I-1);I=2,…,VB程序设计——循环结构名茂院学要注意:出了循环,循环控制变量值的问题。例程序段:Fori=2To13Step3Printi,NextiPrint“i=“,i循环执行次数输出i的值分别为:25811出了循环输出为:i=14i=2i13执行循环体(Printi)i=i+3后续语句Print“i=“,iyesnoVB程序设计——循环结构名茂院学例改变循环控制变量对循环的影响。PrivateSubCommand1_Click()j=0Fori=1To20Step2i=i+3j=j+1Print第;j;次循环i=;iNextiPrint退出循环后i=;iEndSub正常情况:i=1,3,5,7,9,11,13,15,17,19现在:i=4,9,14,19在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。√VB程序设计——循环结构名茂院学应用举例:1:用For循环编程5+5+…..+5(20个5之和)2:用For循环编程计算s=1+2+3+…+1003:用For循环编程同行输出10个“*”4:用For循环编程输出10行“**********”VB程序设计——循环结构名茂院学【例3】打印斐波那契(Fibonacci)数列的前20项斐波那契数列如下:0,1,1,2,3,5,8,13,…分析:即从第三项起每一项是其前两项之和。VB程序设计——循环结构名茂院学斐波那契数列:0,1,1,2,3,5,8,13,…即满足递推关系Fn=Fn-1+Fn-2,(n1)F0=0,F1=1算法:已知F0=0:F1=1F2=F1+F0F3=F2+F1F4=F3+F2F5=F4+F3……已知F0=0:F1=1F0=F1+F0F1=F0+F1F0=F1+F0F1=F0+F1……VB程序设计——循环结构名茂院学打印斐波那契(Fibonacci)数列的前20项斐波那契数列如下:0,1,1,2,3,5,8,13,…即从第三项起每一项是其前两项之和。分析:……PrivateSubForm_Click()F0=0:F1=1PrintF0,F1Fori=1To9F0=F0+F1F1=F1+F0PrintF0,F1NextEndSubVB程序设计——循环结构名茂院学*遍历法Cleara=Val(inputbox(“请输入一自然数:”))Fori=2toa-1iFamodi=0thenExitForEndifNextiFia-1thenPrinta,”是素数。”Endif【例4】判断一自然数其是否为素数。正常出口ia-1素数非正常出口i=a-1不是素数VB程序设计——循环结构名茂院学思考:1.在窗体上打印1、3、5、7、9、…、N。2.在窗体上显示1到500之间所有能被3整除的数,每行10个数。j=0Fori=3To500If(iMod3=0)ThenPrinti;j=j+1Ifj=10Thenj=0:PrintEndIfNexti3.在带水平滚动条文本框中显示1到指定N之间所有能被3和7同时整除的数。Fori=21tonstep1?(If(imod21=0)printi;)及显示前边的内容VB程序设计——循环结构名茂院学问题:求12+22+32+42+…小于某数N的最大值,N由用户指定。特点:已知循环条件、未知循环次数,用Do…Loop循环结构实现§3Do…Loop循环结构(循环次数未知)VB程序设计——循环结构名茂院学1.格式格式一:DoWhile条件[语句组1][ExitDo][语句组2]Loop格式二:DoUntil条件[语句组1][ExitDo][语句组2]Loop格式三:Do[语句组1][ExitDo][语句组2]LoopWhile条件格式四:Do[语句组1][ExitDo][语句组2]LoopUntil条件VB程序设计——循环结构名茂院学2.功能使用While条件:条件为True时,执行循环体条件为False时,退出循环使用Until条件:条件为False时,执行循环体条件为True时,退出循环格式一、二:在循环起始处判断条件,为当型循环格式三、四:在循环终止处判断条件,为直到型循环VB程序设计——循环结构名茂院学格式一:DoWhile条件[语句组1][ExitDo][语句组2]Loop格式二:DoUntil条件[语句组1][ExitDo][语句组2]Loop条件FTExitDo语句块语句块条件TFExitDo语句块语句块VB程序设计——循环结构名茂院学格式三:Do[语句组1][ExitDo][语句组2]LoopWhile条件格式四:Do[语句组1][ExitDo][语句组2]LoopUntil条件条件TFExitDo语句块语句块条件FTExitDo语句块语句块VB程序设计——循环结构名茂院学3.说明(1)ExitDo语句用于退出循环体(即非正常出口)(2)也可以在Do语句和Loop语句之后都没有条件,这时在循环体内必须有强行退出循环的语句如:Goto语句(3)多数情况下,当型循环和直到型循环可互相代替【例4】求12+22+32+42+…小于某数N的最大值,N由用户指定。设计界面:Text1Text2Command1VB程序设计——循环结构名茂院学PrivateSubCommand1_Click()Dimn&,S&’nAsLong,SAsLongN=Val(Text1.Text)i=0S=0DoWhileSNi=i+1S=S+i*iLoopText2.Text=S–i*I’小于某