2.4程序的循环结构掌握For循环语句的基本格式理解For循环语句的执行过程掌握循环变量在执行过程中的变化情况能用For循环结构编写简单的程序实例1、编程求1+2+3+…+10的和按照顺序结构编写程序如下:PrivateSubCommand1_Click()dimsasintegers=0s=s+1s=s+2……s=s+10printsendsub用这种方法能不能编程求出1+2+3……+100的和,1+2+3……+1000的和?实际这10条赋值语句在重复着同一个操作,都是将s加一个数和赋给s,如果用变量x表示每一个加数,那么这10条语句就可以用一条表示:s=s+x,然后让x的取值分别为1到10这10个自然数,重复执行这条语句,就可以实现该程序的编写。这就要用到循环结构。2.4.1用For~Next语句建立循环结构用循环语句编写:PrivateSubCommand1_Click()Dimsasinteger,xasintegerS=0ForX=1to10step1S=S+XnextXprintSEndsub循环变量初值终值步长循环体1、For-next循环语句的格式:用于建立已知循环次数的循环For循环变量=初值To终值Step步长循环体Next循环变量2、For循环语句的功能:①执行For语句:先将初值赋给循环变量,并记住终值和步长(两数间隔)。然后进行判断,是否超出终值?如“超出”终值时,执行Next下一语句,否则执行循环体。②执行循环体③执行Next语句:循环变量加步长,返回重新判断2.4.2For循环语句的执行过程开始0→S1→XX=10S+X→SX+1→X输出S结束YN问题2求S=1+2+……+100和值分析a、用循环产生1~100的自然数b、每产生一个自然数将其累加到求和变量中即:S=S+Nc、重复执行S=S+N即:循环体d、打印和的值的语句应在程序的末尾即:PrintS=1+2+……+1000=;S程序:PrivateSubCommand1_Click()DimNasinteger,SasintegerS=0ForN=1To100S=S+NNextNPrintS=1+2+……+100=;SEndSubP52实践2.A=1第一次A100?S=S+A=1Nexta:A=A+步长=2第二次A100?S=S+A=1+2Nexta:A=A+步长=3…..A=A+步长=100第100次A100?S=S+A=1+2+3…+100Netxa:A=A+步长=101第101次A100?退出循环问题3:求:t=10!DIMtASLONG,Iasintegert=1FORi=1TO10t=t*iNEXTiPRINT“T=10!=“;tEND分析:t=1*2*3*4*……10这是一个累乘.初值:t=1循环初值:i=1,循环终值:i-10循环体:t=t*i练一练针对for循环语句的语句格式,设置如下练习,指出下面程序中的错误:1、求1+2+3+4+5的和s=0fori=1to5step1s=s+inextjprints2、在VB窗体界面上输出1~10这10个自然数forI=1to10printij-i循环变量的名称要相同。For语句与Next语句必须成对出现,而且仅只步长为1时,才可以省略step13、求5+4+3+2+1的和s=0forI=5to1s=s+InextIprints4、求7+5+3+1的和:S=0ForI=7to1Step2S=S+INextIPrintS当初值小于终值时,步长为正数;当初值大于终值时,步长为负数;补充:1、循环变量必须为数值型,初值、终值:都是数值型,可以是数值表达式。2、循环体:在For语句和Next语句之间的语句序列。可以是一条语句,也可以是多条语句。Step-1-2方法1分析:设初值为0,终值为100,步长为3.程序:dimIasinteger,sasintegers=0FORi=0TO100STEP3s=s+1NEXTiprintsdimIasinteger,sasintegers=0FORi=0TO100IFiMOD3=0THENs=s+1NEXTi*条件:nMOD3=0FOR_____TO_____IF______THEN____NEXTi方法2:n能被3整除的条件?问题4:输出100以内能被3整除的个数。问题5求解1–2+3-4+……+99-100PrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100s=s+(-1)^(i+1)*iNextiPrint“S=;SEndSubPrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100IfiMod2=0Thens=s–iElses=s+iEndIfNextiPrint“S=;SEndSub在VB代码窗口程序代码实现,求2*4*6*8*10*12*……*98*100的值。问题61-1/2+1/3–1/4+……+1/99–1/100PrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100s=s+(-1)^(i+1)*(1/i)NextiPrint“S=;SEndSubP52实践1.循环开始:A=1第一次A10?PRINTANext:A=A+步长=2第二次A10?PRINTA…..Next:A=A+步长=3第十次A10?PRINTANext:A=A+步长=11第十一次A10?退出循环P52实践2.A=1第一次A100?S=S+A=1A=A+步长=2第二次A100?S=S+A=1+2…..A=A+步长=100第100次A100?S=S+A=1+2+3…+100A=A+步长=101第101次A100?退出循环P52实践2.A=1第一次A100?S=S+A=1A=A+步长=2第二次A100?S=S+A=1+2…..A=A+步长=100第100次A100?S=S+A=1+2+3…+100A=A+步长=101第101次A100?退出循环P52实践3.A=100第一次A1?S=S+A=100A=A+步长=99第二次A1?S=S+A=100+99…..A=A+步长=1第100次A1?S=S+A=100+99+98…+1A=A+步长=0第101次A1?退出循环P52实践4.A=1第一次A10?A=A+1=1+1printaA=A+步长=3第二次A10?A=A+1=3+1printaA=A+步长=5第3次A10?A=A+1=5+1printaA=A+步长=7第4次A10?A=A+1=7+1printaA=A+步长=9第5次A10?A=A+1=9+1printaA=A+步长=11第6次A10?退出问题7:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下……,求该小球第十次落地时共经过了多少米的路程?分析:设S表示小球经过的路程变量S=S+2HH表示小球反跳的高度变量H=H/2I表示小球落地的次数变量I=2To10PrivateSubCommand1_Click()DimHasinteger,Sasinteger,IasintegerS=200H=S/2ForI=2To10S=S+2*HH=H/2NextIPrint到第十次落地共经过的路程是:;S;米endsub问题8:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下……,求该小球第十次落地时共经过了多少米的路程?分析:设S表示小球经过的路程变量S=S+HH表示小球反跳的高度变量H=H/2I表示小球落地的次数变量I=2To10PrivateSubCommand1_Click()DimHasinteger,Sasinteger,IasintegerS=200H=S/2ForI=2To10S=S+2*HH=H/2NextIPrint到第十次落地共经过的路程是:;S;米endsubPrivateSubCommand1_Click()DimSasinteger,IasintegerS=200ForI=2To10S=S+200*2*(0.5^(I-1))NextIPrint到第十次落地共经过的路程是:;S;米endsub问题9:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下……,求该小球多少次落地时经过的路程大于600米呢?PrivateSubCommand1_Click()DimSasinteger,IasintegerS=200I=2dowhileS600S=S+200*2*(0.5^(I-1))I=I+1LoopPrint“到“;I;”次时落地经过的路程是超过600米endsubPrivateSubCommand1_Click()DimSasinteger,IasintegerS=200I=2doS=S+200*2*(0.5^(I-1))I=I+1LoopuntilS600Print“到“;I;”次时落地经过的路程是超过600米endsub2.4.4用Do语句建立循环结构1、Do语句的功能:用于建立循环次数未知的循环结构2、Do语句的格式:格式一(当循环)DoWhile条件循环体Loop功能:执行Do语句先判断条件,当条件满足,则执行循环体,然后执行Loop语句就回到DoWhile再判断,直到条件不满足,跳出循环,执行Loop下一语句。S=0N=0DoWhileN=10S=S+1N=N+1LoopDo语句的第二种格式(直到循环)1、直到形循环格式Do循环体Loopwhile条件2、格式二功能:执行Do语句,就进入循环,直接执行循环体,在判断条件,当条件满足,回到上面执行循环体,直到条件不满足,跳出循环,执行Loop下一语句。S=0N=0DoN=N+1S=S+NLoopwhileN100三种循环求解S=1+2+……+100和值PrivateSubCommand1_Click()DimNAsinteger,SAsintegerS=0ForN=1To100S=S+NNextNPrint“S=;SEndSubPrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0n=0DoWhilen=100s=s+nn=n+1LoopPrintsEndSubPrivateSubCommand1_Click()Dimsasinteger,nasintegerS=0N=0DoS=S+NN=N+1Loopuntil(n100)printSEndsubP12实践(1)“猴子摘桃”PrivateSubCommand1_Click()DimdayAsInteger,SAsIntegerS=1Forday=9To1Step-1S=(S+1)*2NextdayPrints=;SEndSub猴子吃桃:每次吃掉一半多一个,直到第10天只剩一个,第一天共摘了多少个桃子?打印:*****ForI=1to5print“*”;NextI如何打印?***************ForI=1to3forj=1to5print“*”;nextjprintNextI2.4.5循环语句嵌套的定义双重循环语句:在循环体内含有另一个循环语句的结构如:For循环变量1=初值To终值Step步长For循环变量2=初值To终值Step步长循环体Next循环变量2Next循环变量1多重循环:如循环体内再包含循环结构,我们将这种循环结构称作多重循环。多重循环的原则是:外层循环与内层循环必须层层相套,循环体之间不能交叉。每个循环必须有一个唯一的循环控制变量。ForI=1to5forj=1to10printI+jnextjNextIForI=1to5forj=1to10printI+jnextiNextj打印:****************PrivateSubCommand1_C