2.3程序的选择结构
[授课形式]
讲授课、实践课
[教学目的]
理解掌握关系运算和逻辑运算,并掌握选择结构二种基本情况的执行方式。
[教学重点]
算术运算符、关系运算符、逻辑运算符运算的优先级别,选择结构的二种基本情况的格式,多重选择语句的使用。
[教学难点]
if 〈条件〉 then <语句组1> [else <语句组2>]格式的两种写法。
[教学方法]
讲授法、探究法、演练法
[教学课时]
2课时
[教学过程]
一、关系式和逻辑表达式
1、关系运算符
< 、 >、 =、 <=、 >=、 < >
2、关系式
关系式是由一个关系运算符把两个表达式连起来的式子。结果(值)为逻辑值: 真 True 假 False
3、逻辑运算符及逻辑表达式
(1)not (非、逆、取反)
7>4 值为真
not (7>4) 值为假
(2)and (与、交)
所连接的两个操作式都为真时,结果才为真。
x>0 and x<10
(3)or (或 并)
所连接的两个操作式都为假时,结果才为假。
x> 10 or x<0
(4)运算次序为not、and、or
4、运算次序(优先级别可)
算术运算—关系运算—逻辑运算
5、关于逻辑表达式结果:
x=6>4
print x
结果为:true
a=5=3 等价于a=(5=3)
print a
结果为:false
二、选择结构
计算机具有逻辑判断能力,它的这种判断能力是“选择”结构的具体体现。具体地说,计算机可以根据一定的条件成立与否来决定接下来执行何种操作。
1、条件语句的流程图和格式
(1)情况一:
·格式一:if <条件> then <语句组1>
·格式二:if <条件> then
<语句组1>
end if
·功能:如果〈条件〉成立满足(成立)时,执行then后面的语句组1,如果〈条件〉不成立,则不执行语句组1,直接执行下一个语句。
·例1: x = InputBox("input data:", "输入", "")
If x > 0 Then Print "x="; x
(2)情况二:
·格式一:if <条件> then <语句组1> else <语句组2>
·格式二:if <条件> then
<语句组1>
else
<语句组2>
end if
·功能:如果〈条件〉成立,则执行then后面的语句组1,如果〈条件〉不成立,则执行〈语句组2〉然后再执行下一个语句。
·例2:编写程序,实现简单的人机对话。首先计算机显示“你快乐吗?(Y or N)” ,并提示回答“Y”或“N”。如果你回答的是“Y”,计算机回应:“我很高兴。”否则回应:“太糟了。”
程序如下:
a$ = InputBox("你快乐吗?(Y or N):", "输入", "")
If a$ = "Y" Then Print "太棒了!" Else Print "太糟了。"
2、综合例子
输入三个正数,然后输出其中的最大数。
(1)算法:
max←0;
输入a、b、c的值;
如果max〈a 则max←a;
如果max〈b 则max←b;
如果max〈c 则max←c;
输出max。
(2)程序如下:
Private Sub Command1_Click()
Max = 0
a = val(InputBox("请输入第一个数:", "提示", ""))
b = val(InputBox("请输入第二个数:", "提示", ""))
c = val(InputBox("请输入第三个数:", "提示", ""))
If Max < a Then Max = a
If Max < b Then Max = b
If Max < c Then Max = c
Print "最大的数是:"; Max
End Sub
3、探究题:输出三个数中的最小数
程序如下:
Private Sub Command2_Click()
a = Val(InputBox("请输入第一个数:", "提示", ""))
b = Val(InputBox("请输入第二个数:", "提示", ""))
c = Val(InputBox("请输入第三个数:", "提示", ""))
Min = a
If Min > b Then Min = b
If Min > c Then Min = c
Print "最小的数是:"; Min
End Sub
三、情况语句(多重选择语句)
对于多个分之结构的程序,可以使用情况语句。
一般格式:
select case 测试表达式
case 表达式表1
语句组1
case 表达式表2
语句组2
……
case else
语句组n+1
end select
功能:情况语句是根据提供测试的表达式的值在多个语句块中选择符合条件的一个语句来执行的,即:先求出测试表达式的值,然后看该值与哪一个case子句的表达式表相匹配,如果找到了,则执行相应的语句组,如果没有找到则执行case else子句有关的语句组。执行完毕,跳过其它case子句,把控制转移到end select后面的语句。
说明:
表达式表是测试表达式的值罗列,为下述形式之一
① 单个表达式,如:case 2
② 多个表达式,如:case 2, 4, 8
③ to表达式,如:case 2 to 4
④ is 和关系运算符,如:case is<8
(2)case else子句必须放在所有的case子句之后,而且一般都不省略。如果在select case结构中的任何一个case子句都没有与供测试的表达式的值相匹配的值,则转到执行case else子句。
例:输入一个考试分数,输出其相应的等级。划分如下:
大于或等于90等级为一级。
80至90之间(含80)等级为二级。
70至80之间(含70)等级为三级。
60至70之间(含60)等级为四级。
小于60 等级为五级。
分析:用score表示输入的考试分数。等级实质上取决于考试分数的非个位部分,所以用取整数函数“int(score/10)”(记为x)作为测试表达式。这样:x=9或10时,等级为1级;x-8时,等级为2级;x=7时,等级为3级;x=6时,等级为4级;其他,等级为5级。
程序如下:
input “输入一个考试分数:” ;score
x=int(score/10)
select case x
case 9,10
print “等级为一级”
case 8
print “等级为二级”
case 7
print “等级为三级”
case 6
print “等级为四级”
case else
print “等级为五级”
end select
end
练习:分别写出相应的VB语句。
如果x大于或等于y,则输出x-y的值。
if Val (x)>= Val (y) then print x-y
如果a大于b,则将a赋给x,否则将b赋给x。
if Val (a)> Val (b) then x=a else x=b
如果x+y不等于20,则显示“答案错误”,否则显示“答案正确”。
if Val (x)+ Val (y)<>0 then print “答案错误” else print “答案正确”
输入一个数,输出它的符号。即如果这个数是正的输出“+”,如果它是负的输出“—”,如果它为0则输出“0”
程序如下:
a = Val(InputBox("请输入", "提示", ""))
If Val (a) > 0 Then Print "+"
If Val (a) < 0 Then Print "-"
If Val (a) = 0 Then Print "0"