vb选择结构

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第3章选择结构主要内容:1:关系运算及关系表达式2:逻辑运算及逻辑表达式3:If语句4:SelectCase语句5:框架、单选按钮、复选框例2.3求三角形面积题目:根据海伦公式计算任意三角形的面积。海伦公式为2/)(,))()((cbatctbtattsPrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingleDimtAsSingleDimsAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)t=(a+b+c)/2s=Sqr(t*(t-a)*(t-b)*(t-c))Text4.Text=sEndSub分析思考上述程序代码是否存在问题?有问题!问题是:用户输入的三个数值是否一定能构成三角形?答案是:不一定三角形三边的关系:任意两边之和大于第三边如何在程序中表示上述判断对应的VB语言描述如下:a+bcAndb+caAndc+ab这是一个逻辑表达式,其中包含了关系运算和逻辑运算关系运算符与关系表达式关系运算符运算符含义举例=等于45=45结果是True大于5060结果是False=大于等于7=14/2结果是True小于catbat结果是False=小于等于16-2=14结果是True不等于3030结果是FalseLike字符串匹配abcLikea*结果是TrueIs对象比较Form1IsForm2结果是False关系运算符与关系表达式说明1)关系运算又称比较运算,是计算参与运算的两个量之间是否满足指定关系,若满足,则关系运算结果为True,或关系表达式的值为True;反之若不满足,关系运算结果为False,或关系表达式的值为False2)关系表达式就是用关系运算符将常量、变量、函数或算术表达式连接起来的式子。3)关系运算符优先级相同关系运算符与关系表达式说明4)数值类型的数据直接比较大小5)字符串类型的数据按其ASCII码值比较。比较时,从两字符串的第一个字符开始逐一比较,第一个字符值大的字符串大,若相同,则比较第二个字符,依次类推,直到得到结果常见字符值的大小规律:空格0…9…A…Z…a…z汉字6)日期型数据看成“yyyymmdd”的8位整数比较大小,即后面的日期大于前面的日期32486597逻辑运算符与逻辑表达式逻辑运算符运算符含义举例Not逻辑非Not(ab)结果是FalseAnd逻辑与34And36结果是FalseOr逻辑或56Or51结果是TrueXor逻辑异或56Xor51结果是FalseEqv逻辑等于abEqvcd结果是TrueImp逻辑蕴涵103Imp1015结果是False逻辑运算符与逻辑表达式说明1)逻辑运算也称布尔运算。运算结果为True或False。其运算的规则如下页逻辑运算真值表所示。其中,a、b表示两个逻辑量2)逻辑表达式就是用逻辑运算符将若干逻辑量连接起来的式子。逻辑量主要是关系表达式,特别的也可以常量、变量、算术表达式。逻辑运算符与逻辑表达式逻辑运算真值表abaAndbaOrbNotaaXorbaEqvbaImpbTrueTrueTrueTrueFalseFalseTrueTrueTrueFalseFalseTrueFalseTrueFalseFalseFalseTrueFalseTrueTrueTrueFalseTrueFalseFalseFalseFalseTrueFalseTrueTrue逻辑运算符与逻辑表达式说明3)逻辑运算符的运算优先级Not→And→Or→Xor→Eqv→Imp4)逻辑表达式的求值逻辑表达式中可能含有逻辑运算、关系运算和算术运算,那么它们的运算优先级如何呢?从高到低:算术运算→关系运算→逻辑运算小测验:计算下列逻辑表达式的值题目:4*22Or2^39AndNot5-42第一步:82Or89AndNot12第二步:TrueOrFalseAndNotTrue第三步:TrueOrFalseAndFalse第四步:TrueOrFalse第五步:True小测验:用VB语言描述下列命题a比b小或者比c小a和b中有一个小于ca和b中只有一个小于ca是奇数a不能被b整除abOracacOrbcaMod2=1aModb0acAndb=cOrbcAnda=c小测验写出数学不等式2≤x≤3对应的VB表达式错误:2=x=3在VB中,相当于(2=x)=3,其值固定为True原因:所有非0数可视为True,0视为False;反之,True视为-1,False视为0正解:x=2Andx=3写出下列表达式的值352531其值为:True其值为:False选择结构可将例2.3部分改写为:如果a+bcAndb+caAndc+ab那么计算t计算s输出s否则显示信息输入有误结束上述文字描述转化为VB语句为Ifa+bcAndb+caAndc+abThent=(a+b+c)/2s=Sqr(t*(t-a)*(t-b)*(t-c))Text4.Text=sElsePrint输入有误!EndIf上述我们称其为If语句,它是选择结构语句选择结构在执行选择结构语句时,需要先对某个条件进行判断,再根据判断结果为真或为假而执行相应分支的语句好像路人在岔路口时面临选择的情况,故名选择结构,又名分支结构特点多次执行该程序时,两个分支都有可能被执行到;但每一次执行时,只能有一个分支被执行条件语句序列A语句序列BTrueFalse语句X语句YIf语句格式一:If条件Then语句1[Else语句2]格式二:If条件Then语句序列1[Else语句序列2]EndIf行If语句块If语句说明1)行If是所有语句都写在一行上,故名。它没有EndIf部分;块If是多行书写格式,故名,EndIf不能缺少2)条件部分通常是关系表达式或逻辑表达式,并统称它们为条件表达式。特别的,也可以是算术表达式,此时非0值为真,0为假。3)执行If语句时,首先测试条件表达式的值,然后根据其值来选择Then或Else部分的分支执行,最后执行If语句后面的语句。4)Else部分可以省略,表示当条件不成立时不执行任何语句5)如果分支中语句只有一句,则通常写成行If语句;若分支中语句较多,则写成块If语句小测验题目:执行下列程序段后,变量X的值是多少DimxAsInteger,yAsIntegerx=100y=30IfxyThenx=x-yElsex=x+y变量x的值为130题目:下列程序段运行的结果是DimAAsInteger,IAsIntegerA=75IfA60ThenI=1IfA70ThenI=2IfA80ThenI=3IfA90ThenI=4PrintI=;I运行结果是:I=2例3.1求三个数中最大数题目:输入三个数a、b、c,求出它们中间的最大值。程序运行界面如下图所示。分析思考(画出流程图)程序源代码PrivateSubCommand1_Click()DimaAsInteger,bAsIntegerDimcAsInteger,mAsIntegera=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)IfabThenm=a'm用来存放较大值Elsem=bEndIfIfcmThenm=cText4.Text=mEndSub思考:如何求4个数的最大值?5个数?N个数?例3.2三个数排序题目:输入三个数,将它们从大到小排序。程序界面如下图所示:分析思考(画出流程图)程序源代码PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,tAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)IfabThen'本If语句实现a=bt=a:a=b:b=tEndIfIfacThen'本If语句实现a=ct=a:a=c:c=tEndIfIfbcThen'本If语句实现b=ct=b:b=c:c=tEndIfText4.Text=a&,&b&,&cEndSub例3.3分段函数题目:有如下数学函数要求输入x,输出相应的y。分析思考(画出流程图)y=1(x0)0(x=0)-1(x0)程序源代码PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx0Theny=1ElseIfx=0Theny=0Elsey=-1EndIfEndIfText2.Text=yEndSubIf嵌套:在If语句的Then部分或Else部分包含其他If语句带有ElseIf的If语句当出现多层If语句嵌套时,程序会显得冗长,可以使用带有ElseIf的If语句来处理。格式如下:If条件1Then语句序列1ElseIf条件2Then语句序列2…[Else其他语句序列]EndIf说明1)格式中,ElseIf子句部分可以有任意多个,Else子句部分可以省略,若有则必须在所有ElseIf子句之后,表示无条件执行2)执行该If语句时,首先测试条件1,若成立,则执行对应的Then部分语句,然后跳出If语句,继续执行EndIf后面的语句;反之,若条件1不成立,则测试条件2,如其成立则执行对应语句,若不成立则测试条件3,依此类推。若所有条件都不成立,则执行Else部分语句改写例3.3PrivateSubCommand1_Click()DimxAsSingle,yAsSinglex=Val(Text1.Text)Ifx0Theny=1ElseIfx=0Theny=0ElseIfx0Theny=-1EndIfText2.Text=yEndSub或者写为Ifx0Theny=1ElseIfx=0Theny=0Elsey=-1EndIf分析思考X的取值情况Y=-1Y=0Y=10=00说明上页的流程图其实有三个分支。其实很多实际问题中不是仅仅包括两个分支,而是存在多分支的选择。例如百分制成绩转换为五级制通常,双分支问题用If语句处理;三分支问题用If语句嵌套处理;多分支问题则用带有ElseIf子句的If语句处理。此外,还可以用SelectCase语句处理。SelectCase语句格式SelectCase测试表达式Case值1语句序列1[Case值2语句序列2]……[CaseElse其他语句序列]EndSelect说明1)测试表达式可以是任何变量、常量、算术表达式、关系表达式、逻辑表达式。2)以Case开头的部分称为Case子句,它举出了测试条件可能的取值或取值范围,以及对应的需要执行的语句序列。Case子句列举值的方式有三种Case值1,值2,…如Case1,3,5,7Case值1To值2如Case1To7CaseIs关系运算符值1如CaseIs7也可以在方式1中包含方式2和方式3,如Case1,2To6,Is9注意:各Case子句所举值范围不能有重复!说明3)Case子句的个数不确定,根据实际问题而定。CaseElse可有可无,若有则一定放在整个SelectCase语句的最后,即EndSelect的前面,表示其他未列出的测试条件取值。4)执行时,先计算测试条件的值,然后将该值依次与每个Case子句列举的值进行比较,如果符合某个Case子句列举的值,就执行该Case子句的对应的语句序列,然后跳出Select语句,执行EndSelect后面的语句。如果没有相符合的Case值,则执行CaseElse中的语句序列,然后跳出Select语句。如果也没有CaseElse部分,则不执行任何语句,跳出Select语句。用Select语句改写例3.

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功