您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > vb 选择结构程序设计
第4章选择结构程序设计第4章选择结构程序设计(分支结构)选择结构是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特点是根据所给定的条件为真(即条件成立)与否,而决定从各实际可能的不同分支中执行某一分支的相应操作,并且任何情况下总有:“无论分支多寡,必择其一;纵然分支众多,仅选其一”。4.1选择结构程序设计的概念在VB中,实现选择结构的语句有:If...Then...Else、If...Then...ElseIf、SelectCase语句。这些语句又称为条件语句,条件语句的功能都是根据表达式的值有选择地执行一组语句。4.2条件表达式在条件语句中作为判断依据的表达式称为“条件表达式”,条件表达式的取值为布尔值:真(True)或假(False)。在VB中,True的值等于–1,False的值等于0。根据“条件”的简单或者复杂程度,条件表达式可以分为两类:关系表达式以及布尔表达式。4.2.1关系运算符与关系表达式关系表达式是指用关系运算符将两个表达式连接起来的式子(例如a+b0),关系运算符又称比较运算符,用来对两个表达式的值进行比较,比较的结果是一个布尔值(True或False),这个结果就是关系表达式的值。1.关系运算符VB提供的关系运算符有以下6种,见表4-1。表4-1关系运算符运算符名称例子说明小于34值为:True,强制转换为数值型=小于或等于3=4值为:True大于0(10)值为:True,强制转换为数值型=大于或等于aa=ab值为:False=等于1=True值为:False,强制转换为数值型不等于45值为:True2.关系表达式关系表达式的格式为〈表达式1〉〈关系运算符〉〈表达式2〉[〈关系运算符〉〈表达式3〉…]关系表达式的运算次序为:先分别求出关系运算符两侧表达式的值,然后再把二者进行比较,二者的关系若与关系运算符指示的一样,则关系运算的结果为真True,否则为假False。4.2.2布尔运算符与布尔表达式对于较为复杂的条件,必须使用布尔表达式。布尔表达式是指用布尔运算符连接若干关系表达式或布尔值而成的式子。布尔表达式的值也是一个布尔值。VB提供的布尔运算符有:And、Or、Not、Xor、Eqv、Imp等6种,其中常用的为前3种,见表4-2。表4-2布尔运算符说明:1)布尔运算符两侧若有数值数据出现,则将数值数据转换为二进制数(补码形式)进行按位运算。此时,1为真,0为假。2)布尔运算真值表见表4-3。运算符名称例子说明And与(45)And(34)值为:False,两个表达式的值均为真,结果才为真,否则为假Or或(45)Or(34)值为:True,两个表达式中只要有一个值为真,结果就为真,只有两个表达式的值均为假,结果才为假Not非Not(10)值为:False,由真变假或由假变真,进行取“反”操作表4-3布尔运算真值表abaAndbaOrbNotaTrueTrueTrueTrueFalseTrueFalseFalseTrueFalseFalseTrueFalseTrueTrueFalseFalseFalseFalseTrueNot由真变假,由假变真。And对两个布尔值进行比较,如果两个值均为真,则结果为真,否则为假。Or对两个布尔值进行比较,如果其中一个值为真,则结果为真,只有两个值都为假时,结果才为假。运算布尔表达式时,先运算关系表达式,再运算布尔表达式。逻辑运算的运算规则ABNotAAAndBAorBAXorBTTFTTFTFFFTTFTTFTTFFTFFF按二进制进行的逻辑运算规则ABNotAAAndBAorBAXorB110110100011011011001000Print12and8=81100and1000=1000Print12or16=281100and10000=11100Print12Xor7=111100Xor111=1011Print11Xor7=121011xor111=1100注:先把数字转换为二进制数,再进行运算。(AXorB)XorB=A4.2.3运算符的优先顺序在一个表达式中进行多种操作时,VB会按一定的顺序进行求值,称这个顺序为运算符的优先顺序。运算符的优先顺序见表4-4。表4-4运算符的优先顺序优先顺序运算符类型运算符1算术运算符^(指数运算)2–(负数)3*、/(乘法和除法)4\(整数除法)5Mod(求模运算)6+、–(加法和减法)7字符串运算符&(字符串连接)8关系运算符=、、、、=、=9布尔运算符Not10And11Or【例4-1】设变量x=4,y=–1,a=7.5,b=–6.2,求表达式x+ya+bAndNotyb的值。分析:将按下面步骤计算:1)先作算术运算:3–1.3AndNotyb2)再作关系运算:TrueAndNotFalse3)作非运算:TrueAndTrue4)最后得:True【例4-2】判断某个年份是闰年的根据是年份数满足下述条件之一。条件1:能被4整除,但不能被100整除的年份都是闰年。条件2:能被100整除,又能被400整除的年份都是闰年。设变量y表示年份,写出判断y是否闰年的布尔表达式。解:判断y是否满足条件1的布尔表达式是yMod4=0AndyMod1000判断y是否满足条件2的布尔表达式是yMod100=0AndyMod400=0两者取“或”,即得判断闰年的布尔表达式:yMod4=0AndyMod1000OryMod100=0AndyMod400=04.3单条件选择语句IF单条件选择结构是最常用的双分支选择结构,其特点是:所给定条件(条件表达式)的值如果为真,则执行a1块;如果为假则执行a2块。其一般形式如图4-1所示。图4-1单条件选择结构的流程图实现单条件选择结构的语句是If语句,在VB中有行If语句和块If语句两种。如果条件{该(选择)条件成立吗?}真a1块{条件成立时所执行的操作块,它一般为非空块}假a2块{条件不成立时所执行的操作块,它可为空块}4.3.1单行结构条件语句IF…THEN…ELSE单行If语句的语法格式为If〈条件〉Then[〈语句序列1〉][Else〈语句序列2〉]说明:1)〈条件〉可以是关系表达式、布尔表达式或数值表达式。如果以数值表达式作条件,则非0值为真,0为假。2)如果没有Else子句,〈语句序列1〉为必要参数,在〈条件〉为True时执行。【例4-3】输入x,计算y的值。其中:)0(21)0(1xxxxy流程图4-2所示。图4-2计算y值的流程图根据流程图,写出命令按钮Command1的单击(Click)事件代码为:输入x{给出x的值}如果x=0真y←1+x{x=0时的y值}假y←1–2*x{x0时的y值}输出y{输出y的值}图4-3计算函数的值PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx=0Theny=1+xElsey=1–2*xText2.Text=yEndSub【例4-4】学校对学习成绩优良的学生进行奖励,获奖的条件如下:1)所考5门课的总分超过450分;2)每门课的成绩都在88分以上;3)前3门(主课)的成绩都在95分以上,其他两门(非主课)的成绩都在80分以上。输入某学生5门课的成绩s1、s2、s3、s4、s5,判断他是否能够获奖。分析:依题意列出3个条件表达式:1)s1+s2+s3+s4+s5=4502)s1=88ANDs2=88ANDs3=88ANDs4=88ANDs5=883)s1=95ANDs2=95ANDs3=95ANDs4=80ANDs5=80图4-4判断能否获奖命令按钮Command1的单击(Click)事件代码为:PrivateSubCommand1_Click()Dims1AsSingle,s2AsSingle,s3AsSingle,s4AsSingle,s5AsSingleDimpAsStrings1=Val(InputBox(请输入第1门课的成绩:,输入框,0))s2=Val(InputBox(请输入第2门课的成绩:,输入框,0))s3=Val(InputBox(请输入第3门课的成绩:,输入框,0))s4=Val(InputBox(请输入第4门课的成绩:,输入框,0))s5=Val(InputBox(请输入第5门课的成绩:,输入框,0))t1=(s1+s2+s3+s4+s5=450)t2=(s1=88Ands2=88Ands3=88Ands4=88Ands5=88)t3=(s1=95Ands2=95Ands3=95Ands4=80Ands5=80)Ift1Ort2Ort3Thenp=可以获奖!Elsep=不能获奖!p=Str(s1)&,&Str(s2)&,&Str(s3)&,&Str(s4)&,&Str(s5)&Chr(13)&pLabel1.Caption=该生五门课的成绩分别是:&Chr(13)&pEndSub【例4-5】利用输入框函数输入3个不同的数,选出其中最大的数。命令按钮Command1的单击(Click)事件代码为:PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSinglea=Val(InputBox(请输入第1个数:,输入框,0))b=Val(InputBox(请输入第2个数:,输入框,0))c=Val(InputBox(请输入第3个数:,输入框,0))p=&a&,&b&,&cp=p&三个数中最大的数是:IfabAndacThenp=p&aIfbaAndbcThenp=p&bIfcaAndcbThenp=p&cLabel1.Caption=pEndSub图4-5求3个数中最大数4.3.2使用IIF函数还可以使用IIf函数来实现一些比较简单的选择结构。IIf函数的语法结构为:IIf(〈条件表达式〉,〈真部分〉,〈假部分〉)语句y=IIf(〈条件表达式〉,〈真部分〉,〈假部分〉)相当于:If〈条件表达式〉theny=〈真部分〉Elsey=〈假部分〉【例4-6】例4-3中命令按钮Command1的单击(Click)事件代码可以改为:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)y=IIf(x=0,1+x,1–2*x)Text2.Text=yEndSub4.3.3块结构条件语句IF…THEN…ELSE…ENDIFVB提供的块If语句,将一个选择结构用多个语句行来实现。其语法结构为:If〈条件1〉Then[〈语句序列1〉][Else[〈语句序列2〉]]EndIf在块形式中,If语句必须是第1行语句。If块必须以一个EndIf语句结束。【例4-7】将例4-3中命令按钮Command1的单击(Click)事件代码改为多行If语句:PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx=0Theny=1+xElsey=1–2*xEndIfText2.Text=yEndSub4.3.4IF语句的嵌套1.IF语句的嵌套如果在If语句中操作块a1块(语句序列1)或a2块(语句序列2)本身又是一个If语句,则称为If语句的嵌套。If语句的嵌套If表达式1thenIf表达式1thenif表达式2then语句组1if表达式3thenElse语句组1if表达式2thenElse语句组2语句组2Elseif表达式3thenEndif语句组3ElseElseif表达式4then语句组3语句组4EndifElse语句组4语句组5EndifEndifEndif【例4-8】铁路托运行李,从甲地到乙地,
本文标题:vb 选择结构程序设计
链接地址:https://www.777doc.com/doc-4006422 .html