《VB程序设计》PPT课件 (2).ppt
第四章第四章 VBVB基本控制结构基本控制结构(5)(5)学习目标学习目标n其他辅助控制语句其他辅助控制语句n条件型循环条件型循环作业小结作业小结1:填数游戏:填数游戏n填数:填数:365283652838256 38256 程序出现的问题程序出现的问题Private Sub Command1_Click()Dim a%For a=1 To 9 If(10*a+3)*6528=(30+a)*8256 Then Print a Next aEnd SubDim a&改为改为小结小结2:另一个填数游戏:另一个填数游戏OEEEEEOEEEOEOOEEn填数游戏:填数游戏:O O,E E代表奇数、偶数代表奇数、偶数此题唯一的答案是此题唯一的答案是34828多出了许多答案,多出了许多答案,why?程序的修改程序的修改n修改三个标志量的赋值句,其余不变修改三个标志量的赋值句,其余不变 flag1=(z1 Mod 2=0)And(z2 Mod 2=1)And(z3 Mod 2=0)And(z4 Mod 2=0)And(Len(z)=4)flag2=(u1 Mod 2=0)And(u2 Mod 2=1)And(u3 Mod 2=0)And(Len(u)=3)flag3=(v1 Mod 2=1)And(v2 Mod 2=1)And(v3 Mod 2=0)And(v4 Mod 2=0)And(Len(v)=4)n作用:指定三个乘积作用:指定三个乘积z z、u u、v v的长度为的长度为4 4、3 3、4 4作业总结作业总结3n问满足同样规律的式子有多少个问满足同样规律的式子有多少个?(答案:(答案:209209)12422124 12632136Private Sub Form_Load()For a=1 To 9 For b=1 To 9 For c=1 To 9 For d=1 To 9 X1=10*b+a:Y1=10*c+d X2=10*a+b:Y2=10*d+c If X1*Y1=X2*Y2 Then n=n+1 Print X1;*;Y1;=;X2;*;Y2 End If Next d,c,b,a Print n=;nEnd Sub程序结果为程序结果为209种种?程序的修改程序的修改n修改代码,剔除重复的结果:修改代码,剔除重复的结果:Private Sub Form_Load()For a=1 To 9 For b=1 To 9 For c=1 To 9 For d=1 To 9 X1=10*b+a:Y1=10*c+d X2=10*a+b:Y2=10*d+c If X2 X1 And X2 Y1 And X1*Y1=X2*Y2 Then n=n+1 Print X1;*;Y1;=;X2;*;Y2 End If Next d,c,b,a Print n=;nEnd Sub去除重复后结果为去除重复后结果为28种种for循环总结循环总结nforfor循环(计数型)循环(计数型)n多重循环多重循环n多重循环:多重循环:描述决定某事物的、范围各异的多种因素描述决定某事物的、范围各异的多种因素for a=.for b=.next b .next aslowfast辅助控制语句辅助控制语句nGoToGoTo 语句语句格式:格式:GoToGoTo 标号标号|行号行号功能:将流程转移到标号所在的语句功能:将流程转移到标号所在的语句 a=7 goto over b=2 over:c=3 print a,b,c打印结果为打印结果为 7 3 a=7 goto 55 b=2 55 c=3或或辅助控制语句辅助控制语句nEnd 语句:语句:EndEnd IfEnd SubEnd SelectnExit 语句语句Exit SubExit ForExit Do结束程序或某程序块结束程序或某程序块提前退出程序或循环提前退出程序或循环相关练习相关练习n打印最小的水仙花数打印最小的水仙花数For x=100 to 999 a=x100:b=(x-100*a)10:c=x mod 10 if x=a3+b3+c3 then print x:Exit forNext xFor a=1 To 9 For b=0 To 9 For c=0 To 9 x=100*a+10*b+c If a 3+b 3+c 3=x Then Print x:Exit Sub Next c Next bNext a或或最大的水仙最大的水仙花数?花数?辅助控制语句辅助控制语句nWith With 语句语句设置同一对象多种属性时,可用该语句设置同一对象多种属性时,可用该语句“缩写缩写”。示例:示例:Private Sub Form_Load()Command1.Left=1200 Command1.Top=1200 Command1.Height=400 Command1.Width=1200 Command1.Caption=BeginEnd SubPrivate Sub Form_Load()With Command1 .Left=1200 .Top=1200 .Height=400 .Width=1200 .Caption=Begin“End WithEnd Sub等价于等价于条件型循环条件型循环n计数型循环:计数型循环:求下式当n=100时的取值特点:特点:循环次数已知(计数型)循环次数已知(计数型)For循环循环n条件型循环条件型循环:求满足下式的n值特点:特点:循环次数未知(条件型)循环次数未知(条件型)Do 循环循环条件型循环格式条件型循环格式nDo.LoopDo.Loop循环循环n格式:格式:5 5种种nwhilewhile:循环继续条件:循环继续条件nuntiluntil:循环结束条件:循环结束条件1当型当型:Do WhileLoop2当型当型:Do UntilLoop3直到型直到型:DoLoop While 4直到型直到型:DoLoop Until5无条件循环:无条件循环:DoLoop实质上实质上2 2种种条件型循环格式条件型循环格式nWhile.WendWhile.Wend循环循环n格式:格式:n与与Do WhileLoopDo WhileLoop功能完全相同,濒于淘汰!功能完全相同,濒于淘汰!while 条件条件 循环体循环体wend示例:条件型循环示例:条件型循环n求满足下式的求满足下式的n n值值nN-SN-S图:图:当当s=10n=n+1s=s+1/ns=0n=0条件型循环的多种格式条件型循环的多种格式n同一问题的多种格式:同一问题的多种格式:s=0:i=0while s10 then exit doloopdo-loops=0:i=0do i=i+1 s=s+1/iloop until s10do-loop untils=0:i=0do i=i+1 s=s+1/iloop while s=10do-loop whiles=0:i=0do while s10 i=i+1 s=s+1/iloopdo until-loop条件型循环要点条件型循环要点nNote:whilewhile条件与条件与untiluntil条件恰条件恰相反相反相反相反;直到型至少执行直到型至少执行一次一次一次一次循环体;循环体;无限次循环无限次循环do.loopdo.loop中,必然包含一条判断语句,当中,必然包含一条判断语句,当满足条件时满足条件时exit doexit do;示例:韩信点兵示例:韩信点兵n秦末汉初军事家韩信,帮助刘邦打秦末汉初军事家韩信,帮助刘邦打败项羽,建立了汉政权。传说,韩败项羽,建立了汉政权。传说,韩信点兵的方法很特殊:他让士兵变信点兵的方法很特殊:他让士兵变换队形进行操练,在每次变换队形换队形进行操练,在每次变换队形时,向队尾看一眼,这支队伍有多时,向队尾看一眼,这支队伍有多少人就心中有数了。一次检阅一支少人就心中有数了。一次检阅一支八千余人的队伍,这支队伍列成三八千余人的队伍,这支队伍列成三路纵队,队尾路纵队,队尾1 1人;成五路纵队人;成五路纵队,队队尾尾2 2人;成七路纵队,队尾人;成七路纵队,队尾4 4人;成人;成十三路纵队,队尾十三路纵队,队尾6 6人。至此韩信已人。至此韩信已算出了这支队伍参加检阅的实到人算出了这支队伍参加检阅的实到人数。那么,韩信是用什么方法计算数。那么,韩信是用什么方法计算的?的?韩韩信信例:韩信点兵例:韩信点兵n代码:代码:n结果:结果:86778677Private Sub Command1_Click()n=8000 Do n=n+1 Loop Until(n Mod 3=1)And(n Mod 5=2)_ And(n Mod 7=4)And(n Mod 13=6)Print nEnd Sub示例:阶乘计算示例:阶乘计算n例例2 2:求满足求满足 i!n i!1000,4!=24,5!=120,6!=720,7!1000,n=6n=6为所求。为所求。n代码:代码:错误的写法错误的写法:n=1000:s=1:i=1do while s=n s=s*i i=i+1loopprint in=1000:s=1:i=0do while s0 y=y+x print yloopx=20:y=0do while x0 y=y+x x=x+1loop求求110的和:的和:s=0:i=0do while i=10 i=i+1 s=s+iloopn循环体中必有这样的语句:它能循环体中必有这样的语句:它能有效地改变循环条件有效地改变循环条件n循环体中循环体中对循环条件有影响的语句位置一般靠后对循环条件有影响的语句位置一般靠后。示例示例3:数列计算:数列计算n例例3 3:求:求 ,直到最后一项小,直到最后一项小于于n代码:代码:s=0:i=1:t=1:k=1Do s=s+t i=i+2 k=-k t=k/iLoop Until Abs(t)nEnd Subn mod factor=0n=n factor练习:练习:Do循环相关选择题循环相关选择题1 1、对、对 Do until Do until .循环体循环体.Loop.Loop则下列说法正确的是则下列说法正确的是_。A.A.如果如果“条件条件”是一个为是一个为-1-1的常数,则一次循环体也不执行的常数,则一次循环体也不执行B.B.如果如果“条件条件”是一个为是一个为-1-1的常数,则至少执行一次循环体的常数,则至少执行一次循环体C.C.如果如果“条件条件”是一个不为是一个不为-1-1的常数,则至少执行一次循环的常数,则至少执行一次循环体体D.D.不论不论“条件条件”是否为是否为“真真”,至少要执行一次循环体,至少要执行一次循环体2 2、对、对Do.Do.循环体循环体.Loop While .Loop While 则以下叙述中错误的是则以下叙述中错误的是_。A.A.如果如果“条件条件”总是为总是为TrueTrue,则不停地执行循环体,则不停地执行循环体B.“B.“条件条件”可以是关系表达式、逻辑表达式或常数可以是关系表达式、逻辑表达式或常数C.C.循环体中可以使用循环体中可以使用Exit DoExit Do语句语句D.D.若若“条件条件”是一个为是一个为0 0的常数,则一次也不执行循环体的常数,则一次也不执行循环体AD练习:选择题练习:选择题3、以下程序段的输出结果为、以下程序段的输出结果为_。X=1 :Y=4 Do Until Y 4 X=X*Y Y=Y+1 Loop Print XA.1 B.4 C.8 D.204、下列程序段的执行结果为、下列程序段的执行结果为_。A=0:B=1 Do A=A+B B=B+1 Loop While A 10 Print A;BA.10 5 B.A B C.0 1 D.10 30BA练习:选择题练习:选择题5 5、下列循环能正常结束的是、下列循环能正常结束的是_ A.i=5 do i=i+1 loop until i0 D.i=6 do i=i-2 loop until i=1C练习:选择题练习:选择题6 6、以下能够正确计算、以下能够正确计算n n!的程序是!的程序是_。A.n=5:x=1 Do x=x*i i=i+1 Loop While in Print x B.n=5:x=1:i=1 Do x=x*i i=i+1 Loop While in Print xD.n=5:x=1:i=1 Do x=x*i i=i+1 Loop While i=n Print xD作业作业n试编程求解:甲年龄的平方与乙年龄之和为试编程求解:甲年龄的平方与乙年龄之和为10531053,乙年龄的平方与甲年龄之和为,乙年龄的平方与甲年龄之和为873873,求甲、乙,求甲、乙的年龄。的年龄。(32(32、29)29)n根据教材根据教材p53p53求最大公约数算法,设计程序,求求最大公约数算法,设计程序,求两个数的最小公倍数。两个数的最小公倍数。习题答案习题答案n教材习题教材习题4.5(P63-71)选择题)选择题1.B 2.A 3.B 4.D 5.D 6.B 7.A 8.C 9.C 10.B11.A 12.C 13.B 14.D 15.A 16.A 17.B 18.Cn填空题填空题1、92、1 2 33、x=7 4、x0 else 无穷数根无穷数根12、2+i 6 *习题答案习题答案n习题集(习题集(P25-29)选择题)选择题1.C 2.D 3.C 4.D 5.B 6.A 7.C 8.B 9.C 10.B11.A 12.C 13.C 14.C 15.B或或D 16.C 17.D 18.B19.A 20.C 21.Dn填空题填空题1、xz or yy uz6、a mod i flag=1 msgbox7、a mod 2=18、m1=5 m2=29、67 10、.346 11、2568.9 12、76