您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 第4.2章 选择结构程序设计
第4章程序控制结构与过程4.2选择结构程序设计有些实际问题中,往往需要根据条件成立与否,决定程序的执行方向,在不同的条件下,进行不同的处理。使用顺序结构是无法解决这一问题的,需要用选择结构。单行结构条件语句If…Then…Else…块结构条件语句If…Then…EndIf多分支选择语句SelectCase…EndSelect以上语句又统称为条件语句,其功能都是根据条件或表达式的值有选择地执行一组语句。一、If语句1、单行结构的If……Then……Else语句格式1:功能:如果条件成立,则执行语句序列1,否则执行语句序列2。条件可以是关系表达式、逻辑表达式、数值表达式或字符串表达式。对于数值表达式,VB将0作为False、非0作为True处理;对于字符串表达式,VB只允许包含数字的字符串,当字符串中的数字值为0时,则认为是False,否则认为是True。语句组1和语句组2可以有多条语句,各语句之间用冒号隔开。单行If语句必须在一行内写完。If条件Then语句序列1[Else语句序列2][例4-4]输入一个数,求其绝对值。运行界面如图所示。方法一:PrivateSubCommand1_Click()DimXAsSingle,YAsSingleX=Val(Text1.Text)IfX=0ThenY=XElseY=-XText2.Text=YEndSub方法二:PrivateSubCommand1-Cliok()DimXASSingleX=Val(Text1.Text)IfX0ThenX=-XText2.Text=XEndSub单行结构条件语句可以嵌套,也就是说,在语句序列1或语句序列2中可以包含另外一个单行结构条件语句。例:1(X0)Y=0(X=0)-1(X0)IFX=0THENIFX0THENY=1ELSEY=0ELSE_ELSEY=-1续行符2、块结构双分支条件语句If…Then…Else语句TF语句体2条件表达式语句体1If...Then...Else结构流程图功能:如果条件成立,则执行语句组1,否则执行语句组2。格式1:If条件Then语句体1[Else语句体2]ENDIfPrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,xAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)Ifa=bThenx=aElsex=bEndIfIfxcThenx=cEndIfText4.Text=xEndSub[例4-5]:输入三个数,求其中最大数.输入处理输出a=bx=bx=axcx=c输出x输入a,b,c[例4-6]输入三个不同数,将它们从大到小排序。aba与b互换aca与c互换输出a,b,c输入a,b,cbcb与c互换分析:t=aa=bb=tLabel4.caption=“排序结果为”&Str(a)&Str(b)&Str(c)[例4-6]输入三个不同数,将它们从大到小排序。aba与b互换aca与c互换输出a,b,c输入a,b,cbcb与c互换PrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,tAsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)IfabThent=aa=bb=tEndIfIfacThent=aa=cc=tEndIfIfbcThent=bb=cc=tEndIfLabel4.Caption=排序结果为:&Str(a)&Str(b)&Str(c)EndSub输入处理3、块结构多分支条件语句If…Then…ElseIf语句格式:If条件1Then[语句组1]ElseIf条件2Then[语句组2]…Elself条件NThen[语句组n][Else[其他语句组]]EndIf条件1语句组1条件2语句组2条件n语句组n其他语句组…功能:实现多分支选择[例4-7]求一元二次方程ax2+bx+c=0的根。d0有2不等实根d=0有2相等实根有2复根d=b*b-4*a*c分析:d0有2不等实根d=0有2相等实根有2复根d=b*b-4*a*cPrivateSubCommand1_Click()DimaAsSingle,bAsSingle,cAsSingle,dAsSingleDimx1AsSingle,x2AsSinglea=Val(Text1.Text)b=Val(Text2.Text)c=Val(Text3.Text)d=b*b-4*a*cIfd0ThenX1=(-b+Sqr(d))/(2*a)X2=(-b-Sqr(d))/(2*a)Text4.Text=Format(X1,####.##)'保留两位小数Text5.Text=Format(X2,####.##)ElseIfd=0Then'有重根X1=-b/(2*a)Text4.Text=Format(X1,####.##)Text5.Text=Fomat(x1,”####.##)Else'复根X1=-b/(2*a)X2=Sqr(-d)/(2*a)Text4.Text=Format(X1,####.##)&+&Format(X2,####.##)&iText5.Text=Format(X1,####.##)&-&Format(X2,####.##)&iEndIfEndSubIf条件1ThenIf条件ThenIf条件Then…………ElseEndIfIf条件ThenElse…………EndIfEndIfEndIf二、If语句的嵌套If语句的嵌套指的是在If或Else后的语句体中又包含If语句。If条件ThenElseENDIf语句体1语句体2又包含if语句例如:IFX0THENY=1ELSEIFX=0THENY=0ELSEY=-1ENDIFENDIF[例4-8]某书店为了促销,采用购书打折扣的销售办法,每位顾客一次购书:在100元以上200元以下者,按九折优惠;在200元及以上300元以下者,按八五折优惠;在300元及以上者,按八折优惠;编写程序,输入购书款数,计算输出优惠价。Y=分析:设购书款数为X元,优惠价为Y元,则:X(X≤100)0.9*X(100X200)0.85*X(200≤X300)0.8*X(X≥300)PrivateSubCommand1_Click()DimXAsSingle,YAsSingleX=Val(Text1.Text)IfX=100ThenY=XElseIfX200ThenY=0.9*XElseIfX300ThenY=0.85*XElseY=0.8*XEndIfEndIfEndIfText2.Text=YEndSub三、多分支条件选择语句(SelectCase)格式:SelectCase测试表达式Case表达式列表1语句块1Case表达式列表2语句块2……[CaseElse语句块n+1]EndSelect功能:根据测试表达式的值,按顺序匹配Case后的表达式表,如果匹配成功,则执行该Case下的语句组,然后转到EndSelect语句之后继续执行;如果测试表达式的值与各表达式表都不匹配,则执行CaseElse之后的语句组n,再转到EndSelect语句之后继续执行。测试表达式可以是任何数值表达式或字符表达式,case的三种形式:1)表达式1[,表达式2]…如:Casel,3,52)表达式1TO表达式2如:Casel0TO30Case“A”TO“Z”3)Is关系运算符表达式如:CaseIs=10以上三种方式可以同时出现在同一个Case语句之后,各项之间用逗号隔开。如:Casel,3,10T020,Is0PrivateSubCommand1_Click()DimXASSingle,YASSingleX=Val(Text1.Text)SelectCaseXCaseIs=100Y=XCaseIs200Y=0.9*XCaseIs300Y=0.85*XCaseElseY=0.8*XEndSelectText2.Text=YEndSub[例4-8]方法二四、IIf函数格式:IIf(条件表达式,条件为True时的值,条件为False时的值)例:iif(ab,a,b):返回a、b中较大值例:PrivateSubCommand1_Click()IfText1.Text=王刚ThenIfUCase(Text2.Text)=ABCDEThenMsgBox口令正确!ElseBeepMsgBox口令错误!EndEndIfElseBeepMsgBox用户名错误!EndEndIfPrintPrintSpc(20);欢迎使用!EndSub
本文标题:第4.2章 选择结构程序设计
链接地址:https://www.777doc.com/doc-3471571 .html