1、2.4程序的循环结构掌握For循环语句的基本格式理解For循环语句的执行过程掌握循环变量在执行过程中的变化情况能用For循环结构编写简单的程序实例1、编程求1+2+3+10的和按照顺序结构编写程序如下:PrivateSubCommand1_Click()dimsasintegers=0s=s+1s=s+2s=s+10printsendsub用这种方法能不能编程求出1+2+3+100的和,1+2+3+1000的和?实际这10条赋值语句在重复着同一个操作,都是将将s加一个加一个数和赋给数和赋给s,如果用变量x表示每一个加数,那么这10条语句就可以用一条表示:s=s+x,然后让x的取值分别为1到10
2、这10个自然数,重复执行这条语句,就可以实现该程序的编写。这就要用到循环结构。2.4.1用用ForNext语句建立循环结构语句建立循环结构用循环语句编写:PrivateSubCommand1_Click()Dimsasinteger,xasintegerS=0ForX=1to10step1S=S+XnextXprintSEndsub循环变量循环变量初值初值 终值终值步长步长循环体循环体1、Fornext循环语句的格式:用于建立已知循环次数的循环结构For循环变量=初值To终值Step步长循环体Next循环变量2、For循环语句的功能:执行For语句:先将初值赋给循环变量,并记住终值和步长(两数
3、间隔)。然后进行判断,是否超出终值?如“超出”终值时,执行 Next 下一语句,否则执行循环体。执行循环体执行Next语句:循环变量加步长,返回重新判断 2.4.2For循环语句的执行过程练一练练一练针对for循环语句的语句格式,设置如下练习,指出下面程序中的错误:1、求1+2+3+4+5的和s=0fori=1to5step1s=s+inextjprints2、在VB窗体界面上输出110这10个自然数forI=1to10printij-i循环变量的名称要相同。For语句与Next语句必须成对出现,而且仅只步长为1时,才可以省略step13、求5+4+3+2+1的和s=0forI=5to1s=s
4、+InextIprints4、求7+5+3+1的和:S=0ForI=7to1Step2S=S+INextIPrintS当初值小于终值时,步长为正数;当初值大于终值时,步长为负数;补充:1、循环变量必须为数值型,初值、终值:都是数值型,可以是数值表达式。2、循环体:在For语句和Next语句之间的语句序列。可以是一条语句,也可以是多条语句。Step12问题2求S=1+2+100和值分析a、用循环产生1100的自然数b、每产生一个自然数将其累加到求和变量中即:S=S+Nc、重复执行S=S+N即:循环体d、打印和的值的语句应在程序的末尾即:PrintS=1+2+1000=;S程序:PrivateSu
5、bCommand1_Click()DimNasinteger,SasintegerS=0ForN=1To100S=S+NNextNPrintS=1+2+100=;SEndSub问题3:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下,求该小球第十次落地时共经过了多少米的路程?分析:分析:设设S表示小球经过的路程变量表示小球经过的路程变量S=S+2HH表示小球反跳的高度变量表示小球反跳的高度变量H=H/2I表示小球落地的次数变量表示小球落地的次数变量I=2To10PrivateSubCommand1_Click()DimHasinteger,Sasinteger,Iasi
6、ntegerS=200H=S/2ForI=2To10S=S+2*HH=H/2NextIPrint到第十次落地共经过的路程是:;S;米endsub问题3:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下,求该小球第十次落地时共经过了多少米的路程?分析:分析:设设S表示小球经过的路程变量表示小球经过的路程变量S=S+HH表示小球反跳的高度变量表示小球反跳的高度变量H=H/2I表示小球落地的次数变量表示小球落地的次数变量I=2To10PrivateSubCommand1_Click()DimHasinteger,Sasinteger,IasintegerS=200H=S/2F
7、orI=2To10S=S+2*HH=H/2NextIPrint到第十次落地共经过的路程是:;S;米endsubPrivateSubCommand1_Click()DimSasinteger,IasintegerS=200ForI=2To10S=S+200*2*(0.5(I-1)NextIPrint到第十次落地共经过的路程是:;S;米endsub问题4:一小球从200米高度自由下落,每次落地后反弹为原来高度的一半,然后再落下,求该小球多少次落地时经过的路程大于600米呢?PrivateSubCommand1_Click()DimSasinteger,IasintegerS=200I=2dowhi
8、leS600Print“到“;I;”次时落地经过的路程是超过600米endsub2024/4/16周二112.4.4用用Do语句建立循环结构语句建立循环结构1、Do语句的功能:用于建立循环语句的功能:用于建立循环次数未知次数未知的循环结构的循环结构2、Do语句的格式:语句的格式:格式一(当循环)格式一(当循环)DoWhile循环体循环体Loop功能:执行功能:执行Do语句先判断条件,当条件满足,则执行循环体,语句先判断条件,当条件满足,则执行循环体,然后执行然后执行Loop语句就回到语句就回到DoWhile再判断,直到条件不满足,再判断,直到条件不满足,跳出循环,执行跳出循环,执行Loop下一
9、语句。下一语句。S0N0DoWhileN=10S=S+1N=N+1LoopDo 语句的第二种格式(直到循环)语句的第二种格式(直到循环)1、直到形循环格式直到形循环格式Do循环体循环体Loopwhile2、格式二功能:执行格式二功能:执行Do语句,就进入循环,直接执行循环体,语句,就进入循环,直接执行循环体,在判断条件,当条件满足,回到上面执行循环体,直到条件不在判断条件,当条件满足,回到上面执行循环体,直到条件不满足,跳出循环,执行满足,跳出循环,执行Loop下一语句。下一语句。S=0N=0DoN=N+1S=S+NLoopwhileN100三种循环求解S=1+2+100和值PrivateSu
10、bCommand1_Click()DimNAsinteger,SAsintegerS=0ForN=1To100S=S+NNextNPrint“S;SEndSubPrivateSubCommand1_Click()DimsAsInteger,nAsIntegers=0n=0DoWhilen100)printSEndsubP12实践(1)“猴子摘桃”PrivateSubCommand1_Click()DimdayAsInteger,SAsIntegerS=1Forday=9To1Step-1S=(S+1)*2NextdayPrints=;SEndSub猴子吃桃:每次吃掉一半多一个,直到第10天只剩
11、一个,第一天共摘了多少个桃子?问题8要将100元的钞票换成等值的10元、5元、2元、1元的小钞票。要求每次换成40张小钞票,每种至少一张,有多少种换法?分析:10元一张最多能换9张,5元一张最多能换17张,2元一张最多能换37张,一元只要用40减去10、5、2元的数目就可以了!DimiAsInteger,jAsInteger,kAsInteger,mAsInteger,sumAsIntegersum=0Fori=1To9Forj=1To17Fork=1To37m=40-i-j-kIf(m=1)And(i*10+j*5+k*2+m=100)Thensum=sum+1Printi=;i,j=;j,
12、k=;k,m=;mEndIfNextkNextjNextiPrintsum=;sumEndSub2.4.5循环语句嵌套的定义循环语句嵌套的定义双重循环语句:在循环体内含有另一个循环语句的结构双重循环语句:在循环体内含有另一个循环语句的结构如如:For循环变量循环变量1=初值初值To终值终值Step步长步长For循环变量循环变量2=初值初值To终值终值Step步长步长循环体循环体Next循环变量循环变量2Next循环变量循环变量1多重循环:如循环体内再包含循环结构,我们将这种循环结构多重循环:如循环体内再包含循环结构,我们将这种循环结构称作多重循环。称作多重循环。多重循环的原则是多重循环的原则是
13、:外层循环与内层循环必须层层相套,循环外层循环与内层循环必须层层相套,循环体之间不能交叉。每个循环必须有一个唯一的循环控制变量。体之间不能交叉。每个循环必须有一个唯一的循环控制变量。问题5求解12+34+99100PrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100s=s+(-1)(i+1)*iNextiPrint“S;SEndSubPrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100IfiMod2=0Thens=siElses=s+iEndI
14、fNextiPrint“S;SEndSub问题61-1/2+1/31/4+1/991/100PrivateSubCommand1_Click()DimiAsinteger,SAsintegerS=0Fori=1To100s=s+(-1)(i+1)*(1/i)NextiPrint“S;SEndSub问题7求11000之间的素数素数是指只能被1和他本身整除的数要判断一个数i是否为素数,只要看i是否能被2到i1范围内的数整除,若能被整除,则不是素数。PrivateSubCommand1_Click()DimiAsInteger,jAsIntegerDimprimeAsBooleanFori=2To1000prime=Truej=2DoWhile(ji)AndprimeIf(iModj=0)Thenprime=Falsej=j+1LoopIfprimeThenPrinti;iNextiEndSub2024/4/16周二21