[PPT模板]第 5 章 程序控制结构.ppt

上传人:sccc 文档编号:4595806 上传时间:2023-04-29 格式:PPT 页数:71 大小:372KB
返回 下载 相关 举报
[PPT模板]第 5 章 程序控制结构.ppt_第1页
第1页 / 共71页
[PPT模板]第 5 章 程序控制结构.ppt_第2页
第2页 / 共71页
[PPT模板]第 5 章 程序控制结构.ppt_第3页
第3页 / 共71页
[PPT模板]第 5 章 程序控制结构.ppt_第4页
第4页 / 共71页
[PPT模板]第 5 章 程序控制结构.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《[PPT模板]第 5 章 程序控制结构.ppt》由会员分享,可在线阅读,更多相关《[PPT模板]第 5 章 程序控制结构.ppt(71页珍藏版)》请在三一办公上搜索。

1、1,第 5 章 程序控制结构,顺序结构分支结构循环结构,2,第5章 程序控制结构,5.1 顺序结构,顺序结构是在程序执行时,根据程序中语句的书写顺序依次执行的语句序列,其程序执行流程是按顺序完成操作的。,3,第5章 程序控制结构,5.1 顺序结构,例5.1:创建一个窗体,用字符拼凑一个图形。,4,5.2 选择结构程序设计,本章要点:条件语句单行结构条件语句If.Then.Else.块结构条件语句If.Then.EndIf多分支选择语句Select Case.End Select,特点:根据条件是否成立,决定程序的执行分支,5,5.2.1 单行结构条件语句,1.格式 If Then Else 2

2、.功能 如果成立,则执行,否则执行,6,3.说明(1)可以是:关系表达式布尔表达式数值表达式:0为False;非0为True字符串表达式:0为False;非0为True(2)可以没有Else部分,这时必须有。,例:If Xaaa Then Print X,7,(3)、:可以有多条语句,各语句之间用冒号隔开。例:If N0 Then A=A+B:B=B+A Else A=A-B:B=B-A(4)应作为一条语句书写。如果语句太长需要换行,必须在折行处使用续行符号。(5)无论条件是否成立,都具有共同出口例:If X=0 Then X=1+X Else X=5-X Y=1-X Print Y=;Y 若

3、 X=2 则打印 Y=-2 若 X=-2 则打印 Y=-6,共同出口,(6)单行结构条件语句可以嵌套 IF.THEN.IF.THEN.ELSE.ELSE,8,【例5-1】设界面如下图所示,用文本框输入x的值,单击“计算Y”按钮时,根据以下公式计算y的值。,Private Sub Command1_Click()X=Val(Text1.Text)If X=0 Then Y=Abs(X)Else Y=Log(X)Label3.Caption=Y End Sub,9,例:比较以下两段程序,是否都能够实现上例的功能。,程序段1:X=Val(Text1.Text)Y=Abs(X)If X 0 Then

4、Y=Log(X)Label3.Caption=Y,程序段2:X=Val(Text1.Text)Y=Log(X)If X=0 ThenY=Abs(X)Label3.Caption=Y,10,【例5-2】平面直角坐标系中,不同的象限内,点的坐标的符号有以下4种情况:第一象限 X0,Y0 第二象限 X0 第三象限 X0,Y0 任意输入一对坐标值,找出它所在的象限。,Private Sub Command1_Click()X=Val(Text1.Text):Y=Val(Text2.Text)If X=0 Or Y=0 Then _ Print 不在任何象限内:Exit Sub If X 0 Then

5、If Y 0 Then Print IN A Else _ Print IN D Else If Y 0 Then Print IN B _ Else Print IN C End Sub,11,5.2.2 块结构条件语句,1.格式If Then ElseIf Then ElseIf Then Else End If,If Then 语句组1Else 语句组2End If,注意:格式书写、嵌套,12,块结构条件语句的功能:,13,【例5-3】输入华氏温度F,利用公式C=5/9*(F-32)转换成摄氏温度C,根据转换结果C的不同值,按以下要求给出相应的提示。,C40时,打印HOT 30C40时,

6、打印 WARM 20C30时,打印 ROOM TEMPERATURE 10C20时,打印 COOL 0C10时,打印 COLD C0时,打印 FREEZING,14,Private Sub Command1_Click()C=5/9*(Val(Text1.Text)-32)Text2.Text=Format(C,0.00)If C 40 Then Label2.Caption=HOT ElseIf C 30 Then Label2.Caption=WARM ElseIf C 20 Then Label2.Caption=ROOM TEMPERATURE ElseIf C 10 Then Lab

7、el2.Caption=COOL ElseIf C 0 Then Label2.Caption=COLD Else Label2.Caption=FREEZING End IfEnd Sub,15,注意:(1)ElseIf不能写成Else If,即中间不能有空格。(2)在书写时,可以将If语句、ElseIf子句、Else子句、和End If语句左对齐,而各语句组向右缩进若干空格,以使程序结构更清楚。(3)严格按格式要求书写,不可随意换行或将两行合并成一行。例如,对于条件结构:If x=0 Then y=1 Else y=2 End If 以下两种写法都是错误的:,写法一:If x=0 Then

8、 y=1Else y=2End If,写法二:If x=1 Then y=10 Else y=20End If,16,5.2.3 多分支选择语句,1.格式 Select Case Case Case Case Else End Select2.功能:根据测试表达式的值,按顺序匹配Case后的表达式,如果匹配成功,则执行该Case下的语句块,然后转到End Select语句之后继续执行。,17,多分支选择语句的功能流程图:,18,3.说明:数值或字符表达式 Case 表达式表:表中的表项为如下形式:(1)表达式1,表达式2.如:Case 1,3,5(2)表达式1 TO 表达式2 如:Case 1

9、0 TO 30 Case A TO Z(3)Is 如:Case Is=10 Case Is=0 与 Case 0 相同 注意:测试表达式的类型应与Case后表达式类型一致,且三种形式可以混用,如:Case Is-5,0,5 To 100,19,Y=,ex+e-x x0,X=Val(Text1.Text)Select Case XCase Is 0 Y=Log(X)/Log(10)End SelectPrint Y=;Y,X=Val(Text1.Text)Select Case XCase X 0 Y=Log(X)/Log(10)End SelectPrint Y=;Y,【例5-4】按以下公式求

10、分段函数y的值。,20,如果在条件成立或不成立的情况下要继续判断其他条件,则可以使用嵌套的条件语句来实现,也就是在语句组中再使用另一个条件语句。,5.2.4 条件语句的嵌套,块结构条件语句的嵌套示例:If A=1 Then If B=0 Then Print*0*ElseIf B=1 Then Print*1*End IfElseIf A=2 Then Print*2*End If,21,多分支选择语句的嵌套示例:Select Case A Case 1 Select Case B Case 0 Print*0*Case 1 Print*1*End Select Case 2 Print*2*

11、End Select,22,多分支选择语句与块结构条件语句的互相嵌套示例:Select Case A Case 1 If B=0 Then Print*0*ElseIf B=1 Then Print*1*End If Case 2 Print*2*End Select,23,1IIf函数格式:IIf(,)功能:当的值为True时,返回第2个参数的值;当的值为False时,返回第3个参数的值。(类似于具有两个分支的If语句的功能)例:使用IIf函数求两个变量A和B的较大数。MaxAB=IIf(A B,A,B)例:使用IIf函数求三个变量A、B和C的最大数。MaxAB=IIf(A B,A,B)Ma

12、xABC=IIf(MaxAB C,MaxAB,C),5.3 条件函数,24,2Choose函数格式:Choose(,.,)功能:当的值为1时,返回的值;当的值为2时,返回的值;。如果的值不是整数,则会先四舍五入为整数。例:将成绩1分、2分、3分、4分和5分转换成相应的等级:不及格(1分,2分)、及格(3分),良(4分),优(5分)。Grade=Choose(Score,不及格,不及格,及格,良,优),25,应用举例,【例】设计一个口令检测程序,界面如下图,当用户输入的口令正确时,显示“恭喜!您已成功进入本系统”,否则,显示,“口令错!请重新输入”。如果连续两次输入了错误口令,在第三次输入完口令

13、后则显示一个消息框,提示“对不起,您不能使用本系统”,然后结束程序的执行。,26,Private Sub Text1_KeyUp(KeyCode As Integer,_ Shift As Integer)Static I As Integer 保存输入错误口令的次数 If KeyCode=13 Then 如果按下的键为回车键 If UCase(Text1.Text)=HELLO Then Label2.Caption=恭喜!,您已成功进入本系统 ElseIf I=0 Or I=1 Then I=I+1 Label2.Caption=口令错!,请重新输入 Text1.SelStart=0 Te

14、xt1.SelLength=Len(Text1.Text)Else MsgBox 对不起,您不能使用本系统:End End If End IfEnd Sub,27,【例5-6】求一元二次方程ax2+bx+c=0的解。分析:(1)如果a=0,则不是二次方程,此时如果b=0,则提示重新输入系数;如果b 0,则:x=-c/b(2)如果a 0,且b2-4ac=0,则有两个相等的实根(3)如果a 0,且b2-4ac0,则有两个不等的实根(4)如果a 0,且b2-4ac0,则有两个共轭复根,28,Private Sub Command1_Click()A=Val(Text1.Text):B=Val(Tex

15、t2.Text)C=Val(Text3.Text):Cls CurrentX=600:CurrentY=1100 If A=0 Then If B=0 Then MsgBox 系数为零,请重新输入 Text1.SetFocus Text1.SelStart=0 Text1.SelLength=Len(Text1.Text)Else X=-C/B Print X=;Format(X,0.000)End If Exit Sub End If,29,Delta=B 2-4*A*C Select Case Delta Case 0 Print X1=X2=;Format(-B/(2*A),0.000)

16、Case Is 0 X1=(-B+Sqr(Delta)/(2*A)X2=(-B-Sqr(Delta)/(2*A)Print X1=;Format(X1,0.000)CurrentX=600:CurrentY=1300 Print X2=;Format(X2,0.000)Case Is 0 A1=-B/(2*A)A2=Sqr(Abs(Delta)/(2*A),30,Print X1=;Format(A1,0.000);+;_ Format(A2,0.000);i CurrentX=600 CurrentY=1300 Print X2=;Format(A1,0.000);-;_ Format(A2

17、,0.000);i End SelectEnd Sub,31,【例】设计一个四则运算的自我练习应用程序,界面如下图所示。,32,要求:(1)执行时,当在Text1中输入一种运算符后,在标签Label2中立即出现该运算符号。(2)单击“出题”按钮可以产生两个0,1000之间的随机整数,这时由Text2、Label2和Text3组成一个表达式。(3)可以通过单击“计算”按钮计算所生成的表达式的值。(4)也可以由用户在文本框Text4中输入运算结果通过单击“判断”按钮可以判断输入的运算结果是否正确,然后在Label4上显示“正确”或“错误”。(5)单击“退出”按钮结束运行。,33,(1)在Text1

18、中输入加、减、乘、除符号后,在Label2中立即出现相应的运算符号。Private Sub Text1_Change()Label2.Caption=Text1.Text End Sub(2)单击“出题”按钮Command1,生成两个0,1000之间的随机整数。Private Sub Command1_Click()Randomize Text2.Text=Int(Rnd*1001)Text3.Text=Int(Rnd*1001)Text4.Text=End Sub,34,(3)单击“计算”按钮Command2得出Text4的值。Private Sub Command2_Click()If L

19、abel2.Caption=+Then Text4.Text=Val(Text2.Text)+Val(Text3.Text)ElseIf Label2.Caption=-Then Text4.Text=Val(Text2.Text)-Val(Text3.Text)ElseIf Label2.Caption=*Then Text4.Text=Val(Text2.Text)*Val(Text3.Text)ElseIf Label2.Caption=/Then Text4.Text=Val(Text2.Text)/Val(Text3.Text)Else MsgBox 运算类型错,请重输,警告 Tex

20、t1.SetFocus:Text1.SelStart=0 Text1.SelLength=Len(Text1.Text)End IfEnd Sub,35,(4)Text4的内容也可以由用户输入,通过单击“判断”按钮Command3判断输入结果是否正确。Private Sub Command3_Click()Select Case Label2.Caption Case+If Text4.Text=Val(Text3.Text)+Val(Text2.Text)Then Label4.Caption=正确 Else Label4.Caption=错误 End If,36,Case-If Text4

21、.Text=Val(Text2.Text)-Val(Text3.Text)Then Label4.Caption=正确 Else Label4.Caption=错误 End IfCase*If Text4.Text=Val(Text2.Text)*Val(Text3.Text)Then Label4.Caption=正确 Else Label4.Caption=错误 End If,37,Case/If Text4.Text=Val(Text2.Text)/Val(Text3.Text)Then Label4.Caption=正确 Else Label4.Caption=错误 End If Ca

22、se Else a=MsgBox(运算类型错,请重输,警告)Text1.SetFocus Text1.SelStart=0 Text1.SelLength=Len(Text1.Text)End SelectEnd Sub注:因实数的不精确表示,除法判断条件应写成:Abs(Val(Text4.Text)-Val(Text2.Text)/Val(Text3.Text)0.000001,38,5.4 循环结构程序设计*,要点:For.Next循环While.Wend循环Do.Loop循环,特点:重复相同或相似的操作步骤结构:循环体要重复执行的语句序列。循环控制部分规定循环的重复条件或重复次数,确定循

23、环范围的语句,39,5.4.1 ForNext循环结构,1.格式For=To Step Exit For Next,循环变量值超过终值?,执行循环体,后续语句,Yes,No,2.功能:执行过程如流程图所示,40,3.说明(1)循环变量数值变量(2)初值,终值,步长数值表达式(3)步长可正可负,但不能为0,为1时可以省略 步长0时,必须:初值终值 步长=终值 循环结束条件循环变量的值终值(4)Exit For退出循环,常放在条件语句中(5)Next之后的循环变量应与For语句中的循环变量一致,也可以省略,41,例:判断以下程序段的执行结果:For i=5 To 1 Step-1 Print i*

24、i;Next i Print Print i,例:判断以下程序段的执行结果:X=6 For K=1 To 10 Step-2 X=X+K Next K Print K,X,42,累加分析:累加器(变量)初值 S=0 循环体(重复执行)S=S+I(I=1,2,N)Private Sub Command1_Click()Dim N As Integer,I As Integer,S As Integer N=Val(Text1.Text)S=0 For I=1 To N S=S+I Next I Label3.Caption=SEnd Sub,【例】求1+2+3+4+N,43,思考:1.求12+2

25、2+32+42+10022.求13+33+53+n33.求1-3+5-7+(-1)n+1(2n-1),4.求,5.求,44,【例】求 N!(N!=123N)累乘分析:初始化:F=1 循环体:F=F I(I=1,2,3N)程序:Private Sub Command1_Click()Dim N As Integer,I As Integer,F As Long N=Val(Text1.Text)F=1 For I=1 To N F=F*I Next I Text2.Text=F End Sub,45,思考:1.求13 5 7(共N项)。,2.求:,3.求:,46,【例6-3】打印斐波那契(Fib

26、onacci)数列的前20项 斐波那契数列如下:0,1,1,2,3,5,8,13,即从第三项起每一项是其前两项之和。分析:Private Sub Form_Click()A=0:B=1Text1.Text=Text1.Text&Str(A)&Str(B)&vbCrLfFor I=1 To 9 A=A+B B=A+B Text1.Text=Text1.Text&Str(A)&Str(B)&vbCrLfNext IEnd Sub,47,思考:1.在窗体上打印1、3、5、7、9、N。2.在窗体上显示1到500之间所有能被3整除的数,每行10个数。3.在带水平滚动条文本框中显示1到指定N之间所有能被3

27、和7同时整除的数。4.在带垂直滚动条的文本框中显示003600之间的正弦和余弦值,每隔20求一组值。,48,5.4.2 While.Wend循环结构,问题:求12+22+32+42+小于某数N的最大值,N由用户指定。特点:已知循环条件、未知循环次数,用While.Wend循环结构实现较方便1.格式 While Wend2.功能,F,条件?,语句组,T,49,【例】使用While.Wend循环求12+22+32+大于某数N的最小值,N由用户指定。,分析:是累加问题初始化:S=0 I=0 N由Text1输入循环条件:S=N循环体:I=I+1 S=S+I2,50,“计算”按钮Command1的Cli

28、ck事件过程如下:,Private Sub Command1_Click()Dim I As Integer,N As Integer,S As Integer N=Val(Text1.Text)I=0:S=0 While S=N I=I+1 S=S+I*I Wend Label2.Caption=SEnd Sub,While.Wend循环可以使用Do.Loop循环来代替,但Do.Loop循环具有更多的形式。,思考:求12+22+32+42+小于某数N的最大值,51,5.4.2 DoLoop循环结构,格式:,格式一:Do While Exit Do Loop,格式二:Do Until Exit

29、 Do Loop,功能:,52,格式:,格式三:Do Exit Do Loop While,格式四:Do Exit Do Loop Until,T,F,功能:,T,F,53,说明:(1)Exit Do语句用于退出循环体(2)也可以在Do语句和Loop语句之后都没有条件,这时在循环体内必须有强行退出循环的语句即:Do Exit Do Loop(3)当型循环可能一次都不执行;而直到型循环至少要执行一次循环体。多数情况下,当型循环和直到型循环可互相代替。,54,【例6-5】求,直至最后一项的值10-4为止。分析:用Sum表示累加和,初值:Sum=0 重复:Sum=Sum+Term 用N表示1,3,5

30、,7,初值:N=1 重复:N=N+2 用Term表示每一项,则Term=1/(N*N)归纳:初始化 N=1,Sum=0 重复 Term=1/(N*N),Sum=Sum+Term,N=N+2 循环终止条件 Term=0.0001,55,设单击窗体时开始计算,结果打印在窗体上。Private Sub Form_Click()N=1:Sum=0 Do Term=1/(N*N)Sum=Sum+Term N=N+2 Loop Until Term=0.0001 Form1.FontSize=12 设窗体的字体 CurrentY=200 设当前显示位置 Print 运算结果为:;Sum Print 最后一

31、项的值为:;TermEnd Sub,56,【例6-6】已知某乡镇企业现有产值和年增长率,试问多少年后,该企业的产值可以翻一番。翻一番后实际产值是多少?分析:P现有产值 R年增长率 Y年 V增长后的产值,初始值为P 累乘:V=P(1+R)(1+R)退出循环条件 V=2P,57,设单击窗体时开始计算:Private Sub Form_Click()P=Val(Text1.Text)R=Val(Text2.Text)/100 V=P:Y=0 Do Until V=2*P Y=Y+1 V=V*(1+R)Loop Text3.Text=Y Text4.Text=Format(V,0.00)End Sub

32、,58,【例】给出两个正整数M、N,求它们的最大公约数和最小公倍数。分析:求最大公约数的方法如下(1)以M作被除数,N作除数,求余数R。(2)如果R不为零,则将除数N做为新的被除数M,将余数R做为新的除数N,再进行相除,得到新的余数R。(3)如果R仍不等于0,则重复上述步骤(2)。如果R为零,则这时的除数N就是最大公约数。最小公倍数为两个数的积除以它们的最大公约数。,59,设计界面如下图所示:,60,Dim A As Integer,B As Integer,N As Integer,_ M As Integer,R As IntegerPrivate Sub Command1_Click()

33、M=Val(Text1.Text):N=Val(Text2.Text)A=M:B=N R=M Mod N Do While R 0 M=N N=R R=M Mod N Loop Label3.Caption=NEnd SubPrivate Sub Command2_Click()Label4.Caption=A*B/NEnd Sub,61,【例】给一个整数n(n=3),判断它是否是素数 分析:将数N被2SQR(N)间全部整数除,如果都除不尽,则N是素数,否则N不是素数。设标志变量Flag,只要有一个被整除,就置为1。,62,Private Sub Command1_Click()N=Val(T

34、ext1.Text):K=Int(Sqr(N):I=2 Flag=0 Do While I=K And Flag=0 If N Mod I=0 Then Flag=1 Else I=I+1 Loop If Flag=0 Then Label1.Caption=是素数 Else Label1.Caption=不是素数 End IfEnd Sub,63,5.4.3 循环的嵌套,在一个循环体内又完整地包含另一个循环,称为循环的嵌套(或多重循环),例:For I=1 To 3 For J=5 To 7 Print I,J Next J Next I执行过程:,例:For I=1 To 3 For J=

35、1 To I For K=-1 To-2 S=S+I+J+K Next K Next J Next I执行过程:,64,说明(1)嵌套的循环可以是ForNext循环,也可以是 DoLoop循环(2)连续的NEXT语句可以合并成一个NEXT语句,循环变量按从内到外排列,For I=1 TO 3 For J=5 TO 7 Print I,JNext J,I,For I=1 TO 3 For J=5 TO 7 Print I,J Next JNext I,例:,(3)内外循环不应交叉 例:For I=.For J=.Next I Next J,65,(4)嵌套循环应选用不同的循环变量例:For I=

36、.For J=.Next J.For J=.Next J Next I,66,【例6-9】求1+(1+2)+(1+2+3)+(1+2+3+n),n由用户输入。分析:Private Sub Form_Click()N=Val(Text1.Text)Sum=0 For I=1 To N Sum1=0 For J=1 To I Sum1=Sum1+J Next J Sum=Sum+Sum1 Next I Text2.Text=SumEnd Sub,67,【例6-10】公鸡5个钱一只,母鸡三个钱一只、小鸡一个钱三只,要用100个钱买100只鸡,问公鸡、母鸡、和小鸡各买几只?分析:Private Sub

37、 Form_Click()Dim I As Integer,J As Integer,K As Integer Print Tab(5);公鸡;Tab(15);母鸡;Tab(25);_ 小鸡 For I=0 To 20 For J=0 To 33 For K=0 To 100 Step 3 If I*5+J*3+K3=100 And I+J+K=100 Then Print Tab(5);I;Tab(15);J;Tab(25);K End If Next K,J,IEnd Sub,68,【例6-11】数字灯谜。有算式:,A、B、C、D为非负一位数字,要求找出满足以上算式的A、B、C、D。,69

38、,Private Sub Form_Click()Dim A As Integer,B As Integer,C As Integer,_ D As Integer Dim S1 As Integer,S2 As Integer,S3 As Integer For A=1 To 9 For B=0 To 9 For C=1 To 9 For D=0 To 9 S1=A*1000+B*100+C*10+D S2=C*100+D*10+C S3=A*100+B*10+C If S1-S2=S3 Then Print A;B;C;D End If Next D,C,B,AEnd Sub,70,小结,1.ForNext循环结构For=To Step Exit For Next,71,2.While.Wend循环结构 While Wend,Do While|Until Exit Do Loop,Do Exit Do Loop While|Until,3.DoLoop循环结构,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号