




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4.2选择结构程序设计有些实际问题中,往往需要根据条件成立与否,决定程序的执行方向,在不同的条件下,进行不同的处理。使用顺序结构是无法解决这一问题的,需要用选择结构。即:
单行结构条件语句If…Then…Else…块结构条件语句If…Then…EndIf多分支选择语句SelectCase…EndSelect
以上语句又统称为条件语句,其功能都是根据条件或表达式的值有选择地执行一组语句。一、If语句1、单行结构的If……Then……Else语句格式1:
If<条件>Then<语句体1>[Else<语句体2>]功能:如果<条件>成立,则执行<语句体1>,否则执行<语句体2>。<条件>可以是关系表达式、逻辑表达式、数值表达式或字符串表达式。
对于数值表达式,VB将0作为False、非0作为True处理;对于字符串表达式,VB只允许包含数字的字符串,当字符串中的数字值为0时,则认为是False,否则认为是True。
<语句体1>和<语句体2>可以有多条语句,各语句之间用冒号隔开。例4-1:N=5A=3B=9IfN>0ThenA=A+B:B=B+AElseA=A-B:B=B-APRINTA,B
可以没有Else部分,但必须有<语句体1>。
例如:IfX<>"aaa"ThenPrintX注意:1)单行结构条件语句应作为一条语句书写。如果语句太长需要换行,必须在换行处使用续行符号,即一个空格跟一个下划线。
2)无论条件是否成立,单行结构条件语句的出口都是本条件语句之后的语句。
IfX>=0ThenX=1+XElseX=5-XY=1-XPrint“Y=“;Y
当X=4时,条件X>0成立,执行Then之后的语句X=1+X,使X的值成为5,然后执行条件语句之后的语句Y=1-X,使Y的值成为-4,所以输出Y=-4。
当X=-4时,条件X>=0不成立,执行Else之后的语句X=5-X,使X的值成为9,然后同样执行条件语句之后的语句Y=1-X,使Y的值成为-8,所以输出Y=-8。即无论条件X>=0是否成立,都要执行If语句后面的语句Y=1-X。3)单行结构条件语句可以嵌套,也就是说,在<语句体1>或<语句体2>中可以包含另外一个单行结构条件语句。例4-2:1(X>0)Y=0(X=0)-1(X<0)IFX>=0THENIFX>0THENY=1ELSEY=0ELSE_Y=-12、块结构双分支条件语句If…Then…Else语句
格式1:If<条件>Then<语句体1>[Else<语句体2>]ENDIf
如果<条件>成立,则执行<语句体1>,否则执行<语句体2>。
FT条件表达式语句体1
If...Then...Else结构流程图语句体2 [例4-3]判断文本框中输入的是否是数值型数据
判断”按钮的单击事件为:PrivateSubcmdjudge_Click()IfIsNumeric(Text1)ThenMsgBox"是数字"ElseMsgBox"不是数字"EndIfEndSub书中例4-5:输入三个数,求其中最大数.注:块IF结构可以嵌套完整的块IF结构.
1(X>0)例如:Y=0(X=0)-1(X<0)IFX>0THEN Y=1 ELSE
IFX=0THEN Y=0ELSE Y=-1ENDIF ENDIF3、块结构多分支条件语句If…Then…ElseIf语句格式:If<条件1>Then[<语句组1>][ElseIf<条件2>Then[<语句组2>]]…[Elself<条件N>Then[<语句组n>]][Else[<其他语句组>]]EndIf条件1语句组1条件2语句组2条件n语句组n其他语句组…功能:执行该块结构条件语句时,首先判断<条件1>是否成立,若成立,则执行<语句组1>,若不成立,则继续判断ElseIf子句后的<条件2>是否成立,若成立,则执行<语句组2>,否则,继续判断以下的各个条件,依此类推。如果<条件1>到<条件N>都不成立,则执行Else子句后面的<其他语句组>。当某个条件成立而执行了相应的语句组后,将不再继续往下判断其他条件,而直接退出块结构,执行EndIf之后的语句。[例4-4]求分段函数
PrivateSubcmdcul_Click() DimxAsDouble,yAsDouble x=Val(Text1.Text) Ifx>10Then y=3*Cos(x)-x^2+9 ElseIfx>3Then y=Sin(x)-2*x Else y=9 EndIf Text2.Text=yEndSub例4-4中的代码可以改写为: Ifx>10Then'x>10y=3*Cos(x)-x^2+9 ElseIfx>3Then'3<x≤10 y=Sin(x)-2*x Else'x≤3 y=9 EndIf EndIf其中,Else子句中又包含了一个完整的If语句二、多分支条件选择语句(SelectCase)
格式: SelectCase<测试表达式> Case表达式列表1 <语句块1> Case表达式列表2 <语句块2> …… [CaseElse <语句块n+1>] EndSelect
根据<测试表达式>的值,按顺序匹配Case后的表达式表,如果匹配成功,则执行该Case下的语句组,然后转到EndSelect语句之后继续执行;如果<测试表达式>的值与各表达式表都不匹配,则执行CaseElse之后的<语句组n>,再转到EndSelect语句之后继续执行。<测试表达式>可以是任何数值表达式或字符表达式。Case后的表达式表可以有如下形式之一:
1)<表达式1>[,<表达式2>]…如:Casel,3,5表示<测试表达式>的值为1或3或5时将执行该Case语句之后的语句组。
2)<表达式1>TO<表达式2>
如:Casel0TO30表示<测试表达式>的值在10到30之间(包括10和30)时将执行该Case语句之后的语句组。
又如:Case“A”TO“Z”表示<测试表达式>的值在“A”到“Z”之间(包括“A”和“Z”)时将执行该Case语句之后的语句组。
3)Is<关系运算符><表达式>如:CaseIs>=10表示<测试表达式>的值大于或等于10时将执行该Case语句之后的语句组。
以上三种方式可以同时出现在同一个Case语句之后,各项之间用逗号隔开。
如:Casel,3,10T020,Is<0表示<测试表达式>的值为1或3,或在10到20之间(包括10和20),或小于0时将执行该Case语句之后的语句组。设从文本框Textl输人X的值,单击命令按钮Commandl计算Y的值,结果显示于文本Text2中:PrivateSubCommand1_Click()-1x<0X=Val(Text1.Text)Y=0x=0SelectCaseX1x>0CaseIs<0Y=-1Case0‘CaseIs=0Y=0CaseIs>0Y=1EndSelectText2.Text=YEndSub例4-5:求符号函数y的值例4-6:将输入的百分制成绩转换为等级制输出。注意:1)<测试表达式>的类型应与Case后的表达式类型一致。2)不可以在Case后的表达式中使用<测试表达式>中的变量。3)<测试表达式>只能是一个变量或表达式,而不能是变量表或表达式表。4)不要在Case后直接使用布尔运算符来表示条件,例如,要表示条件0<X<100,不能写成:SelectCaseXCaseX>0AndX<100…EndSelect对于较复杂的条件,可以用块If语句来实现,而有些条件完全可以转换成Case语句允许的几种形式之一.以上三种条件结构都能解决需要多分支处理的问题,但根据不同的要求选择适当的结构进行编程,可以简化编程,使程序结构更加清楚,便于阅读和查错。对于简单的两个分支的情况,使用单行结构条件语句就比较方便;使用块结构条件语句可以处理分支较多,条件较复杂的情况;而多分支选择结构更适合于对单一表达式进行多种条件判断的情况。编程时,使用条件结构语句尤其要注意两个问题,一是条件的书写,二是不同语句结构之间的格式区别。例4-7判断用户输入的用户名和密码是否正确。PrivateSubCommand1_Click()IfText1.Text="王刚"ThenIfUCase(Text2.Text)="ABCDE"ThenMsgBox"口令正确!"ElseBeepMsgBox"口令错误!"EndEndIfElseBeepMsgBox"用户名错误!"EndEndIfPrintPrintSpc(20);"欢迎使用!"EndSub例4-8:运费计算.规则如下:50km以内:运费=运量(t)*距离(km)*1(元)50~100km:运费=运量(t)*距离(km)*0.8(元)101~300km:运费=运量(t)*距离(km)*0.6(元)300km以上:运费=运量(t)*距离(km)*0.5(元)PrivateSubCommand2_Click()Dimy1,j1,yfAsSingley1=Text1.Textj1=Text2.TextSelectCasej1CaseIs<50yf=y1*j1*1Case50To100yf=y1*j1*0.8Case101To300yf=y1*j1*0.6CaseIs>300yf=y1*j1*0.5EndSelectText3.Text=CStr(yf)EndSubPrivateSubCommand1_Click()Text1.Text=""Text2.Text=""Text3.Text=""EndSubPrivateSubCommand3_Click()EndEndSub [例6-4]简单运算器 本题中运算符是由下拉列表框提供给用户选择,共有+、-、×、÷四个选项 参考界面如左图所示,各
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国新型乳化剂行业深度研究分析报告
- 塑料沙袋行业深度研究分析报告(2024-2030版)
- 2025年中国PP管材行业市场深度评估及投资战略规划报告
- 2025年中国数控裁剪机市场运行态势及行业发展前景预测报告
- 2024年南通市海门区康复医疗中心招聘考试真题
- 直方图培训课件
- 中国弧型板行业市场发展前景及发展趋势与投资战略研究报告(2024-2030)
- 2025-2030年中国水泥输送管行业深度研究分析报告
- 云南省耿马自治县2022-2023学年七年级下册地理期末试卷(含答案)
- 病媒防制培训课件
- 2025年包养合同模板
- 《SPE固相萃取技术》课件
- 高中数学复习 导数压轴大题归类 (原卷版)
- 环境友好型飞机内饰-深度研究
- 《crrt低血压的处理》课件
- GB/T 23694-2024风险管理术语
- 2025年中国邮政集团山西省分公司招聘笔试参考题库含答案解析
- 马诗听评课记录范文
- 辽宁省抚顺市抚顺县2024-2025学年七年级上学期期末地理试卷(含答案)
- 国家开放大学法律事务专科《民法学(2)》期末纸质考试总题库2025春期考试版
- 定额〔2025〕3号文-关于发布2023版西藏地区电网工程概预算定额价格水平调整的通知
评论
0/150
提交评论