清华大学VB经典教案第四节——选择结构程序设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例4-10】输入变量a的值(以角度 为单位),按下列公式计算函数b的值 并输出,程序运行结果如图4-10所示。 sin a cos a a>0 b sin a cos a a=0 sin a cos a a<0 2 【例4-11】求一元二次方程 ax bx c 0 的根,程序运行结果如图4-11所示。 b b 2 4ac x1, 2 分析:一元二次方程的求根公式为 2a 方程的根有如下几种可能: (1)若a=0且b=0,则提示“数据输入错误,请重新输入!” ; (2)若a=0且b≠0,则方程有一个实根x=-c/b; (3)若a≠0且b2-4ac=0,则方程有两个相等的实根x1=x2=b/(2*a); (4)若a≠0且b2-4ac>0,则方程有两个不相等的实根; (5)若a≠0且b2-4ac<0,则方程有两个共轭复根。
对于单行结构双分支If语句,当<条件表达式>的值为 True时,执行Then和Else之间的<语句组1>,否则,执行 Else后面的<语句组2>。在单行结构双分支If语句中,如果语
பைடு நூலகம்
句组包含多条语句,相互间用冒号“:”分隔。
对于块结构双分支If语句,当<条件表达式>的值为True时, 执行Then和Else之间的<语句组1>,否则,执行Else和End If 之间的<语句组2>。如果语句组包含多条语句,一般写成多行, 如果要写成一行,相互间用冒号“:”分隔。 注意:在块结构双分支If语句中,Else语句必须是其所在 行的第一条语句,即Else语句不能接在其他语句的后面。
4.3 单选按钮与复选框控件 单选按钮与复选框控件的区别:单选按钮控件在其组内, 任意时刻最多只能选择一项而且必须选择一项;复选框控件则 可以在0~所有项之间任意选择。 4.3.1 单选按钮 1.单选按钮的常用属性 (1)Value属性 表示单选按钮的状态。Value属性值为True,表示选中了 该单选按钮,显示一个黑点“●”,为False则没有选中。 (2)Style属性 设置单选按钮的显示样式。Style属性值有两个:0Standard(标准样式,默认设置)、1-Graphical(图形样 式)。 2.单选按钮的常用事件 单选按钮的常用事件是Click事件。
【例4-1】随机产生窗体的背景颜色,用消息框函数实现交 互设置,程序运行结果如图4-2所示。
【例4-2】输入三个数,计算 并输出这三个数中的最小值, 程序运行结果如图4-3所示。
【例4-3】用InputBox函数输 入三个数,对这三个数按从大 到小的顺序排列并输出,程序 运行结果如图4-4所示。 4.1.2 双分支If语句 双分支If语句有两个分支,其流程图如图4-5所示。双 分支If语句也有两种格式:单行结构和块结构。 格式1:单行结构 If <条件表达式> Then <语句组1> Else <语句组2> 格式2:块结构 If <条件表达式> Then <语句组1> Else <语句组2> End If
格式1:单行结构 If <条件表达式> Then <语句组> 格式2:块结构 If <条件表达式> Then <语句组> End If
对于单行结构单分支If语句,当<条件表达式>的值为True 时,执行Then后面的<语句组>,否则不执行。语句组又称语 句序列,可以是一条或多条语句,在单行结构单分支If语句中, 如果语句组包含多条语句,相互间用冒号“:”分隔。 对于块结构单分支If语句,当<条件表达式>的值为True时, 执行Then和End If之间的<语句组>,否则不执行。如果语句 组包含多条语句,一般写成多行,如果要写成一行,相互间用 冒号“:”分隔。 注意: (1)在块结构单分支If语句中,Then语句后必须换行; (2)在If语句中,赋值运算符“=”与关系运算符“=”的区 别。 例如:语句If x=1 Then y=1中,“x=1”是条件表达式,表 示x的值是否“等于”1,而“y=1”是赋值运算,表示将1赋给 变量y,使得变量y的值为1。
OLE容器控件的常用属性设置如下: (1)BackStyle:0-Transparent; (2)BorderStyle:0-None; (3)SizeMode:1-Stretch。
【例4-12】设计一个倒计时器,按照时 间格式输入两位的时、分、秒值,开始 倒计时后,每隔1秒,时间值(总的秒 数)减1,并且刷新一次时间,直到时 间值为0,停止倒计时。
Select Case <测试表达式> Case <表达式列表1> <语句组1> [Case <表达式列表2> <语句组2>] … [Case <表达式列表n> <语句组n>] [Case Else <语句组n+1>] End Select
②一个指定的值范围,用To连接,较小的值放在关键 字To之前,而且To关键字的左右要分别加一个空格; ③Is<关系运算符><表达式>;只要输入<关系运算符 ><表达式>,Is关键字将自动插入,也可以输入; ④以上三种表达式表形式的混合;混合表达式表相 互之间用逗号分隔。 注意: (1)当使用关键字Is表示条件时,只能使用简单条件,不 能将多个Is条件组合在一起。如:Case Is>=5 Or Is<=0或者 Case Is>=5,Is<=0都是错误的; (2)当测试表达式与某个表达式列表相匹配后,将执行对 应的语句组,其余的表达式列表将不再测试,即仅执行条件 相匹配的第一个分支。 【例4-9】用多分支选择语句Select Case实现例4-6的成绩 等级判断。
第4章 选择结构程序设计
选择结构又称为分支结构,需要先对给定的所有条件一一 进行判断,在众多条件中,当某个条件成立(结果为True)时, 将执行该条件所对应的分支。一般情况下,在一个选择结构的
程序中,任意时刻最多只能有一个分支被执行。
在Visual Basic中,条件表达式有三类:关系表达式、布 尔表达式、算术表达式,这三类表达式作为条件表达式时,其 结果都只可能是True或False,如果是数值将自动转换成对应 的布尔值,即0转换成False,非0转换成True。
【例4-13】西瓜按单个重量不同而售价不同,分别为 单个重量2千克以下,每千克2元; 单个重量2~3千克,每千克2.5元; 单个重量3~4千克,每千克3元; 单个重量4~5千克,每千克3.5元; 单个重量5千克以上,每千克4元; 编写程序,输入西瓜的重量,计算并输出付款金额。
4.3.2 复选框 1.复选框的常用属性 (1)Value属性 表示复选框的状态。Value属性值为1-Checked,表示选 中了该复选框,显示一个“√”,为0-UnChecked,则没有选 中,为2-Grayed,则复选框为灰色,表示不可用。 (2)Style属性 设置复选框的显示样式。Style属性值有两个:0-Standard (标准样式,默认设置)、1-Graphical(图形样式)。 2.复选框的常用事件 复选框的常用事件是Click事件。 4.4 框架控件 框架控件是一个容器控件,其主要功能是: (1)将其他控件分组,特别是对单选按钮进行分组;
(2)框架的Enabled属性和Visible属性,会影响它所容纳的 控件,当框架的Enabled属性值为True时,框架可用,它所容 纳的控件也可用,反之,框架和它所容纳的控件都不可用;当 框架的Visible属性值为True时,框架可见,它所容纳的控件也 可见,反之,框架和它所容纳的控件都不可见; (3)当移动框架时,被容纳的控件也会随之移动; (4)当删除框架时,被容纳的控件也会随之被删除。 将控件添加到框架中的方法: (1)单击选择框架,然后单击工具箱中的相应控件(不能使 用双击的方式),在框架中拖动鼠标指针画出控件; (2)在窗体或其他容器控件中已经画好的控件,可以先选择 这些控件,然后通过剪贴板剪切或复制,再选中框架后粘贴到 框架中。 框架的常用属性:Caption属性、Enabled属性、Visible 属性。框架一般不响应事件。
实现选择结构的语句有两种:If语句和Select Case语句。
4.1 If语句 根据If语句所包含的分支数,可以分成:单分支If语句、 双分支If语句和嵌套的If语句,即多分支If语句。 根据If语句的结构,可以分成:单行结构If语句和块结构If 语句。单行结构If语句只能写成一行,而且行尾没有End If语 句;块结构If语句必须写成多行,而且一定是If语句开头End If 语句结束。 4.1.1 单分支If语句 单分支If语句只有一个分支,其流程图如图4-1所示。单 分支If语句有两种形式:单行结构和块结构。
【例4-14】用单选按钮和复选框控 件设置标签的字体、字形、前景色。
第4章 小
结
本章主要内容: 1、单分支If语句、双分支If语句、IIf函数、 If语句的嵌套及IIf函数的嵌套、If语句的专用嵌套 形式ElseIf语句 ;
2、Select Case……End Select语句;
3、OptionButton控件、CheckBox控件、 Frame控件的应用。
4.2 多分支选择语句Select Case 多分支选择语句Select Case是在多个分支中,选择满足 条件的一个分支执行,其流程图如图4-9所示。其语法格式如 下:
说明: (1)<测试表达式>为必要参数,可以是常量、变量或表达 式,通常为变量; (2)<表达式列表>有如下四种形式: ①可以是数值、数值表达式、字符串或字符串表达式, 相互之间用逗号分隔;
【例4-6】用InputBox函数输入一 个学生某门课的成绩,判断并输出 该学生的成绩等级,假定成绩大于 或等于85分为“优秀”,大于或等 于70分小于85分为“良好”,大于 或等于60分小于70分为“合格”, 小于60分为“不合格”,程序运行 结果如图4-7所示。
【例4-7】用嵌套的IIf函数实现例4-6的成绩等级判断。 4.1.5 If语句的专用嵌套形式ElseIf语句 由于If语句的嵌套层次过多,将导致程序书写和阅读困 难,因此,Visual Basic提供了If语句的专用嵌套形式ElseIf 语句,其流程图如图4-8所示。其语法格式如下:
【例4-4】输入x的值,计算并输 出函数y的值,程序运行结果如图 4-6所示。
x 2 3x 5 y 2 2 x 4 x 6
x≥0 x<0
4.1.3 IIf函数 IIf函数用于实现简单的条件判断,它是单行结构双分支If 语句的简化形式。其语法格式如下: IIf(<条件表达式>,<表达式1>,<表达式2>) IIf函数的功能是:先计算<条件表达式>的值,如果为 True,则整个IIf函数的返回值为<表达式1>的值;如果为 False,则整个IIf函数的返回值为<表达式2>的值。 注意:IIf函数的三个参数都是必选参数,不能省略。 【例4-5】用IIf函数实现例4-4的函数计算。
If <条件表达式1> Then <语句组1> ElseIf <条件表达式2> Then <语句组2> … ElseIf <条件表达式n> Then <语句组n> [Else <语句组n+1>] End If 注意: (1)在<语句组1>~<语句组n+1>中,有且仅有一个<语句 组>被执行; (2)可以有多个ElseIf语句,但只能有一个If语句和一个 End If语句,最多只能有一个Else语句(可以没有Else语句)。 【例4-8】用If语句的专用嵌套形式ElseIf语句实现例4-6的成 绩等级判断。
4.1.4 If语句的嵌套及IIf函数的嵌套 If语句的嵌套指的是Then或Else后的<语句组1>或<语句 组2>,本身也可以是一个If语句,即If语句的分支中又嵌套了If 语句。使用If语句的嵌套可以实现多个分支的复杂选择。 IIf函数的嵌套指的是IIf函数的第二个参数“<表达式1>” 或第三个参数“<表达式2>”本身也可以是一个IIf函数。