《【教学课件】第五章基本控制结构.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第五章基本控制结构.ppt(52页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章 基本控制结构基本控制结构本章内容及要求:1.熟练掌握行if语句、块if结构、Select Case情况选择结构有使用,掌握选择的嵌套结构;2.熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环。重点:重点:选择结构及循环结构的实现及其应用选择结构及循环结构的实现及其应用难点:难点:选择的嵌套及多重循环结构选择的嵌套及多重循环结构第一节 选择结构 学习要点:IfThen结构 IfThenElse结构多分支If结构:IfThenElseIfSelect Case结构5.1 If语句语句If语句可以分为如下几类:If语句语句
2、IfThen结构结构IIf函数函数多分支多分支If结构结构IfThenElseIf结构结构If嵌套嵌套IfThenElse结构结构语法格式:语法格式:1.行IF语句 If 表达式表达式 Then 语句块语句块2.块IF语句 If 表达式表达式 Then 语句块语句块 End If功能:功能:如果表达式的值为真(True),执行Then后的语句块内容;否则不执行语句块内容。IfThen结构结构说明:表达式可以是:关系表达式、逻辑表达式、算术表达式。若为算术表达式,值为0则为假,非0则为真。如果是单行If格式,所有的代码必须写在同一行中,绝对不能换行。如果是块If语句,各语句块必须独占一行,End
3、 If不能省略。语句块若是一条语句,可用单行If结构;为多条语句,则采用块If结构较好。当然也可以采用单行If格式,这时各语句必须在同一行中且用:分隔,且不能出现End If。IfThen结构结构&例5.1 输入两个数,输出较大的数。分析:本题由用户输入两个数,经计算机判断后将较大数输出,即有两个输入量和一个输出量。所以需要两个文本框接受用户输入,可以采用标签框来实现数据的输出。界面设计:IfThen结构示例结构示例编写代码:Private Sub Command1_Click()Dim max As Single Dim min As Single max=Val(Text1.Text)mi
4、n=Val(Text2.Text)If max min Then max=min End If Label3.Caption=较大值为&maxEnd SubFTmax=minmaxmin?开始开始dim max as singledim min as singlemax=val(text1.text)min=val(text2.text)结束结束Label3.Caption=较大值为较大值为&max注意:块if语句中的end if能否省略?将块if语句改为单行if语句怎么改?If max min Then max=minIfThen结构示例结构示例语法格式:1.行IF语句 If 表达式表达式
5、Then 语句块语句块1 Else 语句块语句块2 2.块IF语句 If 表达式表达式 Then 语句块语句块1 Else 语句块语句块2 End IfIfThenElse结构结构功能:该结构用于解决“二选一”的问题。当表达式的值为真,执行语句块1的语句内容;否则执行语句块2的语句内容。说明:表达式最终的值必须为逻辑值,即取值为真或假。若语句块1和语句块2都是单条语句,可采用单行If格式,否则采用块If语句。跟If Then 不同,该结构中即使表达式值为假,也有语句块2的内容可被执行。IfThenElse结构结构&例5.2 编写一个程序,实现当用户输入的用户名和口令都正确时显示欢迎登录的消息对
6、话框,当用户名或口令有错误时显示消息对话框报告错误。界面设计:IfThenElse结构示例结构示例编写代码:Private Sub Command1_Click()Dim user As String Dim psw As String user=Text1.Text psw=Text2.TextEnd SubTF用户名和口用户名和口令正确吗?令正确吗?显示显示欢迎欢迎消息框消息框显示显示错误错误消息框消息框 If user=SYL And psw=123456 Then MsgBox(欢迎您登录本系统!欢迎您登录本系统!)Else MsgBox(您的用户名或口令有误,请重新输入!您的用户名或
7、口令有误,请重新输入!)End IfIfThenElse结构示例结构示例If语句的嵌套语句的嵌套当If语句中又包含If语句时,称为If语句的嵌套,其格式为:If Then If Then Else End If Else End IfIf嵌套语句的例题嵌套语句的例题例5.3输入一对实数x和y,判断有序对(x,y)在平面直角坐标系中属于第几象限。Private Sub Command1_Click()Dim x As Single,y As Singlex=Val(Text1.Text)y=Val(Text2.Text)If x*y=0 Then Print 在原点或是坐标轴上!Else If
8、x 0 Then If y 0 Then Print 在第一象限 Else Print 在第二象限 End If Else If y 0 Then Print 在第三象限 Else Print 在第四象限 End If End IfEnd IfEnd Sub语法格式:IIf(条件条件,表达式表达式1,表达式表达式2)功能:当条件为真(True),该函数返回表达式1的值,否则返回表达式2的值。其中,函数的三个参数都是必须的,不可省略。If user=SYL And psw=123456 Then MsgBox(正确!正确!)Else MsgBox(错误!错误!)End IfMsgBox IIf(
9、user=SYL And psw=123456,正确正确!,错误!错误!)IIf(user=SYL And psw=123456,MsgBox(正确!正确!),MsgBox(错误!错误!)这样写对吗?IIf函数函数说明:在使用IIf函数时,必须将其返回值赋值给一个变量,不可以单独调用。如上面的代码不可以写成:IIf(x=1,“Yes”,“No”),需为:a=IIf(x=1,“Yes”,“No”),或作为其他函数的参数。在使用IIf函数时,第2和第3个参数必须只能为一条语句,而且必须是有返回值的,这是IIf函数跟IfThenElse结构的不同之处。IIf函数函数多分支多分支If结构结构语法格式:
10、If 表达式表达式1 Then 语句块语句块1 ElseIf 表达式表达式2 Then 语句块语句块2 ElseIf 表达式表达式3 Then 语句块语句块3ElseIf 语句块语句块n End If多分支多分支If结构结构执行过程:如表达式1为真则执行语句块1;否则测试表达式2的值,为真则执行语句块2;依次类推至找到一个值为真的表达式则执行相应的语句块;若都不为真时,执行Else后语句块内容。说明:表达式最终的值必须为逻辑型,即取值是真或者是假;如果要产生n个分支,则需要n-1个测试表达式;此结构不能转换成单行If格式。&例5.3 编写一个程序,根据用户输入的某个学生的成绩评出优、良好、中等
11、、及格和不及个五个等级。判断标准如下:等级等级不及格不及格 score60及格及格 60score70中等中等 70score80良好良好 80score90优优 score90多分支多分支If结构示例结构示例分析:本题要解决的问题是根据输入学生的成绩来判断该学生的成绩等级。有一个输入量(学生的成绩)和一个输出量(判断结果),所以用一个文本框来接受用户输入,一个文本框来进行输出。再添加一个判断按钮,和一个退出按钮。界面设计:编写代码:Private Sub Command1_Click()Dim score As Single Dim s As String score=Val(Text1.T
12、ext)End SubT If score 60 Then s=不及格不及格 ElseIf score 70 Then s=及格及格 ElseIf score 80 Then s=中等中等 ElseIf score 90 Then s=良好良好 Else s=优优 End If Text2.Text=s多分支多分支 Select CaseSelect Case结构结构语句语句 语法格式为:Select Case 测试表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块nEnd Select Sub Form_Click()var=InputBo
13、x(“输入值输入值:”)Select Case var Case 1 Text1.Text=“1”Case 2 Text1.Text=“2”Case 3 Text1.Text=“3”Case Else Text1.Text=“Bye Bye”End SelectEnd Sub注意:1.测试表达式可以是数学表达式、字符串表达式、逻辑表达式或混合表达式。2.Case子句后的表达式列表可是以下几种格式:表达式1,表达式2,表达式n 表达式1 to 表达式2 Is 表达式 还可以是上述三种格式的结合3.当表达式结果与多个Case表达式列表的值匹配 时,只执行第一个匹配的Case语句对应的语句块。4.C
14、ase Else子句必须放在全部Case子句语句后面。当表达式的值与前面所有Case语句均不匹配时,才执行Case Else子句部分。这个子句可以省略。Case 2,4,6,8,VB,程序设计程序设计 Case 60 to 100 Case a to z Case is=60 and is100,is200 Case is=a+b&例5.4 从键盘输入一个09的数,编写程序判断输入的数是奇数还是偶数。Select Case语句示例语句示例想一想想一想&例5.5 邮局向国外寄包裹的收费计算如下:当包裹重量不超过30克时收费10元;当包裹重量为30克至60克时收费20元;当包裹重量为60至90克时
15、收费30元;当包裹重量超过90克时收费40元。请编写一个程序根据包裹重量计算邮费。Select Case语句练习语句练习分析:本题根据包裹的重量来计算包裹的邮寄费。一个输入量为包裹重量,一个输出量为邮寄费。所以用一个文本框接收输入量,一个文本框作为输出,一个按钮实现“计算”功能,一个按钮实现“退出”功能。界面设计:编写代码:IF语句实现 Private Sub Command1_Click()Dim a As Single,b As Integera=Val(Text1.Text)If a=30 Then b=10ElseIf a=60 Then b=20ElseIf a=90 Then b=
16、30 Else b=40End IfText2.Text=bEnd Sub Select case 语句实现 a=Val(Text1.text)Select Case a Case Is=30 b=10 Case 30 to 60 b=20 Case 60 to 90 b=30 Case Else b=40 End Select Text2.text=b 第二节 循环结构 学习要点:掌握DO循环结构掌握For循环控制结构循环的嵌套常用算法概述单击窗体,要求在窗体上显示6行星号&分析:要求显示的信息是每行是由16个星号所构成的字符串,所以可以通过连续6次调用窗体的Print方法实现图形的显示Pr
17、ivate Sub Form_Click()Print*Print*Print*Print*Print*Print*End Subs若要求显示若要求显示10行或更多行这行或更多行这样的信息样的信息s若打印信息的行数要求是由若打印信息的行数要求是由用户决定用户决定J专门用于进行重复操作的语专门用于进行重复操作的语句结构句结构 所谓循环结构,表示在执行语句时,需要对其中的所谓循环结构,表示在执行语句时,需要对其中的某个或某部分语句重复执行多次。对于此类情况可某个或某部分语句重复执行多次。对于此类情况可以利用各种循环结构来实现。以利用各种循环结构来实现。循环结构可以分为循环结构可以分为ForFor循
18、环、循环、Do Do 循环和循环和WhileWhile循环循环语句结构。语句结构。循循循循环环环环ForFor循环循环循环循环Do Do 循环循环循环循环WhileWhile循环循环循环循环ForNextForNextFor EachNextFor EachNext前测型循环前测型循环前测型循环前测型循环后测型循环后测型循环后测型循环后测型循环当型循环当型循环当型循环当型循环直到型循环直到型循环直到型循环直到型循环当型循环当型循环当型循环当型循环直到型循环直到型循环直到型循环直到型循环5.2 循环语句的类型循环语句的类型语法格式如下:For 循环变量=初值 to 终值 step 步长 执行语句
19、 Next 循环变量 ForNext循环循环Truei初值初值;为为负数负数时时,终值终值初值初值。lNext表示循环控制变量取下一个值,表示循环控制变量取下一个值,即:即:i=i+步长步长For循环的循环次数由循环变量的初循环的循环次数由循环变量的初值、终值和步长决定:值、终值和步长决定:Int(终值终值-初值初值)/步长步长)+1循环次数的一般计算公式:Int(终值-初值)/步长)+1例如:J For I=2 to 18 step 3 c=c+1 Next I上述For的循环次数=Int(18-2)/3)+1=6第几次循环I没有进行循环时21528311414517620ForNext语句
20、语句循环次数的两种特殊情况:1.初值、终值和步长表达式中所包含的变量在循环体内被改变,也不会影响循环次数。ForNext语句语句例如:Jc=18 For I=2 to c step 3 c=c+1 Next I 第几次循环cI没有进行循环时2152831141451762018192021222324说明:说明:代码段中虽然变量代码段中虽然变量c c在循环体内改在循环体内改变,但循环控制变量变,但循环控制变量I I的终值依旧为的终值依旧为1818,并未改变,因此循环次数,并未改变,因此循环次数=6=62.当循环变量在循环体内被重新赋值,则会影响和改变循环次数。例如:Jc=18For I=2 t
21、o 18 step 3 c=c+1 I=I+2 Next I说明:说明:循环体中循环控制变量循环体中循环控制变量I I被改变,被改变,循环次数由原来的循环次数由原来的6 6次次变为变为4 4次次。第几次循环cI没有进行循环时2142931441918192021227121722ForNext语句语句ForNext循环循环For循环实现:单击窗体,要求在窗体上显示6行星号&分析:循环体:Print*,循环变量I表示输出行,从1变化到6,即循环变量I的初值为1,终值为6,步长为1,循环次数为6Private Sub Form_Click()Dim I As Integer 定义一个循环变量I来控
22、制输出的行数 当输出行数没有超过6行,就反复执行下面的语句 For I=1 To 6 步长为1,可省略Step 1 Print*Next I 完成I根据步长完成递增,即I=I+1,并返回到For行End Sub习题1.Private Sub Form_Click()For I=7 to 90 step 5 print I Next I End Sub上述程序共执行执行循环体的次数是()A)14 B)15 C)16 D)172.在窗体上放置一个命令按钮,然后编写如下事件过程:Private Sub Command1_Click()x=5 For i=1 to 20 Step 2 x=x+i 5
23、Next i Print x End Sub程序运行后,单击命令按钮,输出结果为()A)21 B)22 C)23 D)24习题3.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()E=1:F=1 For j=1 To 3 E=E+F:F=F+E Next j Print E;F End Sub A)6 6 B)5 8 C)13 21 D)34 55 习题4.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()For j=1 To 15 a=a+j Mod 3 Next j Print a End Sub A)1 B)15
24、 C)90 D)120习题5.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()For j=1 To 3 Print Tab(3*j);(2*j-1)*(2*j-1)Next j Print End Sub A)B)C)D);?若若若若printprint语句后有分号,将如何输出语句后有分号,将如何输出语句后有分号,将如何输出语句后有分号,将如何输出有分号的输出结果有分号的输出结果有分号的输出结果有分号的输出结果习题6.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()For j=1 To 10 a=a+j 3+j M
25、od 3 Next j Print a End Sub A)20 B)25 C)30 D)35习题While循环循环语法格式:While 循环条件 循环体 Wend这种结构使用完全类似于Do-Loop的当型循环(格式1),表示当循环条件为True时,反复执行循环体,直到循环条件为False为止。例如:求例如:求S=1+S=1+(1+21+2)+(1+2+1001+2+100)的值。)的值。程序代码:程序代码:Private Sub Command_Click()Private Sub Command_Click()Dim s as long,n as Integer,k as Integer
26、Dim s as long,n as Integer,k as Integer s=0:n=0:k=1 s=0:n=0:k=1 While k=100 While k=100 n=n+k:s=s+n:k=k+1 n=n+k:s=s+n:k=k+1 Wend Wend Label2.Caption=“1+Label2.Caption=“1+(1+21+2)+(1+2+1001+2+100)=”&s=”&s Do 循环循环Do Do 循环可分为前测型循环和后测型循环两种。循环可分为前测型循环和后测型循环两种。前测型循环结构 语法格式:True循环条件循环条件循环体循环体False 格式1(当型)D
27、o While 循环条件 循环体 LoopFalse循环条件循环条件循环体循环体True 格式2(直到型)Do Until 循环条件 循环体 Loop当型循环是当循环条件为当型循环是当循环条件为TRUE时进入循时进入循环;直到型则是为环;直到型则是为FALSE进入循环。进入循环。-后测型循环结构 语法格式:格式1(当型)Do循环体Loop While 循环条件格式2(直到型)Do循环体Loop Until 循环条件循环条件循环条件循环体循环体TrueFalse循环条件循环条件循环体循环体False True前测型循环是前测型循环是先判断循环条件先判断循环条件,循环体执,循环体执行次数行次数0;
28、后测型循环是后测型循环是先执行循环体先执行循环体,循环,循环体执行次数体执行次数1。Do 循环循环Do 循环示例循环示例单击窗体,要求在窗体上显示6行星号前测型当型循环:Dim i As Integer 定义计数器变量i来记录目前已输出的行数 i=0 Do While i 5 Print*i=i+1 Loop Do Print*i=i+1 Loop while i 5 Val(InputBox(请输入行数:)注意注意:在循环体中循环体中,至少要有一条语句使得循环趋结束,使循环语句在有限的时间内执行完毕,否则将会出现“死循环”。&例:求S=1+(1+2)+(1+2+3+100)的值。编写代码:P
29、rivate Sub Command1_Click()Dim s As Long,n As Integer,k As Integer s=0:n=0:k=1 Do n=n+k 求“小和”,即求s中的每一项的和。s=s+n 求“大和”,即求s的累加和。k=k+1 “大和”的项数(亦即“小和”中的末项值)。Loop While k 100习题1.依次在输入5、4、3、2、1、-1,输出结果是?Private Sub Command_Click()X=0 Do Until x=-1 a=Val(InputBox(“请输入A的值”))b=Val(InputBox(“请输入B的值”))x=Val(Inp
30、utBox(“请输入X的值”))a=a+b+x print a Loop End Sub输出两个结果,分别是输出两个结果,分别是输出两个结果,分别是输出两个结果,分别是12121212和和和和2 2 2 2习题2.依次在输入5、4、3、2、1、-1,输出结果为_ Private Sub Command_Click()X=0 Do Until x=-1 a=Val(InputBox(“请输入A的值”))b=Val(InputBox(“请输入B的值”))x=Val(InputBox(“请输入X的值”))a=a+b+x Loop print a End Sub输出结果输出结果输出结果输出结果只有一个
31、只有一个只有一个只有一个,2 2 2 23.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()s=0 Do s=(s+1)*(s+2)Number=Number+1 Loop Until s=30 Print Number;s End SubA)0 1 B)30 30 C)4 30 D)3 182习题4.运行下列程序,单击窗体,则执行结果是()Private Sub Form_Click()b=1 a=2 Do While b 111 Print a End Sub结果结果:a=101:a=1016.运行下列程序,单击窗体,则执行结果是_ Private Sub Form_Click()s=0 i=1 Do While i=100 If(i 5)*5=i Then s=s+1 i=i+1 End If Loop Print s End Sub 结果结果:死循环死循环习题7.运行下列程序,单击窗体,则执行结果是_ Private Sub Form_Click()s=0 i=1 Do While i=100 If(i 5)*5=i Then s=s+1 End If i=i+1 Loop Print s End Sub 结果结果:s=20:s=20习题
限制150内