2.3 程序的选择结构 条件选择语句和多重选择语句的使用 程序条件选择结构的执行流程 会使用条件语句和多重选择语句编写程序解决简单的应用题
分析问题 设所求的矩形宽为x, 可得出长为L/2-x。可得出方程式: x2-1/2Lx+s=0 问题: 张军找来了一条长度为L的铁丝,希望用来制作一个面积为S的矩形框。他问李明:这个矩形的长和宽应当各是多少,S会为定值呢? 分析问题 设所求的矩形宽为x, 可得出长为L/2-x。可得出方程式: x2-1/2Lx+s=0 设计算法略(P41) 编写程序 调试程序 private Sub Command1_Click() L = InputBox("请输入铁丝的长度:") S = InputBox("请输入矩形的面积:") D = L * L / 4 - 4 * S If D >= 0 Then X1 = (L / 2 + Sqr(D)) / 2 X2 = (L / 2 - Sqr(D)) / 2 Print "这个矩形的长和宽分别为:"; X1; "和"; X2 Else Print "找不到这样的矩形!" End If End Sub
2.3.2 条件语句 (一)条件语句的基本格式是: if 条件 then 语句组1 else 语句组2 或 if 条件 then 语句组1 在解决问题的过程中,常常需要对事物进行判断和选择,如上题中,求一个方程的解,如果D>=0,则分别求出两个解,否则为无解。在程序设计中,如何实现判断和选择呢?在上述代码中,有一个用if开头的语句,这就是条件语句。 (一)条件语句的基本格式是: if 条件 then 语句组1 else 语句组2 或 if 条件 then 语句组1 else 语句组2 end if 其中,这里的表达式是关系表达式(<、>、=、<>、<=、>=)或逻辑表达式(and、or、not),其值只有真或假两种,当表达式的值为真时,视为条件成立。语句可以是赋值语句(a=3)、输出语句(print、msgbox)、结束语句(end) 。 (二)条件执行语句的执行过程 条件 语句组1 语句组2 假 真
在线测试 1.语句If x=1 Then y=1,下列说法正确的是( )。 A、x=1和 y=1 均为赋值语句 B、x=1和 y=1均为关系表达式 C、x=1为关系表达式,y=1为赋值语句 D、x=1为赋值语句,y=1为关系表达 2.以下程序段运行后,分别输入5和6,则输出字符的排列顺序是( ) I=val(inputbox(“请输入I的值”)) If I <6 then Print “#” ; Else Print “*” End if A.*# B.#* C.## D.**
条件语句的格式 (一)简单 if 语句:是指仅包含 If …… Then 的语句 格式一: If 条件 Then 语句 例: If X 〉5 Then Y = 7 格式二: If 条件 Then 语句块 End if 功能:当条件满足,则执行 If 与 End if 之间的语句块,否则执 行End if后面的语句。 语句块:允许有多条语句 注:格式二中的 If 和 End if 必须成对出现 开始 结束 判断条件 语句块 真 假
条件语句的格式 (二)带 Else 的 If …… Then 语句 格式1: If 条件 Then 语句块1 Else 语句块2 End If 功能:当条件满足,执行语句块1;否则执行语句块2 格式2: If 条件1 Then 语句块1 ElseIf 条件2 Then 语句块2 …… ElseIf 条件n Then 语句块n Else 语句块n+1 End If 语句组n+1 条件1 条件2 条件n 语句组1 语句组2 语句组n 真 假
练习 if x>=2 then y=1.5*x*0.8 else y=1.5*x end if (1) 分析问题 (3)编写程序 (1) 分析问题 设买苹果的重量为x千克,应付款为y元,如果x>=2,则y=1.5*x*0.8,否则y=1.5*x。 (2)设计算法 ① 输入x的值 ② 如果x>=2,则y=1.5*x*0.8 ③ 否则y=1.5*x ④ 输出y的值 (3)编写程序 Private sub command1_click() Dim x as single,y as single x=Inputbox(“请输入购买苹果的重量”) if x>=2 then y=1.5*x*0.8 else y=1.5*x end if Print “应付款”;y;“元”
练习 问题2:输入一个成绩,如果90分以上,则输出“优秀”;80-89,则输出“良好”;70-79,则输出“中等”;60-69,则输出“及格”;60分以下则输出“不及格”,请编写程序。 Private Sub command1_click() X = InputBox("请输入一个分数") If X >= 90 Then Print "优秀" If (X >= 80) And (X < 89) Then Print "良好" If (X >= 70) And (X < 79) Then Print "中等" If (X >= 60) And (X < 69) Then Print "及格" If X < 60 Then Print "不及格" End Sub 在程序,使用了5个if语句来处理5种情况。这样的程序在可读性和效率方面都是比较差的,如果再多一些情况,它的缺陷就会暴露得更加明显,如何处理这个问题呢?
2.3.4 多重选择语句格式 在VB语言中,设置了一个处理多种情况的语句,称为多重选择语句,它的基本格式为: select case 表达式 语句组1 case 表达式列表2 …… case else 语句组N+1 end select 其中 (1)表达式和表达式列表可以是数值型或字符型,表达式列表还可以是多个用逗号分开的表达式。 (2) 表达式列表与表达式的类型必须相同。 (3) 表达式列表又称值域,它有如下三种形式: ① 表达式1,表达式2,…… ② 表达式1 to表达式2 ③ Is关系表达式 多分支语句的流程图如下所示:
运用多重选择语句编写问题2的程序如下: Private sub command1_click() X=inputbox(“请输入学生成绩”) Select case X Case Is>=90 Print”优秀” Case 80 to 89 Print”良好” Case 70 to 79 Print”中等” Case 60 to 69 Print”及格” Case else Print”不及格” End select End sub X为数值型 列表1 当学生成绩>=90执行语句 列表2 当学生成绩在80到89之间执行语句……
作业: 书本47页实践题目(1)和(2) 书本48页实践题目 有三名同学为解决一个判断某年是否为闰年得问题,各编写了一个程序,分别是: 书本48页实践题目 有三名同学为解决一个判断某年是否为闰年得问题,各编写了一个程序,分别是: 书本49页练习(1)