选择结构程序设计_第1页
选择结构程序设计_第2页
选择结构程序设计_第3页
选择结构程序设计_第4页
选择结构程序设计_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第7章选择结构程序设计 学习重点 If语句 IIf函数 Switch函数 SelectCase语句的格式与使用 If语句的嵌套使用 掌握常用的选择结构算法 本章内容 7 1If语句7 2SelectCase语句7 3基本算法及应用7 4其他应用举例本章小结 引言 分支结构 7 1If语句 7 1 1If Then 结构7 1 2If Then Else 结构7 1 3If Then ElseIf 结构7 1 4If语句的嵌套7 1 5与If语句有关的函数 注1 条件表达式的值为True或False 一般是逻辑或关系表达式 也可以是算术表达式 转换为逻辑值 7 1 1If Then 结构 两种格式 格式1 块形式IfThen语句体EndIf 格式2 单行形式IfThen语句体 注2 当条件为True时执行语句体 否则执行If语句的下一条语句 注3 语句体中可以是多条语句 当采用格式2时 所有的语句必须写在一行 用冒号隔开语句体中的语句 7 1 1If Then 结构 例 已知有两数x y 编程使x中存放较大的数分析 如果x y 则不需要做处理如果x y 则做交换处理实现 Ifx yThentemp xx yy tempEndIf用格式2描述 Ifx yThentemp x x y y temp 特别注意 块结构时If和EndIf成对出现 7 1 1If Then 结构 例7 1电子闹钟设计 主要利用文本框 按钮 计时器控件实现闹钟功能 例7 1 程序代码如下 PrivateSubCommand1 Click Timer1 Enabled NotTimer1 Enabled 用Not运算进行开关控制EndSubPrivateSubTimer1 Timer DimdAsDated Text1 TextIfHour Time Hour d AndMinute Time Minute d ThenBeep 到达时间后发声EndSub 功能 连续1分钟响铃 60次 等价于 IfHour Time Hour d AndMinute Time Minute d ThenBeepEndIf 7 1 2If Then Else 结构 两种格式 格式1 IfThen语句体1Else语句体2EndIf 格式2 IfThen语句体1Else语句体2 注 当条件为True时执行语句体1 否则执行语句体2 例7 2已知x 求 程序代码如下 PrivateSubCmdCul Click DimxAsSingle yAsSinglex Val txtX Text 第1个文本框的名称是txtXIfx 0ThenMsgBox x不能小于0 Elsey Sqr x txtY Text Str y 第2个文本框的名称是txtYEndIfEndSub 等价于 Ifx 0ThenMsgBox x不能小于0 Elsey Sqr x txtY Text Str y 7 1 3If Then ElseIf 结构 IfThen语句体1ElseIfThen语句体2 Else语句体n 1 EndIf 格式 7 1 3If Then ElseIf 结构 判断的顺序为表达式1 表达式2 只有当表达式1为False时才判断表达式2 当表达式1和表达式2都为False时 才判断表达式3 程序执行语句体n 1的条件为前n个表达式均为False 7 1 3If Then ElseIf 结构 例 已知变量ch中存放了一个字符 判断该字符是字母字符 数字字符 空格还是其它字符 分析 字母字符 ch a Andch A Andch 0 Andch 9 空格字符 ch 实现 Ifch a Andch A Andch 0 Andch 9 ThenPrint 数字字符 ElseIfch ThenPrint 空格 ElsePrint 其他字符 EndIf 7 1 3If Then ElseIf 结构 例7 3旅客乘车旅行 可免费携带30公斤行李 超过30公斤的部分每公斤需支付托运费10元 超过50公斤部分则每公斤需支付20元托运费 请编程根据每位旅客行李的重量计算其应付的行李托运费 例7 3 此分段函数用程序代码表示如下 PrivateSubCommand1 Click DimxAsSingle yAsSinglex Val Text1 Text Ifx50y x 50 20 20 10EndIfText2 Text yEndSub 能否写成 可以 但Else已经包含了x 30的信息 7 1 4If语句的嵌套 If语句中又包含If语句在Then子句或Else子句的语句体中包含完整的一条If语句如 Ifx yThenPrintx yElseIfx yThenPrintx yElsePrintx yEndIfEndIf 7 1 4If语句的嵌套 注1 If语句的完整性 即内层If语句必须完整地出现在外层If语句的Then子句或Else子句中 内外层不能有交叉 7 1 4If语句的嵌套 注2 Else If的匹配原则Else始终与上面距离其最近的未被匹配过的If匹配注3 If EndIf的匹配If块必须以一个EndIf语句结束 If ThenIf Then Else EndIfElseIf Then If Then Else EndIfEndIf 7 1 4If语句的嵌套 为使程序结构更为清晰 要养成良好的书写习惯 If ThenIf Then Else EndIfElseIf Then If Then Else EndIfEndIf 为体现层次 可以使用Tab健排放不同层次的语句 7 1 4If语句的嵌套 例7 4根据用户输入年龄和性别 输出不同的欢迎信息 其中小于14岁的男性为boy 大于14岁的男性为guy 其中小于14岁的女性为girl 大于14岁的女性为miss 例7 4 程序代码如下 PrivateSubCommand1 Click IfOp male Value TrueThenIfVal Txt age Text 14Then 小于14岁的男性MsgBox Hello boy Else 大于或等于14岁的男性MsgBox Hello guy EndIfElseIfVal Txt age Text 14Then 小于14岁的女性MsgBox Hello girl Else 大于或等于14岁的女性MsgBox Hello miss EndIfEndIfEndSub 7 1 5与If语句有关的函数 1 IIf函数 2 Switch函数 1 IIf函数 格式 IIf 条件表达式 条件为True时的表达式 条件为False时的表达式 功能 根据条件表达式的值 确定函数返回后面两个表达式的其中一个的值 1 IIf函数 IIf函数实际上是If Then Else结构的一个简写IIf函数中后两个表达式可以是各种类型的表达式 也可以是一个IIf函数的调用 Printx IIf x 0 大于0 小于或小于0 s IIf x 0 1 IIf x 0 0 1 判断x的符号 1 IIf函数 将If语句改写成使用IIf函数 Ifx 30Theny 0ElseIfx 50Theny x 30 10Elsey x 50 20 20 10EndIf 等价于 y IIf x 30 0 IIf x 50 x 30 10 x 50 20 20 10 2 Switch函数 格式Switch 表达式1 值1 表达式2 值2 表达式n 值n 功能计算一组条件表达式列表的值 然后返回与条件表达式列表中最先为True的表达式所对应的Variant型数值或表达式 如 lblstatus Caption Switch grade 90 A grade 80 B grade 80 C 用于多分支情况条件表达式和值必须成对出现 2 Switch函数 将If语句改写成使用Switch函数 Ifx 30Theny 0ElseIfx 50Theny x 30 10Elsey x 50 20 20 10EndIf 等价于 y Switch x50 x 50 20 20 10 7 2SelectCase语句 多分支语句 格式 SelectCaseCase表达式列表1Case表达式列表2 CaseElse EndSelect 7 2SelectCase语句 T 表达式1 语句体1 表达式2 语句体2 T 表达式n 语句体n 语句体n 1 T 执行过程 计算测试表达式的值 依次比较各个表达式 符合条件则进入相应的语句体执行 执行SelectCase语句的下一条语句 计算测试表达式的值 7 2SelectCase语句 注1 测试表达式可以是数值或字符串表达式 注2 各表达式列表合法的格式 一个常量或常量表达式 多个常量或常量表达式 用逗号隔开 逗号相当于 或 如 Case1 3 5 7 表达式1to表达式2 表示从表达式1到表达式2中所有的值 其中表达式1的值必须小于表达式2的值 如 Case1to5 Is关系运算表达式 可以使用的关系运算符为 不可以使用逻辑运算符表示多个范围 前面四种情况的组合 如CaseIs 10 2 4 6 Is 0注3 若有多个Case表达式符合条件 则只执行第一个符合的Case下的语句体 7 2SelectCase语句 例 已知变量ch中存放了一个字符 判断该字符是字母字符 数字字符 空格还是其它字符 用SelectCase语句改写 分析 将各种字符的判断条件改写成符合要求的Case条件字母字符 ch a Andch A Andch 0 Andch 9 0 To 9 空格字符 ch Is 实现 SelectCasechCase a To z A to Z Print 字母字符 Case 0 To 9 Print 数字字符 Case Print 空格 CaseElsePrint 其他字符 EndSelect 7 2SelectCase语句 例7 5简单运算器分析 运算符的判断 共四种取值 事先已在ComboBox中 SelectCaseCmbop TextCase txtresult Val txtX Val txtY Case txtresult Val txtX Val txtY Case txtresult Val txtX Val txtY Case txtresult Val txtX Val txtY EndSelect 7 2SelectCase语句 所有SelectCase语句可以替换为If Then ElseIf 语句 只有在If语句和每一个ElseIf语句计算相同条件表达式时 才能用SelectCase结构替换If Then ElseIf 结构 7 3基本算法及应用 7 3 1求两个数的最大 小 值7 3 2用户输入时按键的判断7 3 3信息的有效性验证7 3 4单选钮和复选框的应用 7 3 1求两个数的最大 小 值 分析 两个数的关系无非有3种情形 即 A B A B A BThenMax AElseMax BIfA BThenMax AElseMax B 7 3 2用户输入时按键的判断 两种方法 一是在输入时判断 使用文本框的Key事件 常用 KeyPress事件 KeyAscii参数 二是在全部输入完成后再对每个字符进行判断 使用循环结构依次获取字符串中的字符 例7 7在文本框中输入一个字符串 要求只能出现字母 PrivateSubText1 KeyPress KeyAsciiAsInteger If KeyAsciiAsc z And KeyAsciiAsc Z ThenKeyAscii 0EndSub 7 3 3信息的有效性验证 例7 8登录界面设计 确定 按钮的Click事件过程如下 PrivateSubcmdok Click Iftxtuser Text Ortxtpwd Text ThenMsgBox 请输入完整信息 ElseIftxtpwd Text 20082008 ThenMsgBox 密码错误 不能登录 txtpwd Text txtpwd SetFocusElseMsgBoxtxtuser Text 欢迎您 EndIfEndIfEndSub 有效信息 帐号和密码都不能空 密码符合要求 这样的密码设置方法 安全性差 7 3 4单选钮和复选框的应用 单选钮 多选一在同一组单选钮中只有一个按钮的Value属性值为1 通常使用If Then ElseIf 的语句格式进行判断 复选框 多选多同一组复选框中可以同时有多个被选中 也可以只选中一个 也可以一个都不选中 通常我们对各个复选框进行独立判断 7 3 4单选钮和复选框的应用 例7 9根据用户选择 求若干门课程的总分或平均分 参考代码如下 PrivateSubcmdCal Click DimsumAsInteger nAsIntegerIfchkChinese Value 1Thensum sum Val txtChinese Text n n 1IfchkMath Value 1Thensum sum Val txtMath Text n n 1IfchkEnglish Value 1Thensum sum Val txtEnglish Text n n 1IfoptTotal ValueThentxtResult Text n 门课总分 vbCrLf sumElseIfn0ThentxtResult Text n 门课平均分 vbCrLf sum nEndIfEndSub 问 变量n的作用是什么 7 4其他应用举例 例7 10例7 11例7 12例7 13 例7 10 例7 10调整3个文本框中的数值 使其中的数值按小到大的顺序排放 Ifa bThentemp a a b b temp 如果a大于b 交换a和b的值Ifa cThentemp a a c c temp 如果a大于c 交换a和c的值Ifb cThentemp b b c c temp 如果b大于c 交换b和c的值 例7 11 例7 11求一元二次方程ax2 bx c 0的根 根据数学中一元二次方程的求根公式 令 当 0时 方程有两个不相等的实根 当 0时 方程有两个相等的实根 当 0时 方程有两个不相等的虚根 例7 11 Ifa0Thendelta b b 4 a cIfdelta 0Thenx1 b Sqr delta 2 a 第1个根x2 b Sqr delta 2 a 第2个根txtroot X1 x1 Chr 13 Chr 10 X2 x2ElseIfdelta 0Thenx1 b 2 a txtroot Twoequalroot X1 X2 x1Elsex1 b 2 a 根的实部x2 Sqr delta 2 a 根的虚部txtroot X1 x1 x2 i Chr 13 Chr 10 X2 x1 x2 i EndIfEndIf 例7 12 例7 12编程实现输入一个整数 判断其能否被3 5 7整除 并输出以下信息之一 1 能被3 5 7整除 2 能被其中两个数 要指出哪两个 整除 3 能被其中一个数 要指出哪一个 整除 4 不能被3 5 7任一个整除 代码1 IfxMod3 0AndxMod5 0AndxMod7 0ThenMsgBox 能被3 5 7整除 IfxMod3 0AndxMod5 0AndxMod70ThenMsgBox 能被3 5整除 IfxMod3 0AndxMod7 0AndxMod50ThenMsgBox 能被3 7整除 IfxMod5 0AndxMod7 0AndxMod30ThenMsgBox 能被5 7整除 IfxMod3 0ThenMsgBox 能被3整除 IfxMod5 0ThenMsgBox 能被5整除 IfxMod7 0ThenMsgBox 能被7整除 代码2 IfxMod3 0AndxMod5 0AndxMod7 0ThenMsgBox 能被3 5 7整除 ElseIfxMod3 0AndxMod5 0AndxMod70ThenMsgBox 能被3 5整除 ElseIfxMod3 0AndxMod7 0AndxMod50ThenMsgBox 能被3 7整除 ElseIfxMod5 0AndxMod7 0AndxMod30ThenMsgBox 能被5 7整除 ElseIfxMod3 0ThenMsgBox 能被3整除 ElseIfxMod5 0ThenMsgBox 能被5整除 ElseIfxMod7 0ThenMsgBox 能被7整除 ElseMsgBox 不能被3 5 7任一数整除 EndIf 代码3 IfxMod3 0Thenn n 1s s 3 EndIfIfxMod5 0Thenn n 1s s 5 EndIfIfxMod7 0Thenn n 1s s 7 EndIfIfn0ThenMsgBox 能被 s 这 n 个数整除 ElseMsgBox 不能被任一数整除 EndIf 代码4 n 0IfxMod3 0Thenn n 1EndIfIfxMod5 0Thenn n 2EndIfIfxMod7 0Thenn n 4EndIf SelectCasenCase0 MsgBox 不能被任一数整除 Case1 MsgBox 能被3整除 Case2 MsgBox 能被5整除 Case3 MsgBox 能被3 5整除 Case4 MsgBox 能被7整除 Case5 MsgBox 能被3 7整除 Case6 MsgBox 能被5 7整除 Case7 MsgBox 能被3 5 7整除 EndSelect 例7 13 例7 13模拟红绿灯 在界面上有两个图像框 分别显示信号灯和汽车 设定信号

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论