VB语言IF选择结构
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 x 1 y 2 x 1
x ≥0 x <0
分析:本题中条件可为: x≥0 代码表示为:
(1)当“x≥0”成立时, y=x^2+1
Dim x As Single, y As Single (2)当“x<0” 成立时, y=x^2-1 x = Val(InputBox("请输入变量的值")) If x >= 0 Then y = x ^ 2 + 1 ' x>=0时计算y Else y=x^2-1 End If Print "x="; x, "y="; y
注意
条件和语句序列应在一行内写完;<语句组1> 和<语句组2>不得同时省略。 用行If结构的前提是“语句组1和语句组2要特别 简短”,如果语句组较复杂,结构会不清晰。
行If结构没有EndIf。 If a>b Then Print a Else Print b
3. 多分支结构(IF…Then…ElseIf语句)
选择结构小结
名称 条 件 语 句 If 语句格式 (条件) Then T 语句组 Else F 语句组 End If Select Case (表达式) Case 条件 1 1T 语句组 Case 条件 2 2T 语句组 … Case Else F 语句组 End Select 作用 条件成立,只执行 T 语句组;
问题1: 已知变量str中存放了一个字符,判断该字符的类型。
str=… str=… Select Case str If (str>="A" And str <="Z ") OR (str>="a" And str <="z") Then Case "A" To "Z" , "a""To "z" Print str; "是字母字符 是字母字符 ElseIfPrint str>=0 str; And" str <=9 Then" Case "0" "9" Print strTo ; "是数字字符 " Else Print str; "是数字字符" Case Else Print str; "是其他字符" End IfPrint str; "是其他字符" End Select
问题2:在两个数中求最大数。 Dim a As Single, b As Single a = Val(InputBox("请输入变量a的值")) b = Val(InputBox("请输入变量b的值")) If a >= b Then Print "最大数为:" ; a Else Print "最大数为:" ; b End If
4.4 简单应用
分别利用If与Select结构编写同一程序
不及格 及格 良好
优秀
0 If score < 60 Then
60
80
90
100
mark = "不及格" ElseIf score < 80 Then mark = "及格" ElseIf score < 90 Then mark = "良好" ElseIf score <=100 Then mark = "优秀" Else mark = "错误!"
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x < 0 Then y = x ^ 2 - 1 ' x<0时计算y ELSE If x > 0 Then y=x^2+1 ELSE y=0 End If End If Print "x="; x, "y="; y
4. 选择结构
4.1 IF选择结构
4.2 有关函数
4.3 Select Case结构
4.4 简单应用
广东石油化工学院
流程图描述法的基本图形符号
起止框
数据框
开始 输入R R>0? N
处理框 判断框
Y S=3.14*R^2 输出S 结束
VB程序的控制结构
• 顺序结构:从上到下逐一执行每一个语句 • 选择结构:根据给出的条件,选择执行一个分支 • 循环结构:根据给出的条件,判断是否重复执行某一部分语句
③ 表达式1 To 表达式2 如Case 0 to 9 表示当变量或表达 式的值在0~9之间时,执行对应的语句组; ④ Is 关系运算符表达式 如Case Is>10 表示当变量或表达 式的值大于10时,执行对应的语句组。
(3) Select Case 后不能出现多个变量;(例:Select Case x,y ) (4) Case子句后不能出现变量。(例:Case x < 0 And y > 0)
顺序结构 选择结构
条件? False True T语句组 条件? True 循环体 语句 False
循环结构
语句1 语句2 语句3
F语句组
4.1 If 选择结构
1、单分支结构 (If…Then语句)
语法结构:
If <条件> Then <语句组> End If
条件 假
多行结构
真 语句组
或 If <条件> Then <语句> 单行结构
语法格式
If <条件1> Then <语句组1> ElseIf <条件2> Then <语句组2> …… ElseIf <条件n> Then <语句组n> [Else <语句组n+1>] End If
执行流程:
真 条件1 假 真 条件2 假 真 条件n 假 语句组2 语句组1
语句组n 语句组 n+1
Choose(Weekday(Now),"日","一","二","三","四","五","六")
4.3 Select Case结构
语句格式: Select Case <单一变量或表达式> Case <预设值1> <语句组1> Case <预设值2> <语句组2> …… Case <预设值n> <语句组n> Case Else <语句组n+1> End Select
语法结构:
If <条件> Then <语句组1> Else <语句组2> End If
真
语句组1
条 件
假
语句组2
若T/F语句为一个 语句时, IIF 函数可 代替 IF
或 If <表达式> Then <语句1> Else <语句2>
IIF(条件,T语句,F语句)
问题1:输入x的值,计算如下函数对应的y值。
多 分 支 语 句
条件不成立,只执行 F 语句组。 表达式的结果 当条件 1 成立,只执行 1T 语句组; 当条件 2 成立,只执行 2T 语句组; …… 若全部条件都不成立,则执行 F 语句组; 表达式值---预设值 1)匹配量: 1,2,3 1 to 10 “a” to “z” 2) 关系量: is <= 常量表达式 3)混合式: 1,2,3,is>10
结构嵌套
在前例中,可以看到:
在一个选择结构中,又包含了另一个选 择结构,这种形式称为选择结构(分支) 嵌套。
当问题越复杂时,用块If的嵌套层次会越
深,程序易读性越差。
采用块IF的多分支结构If…ElseIf会使程 序简练。
关于行格式:
格式
If <条件> Then [<语句组1>] [Else <语句组2>]
2、Choose函数
(1)格式:Choose(整数表达式,选项列表) (2)说明
根据整数表达式的值,决定函数返回选项列表中的某 个值。如果整数表达式的值是1,则返回选项列表中的 第一个选项值,如果是2,则返回第二个选项值,依此 类推。
若整数表达式的值小于1或大于列出的选项数时,函 数返回空值(Null)。
Fra Baidu bibliotek
问题3: 输入x的值,计算如下函数对应的y值。
x2 1 y 0 x2 1
x>0 x=0 x<0
分析:本题中条件可看作: x≥0和x<0两种情况
(1)当“x<0” 时, y=x^2-1 (2)当“x≥0”时,再进一步判断: ① 1若“x>0”,则:y=x^2+1; ② 否则: y=0
问题2:在两个数中求最大数。
Dim a As Single, b As Single a = Val(InputBox("请输入变量a的值")) b = Val(InputBox("请输入变量b的值")) If a >= b Then Print "最大数为:" ; a End If If x < 0 Then Print "最大数为:" ; b End If
4.2 有关函数
1、IIf函数 (1)格式: IIf(条件,T语句,F语句) (2)说明: 当条件成立时,该函数返回表达式1的值,否则返
回表达式2的值。
Dim a As Single, b As Single, max As Single a = InputBox("请输入a的值") b = InputBox("请输入b的值") max = IIf(a >= b, a, b) Print max
计算表达式
注意:
(1) 变量或表达式 可以是单一数值型或字符串表达式; (2) 表达式列表 与变量或表达式的类型必须相同,可以是下面4 种形式之一,除了这4种情况,不能用Select Case结构: ① 表达式 如:Case 8 表示当变量或表达式值等于8时执行 对应的语句组;
② 一组用逗号分隔的值 如Case 1,3,4,7,10 表示当变量或 表达式的值为1,3,4,7,10中之一时,执行对应的语句组;
问题1:输入X的值,求Y的值。
x 2 1 x≥10 10>x≥-5 y 0 x 2 1 x<-5
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) Select Case x Case Is >= 10 '情况:x>=10 y=x^2+1 Case Is >= -5 '情况:x>=-5 and x<10 y=0 Case Is < -5 '情况:x<-5 y=x^2-1 End Select Print "x="; x, " "; "y="; y
End If
Print "成绩为" & mark
Select Case score Case Is < 60 mark = "不及格" Case Is <80 mark = "及格" Case Is <90 mark = "良好" Case Is <=100 mark = "优秀" Case Else mark = "错误!" End Select Print "成绩为" & mark
问题3: 比较3个数a、b和c的大小,输出其中的最大值. 采用“打擂法” max=a If b>max Then If max=b b>max Then max=b End If If c>max Then If max=c c>max Then max=c End If Print max
2、双分支结构 (If…Then…Else语句)
注意:
ElseIf不能写成Else If; 当多分支中有多个表达式同时满足时,仅执行第一个满 足条件的语句组。
问题1: 输入x的值,计算y的值。
x 2 1 y 0 x 2 1
x>0 x=0 x<0
分析:本题包含3个条件: (1)当条件为“x>0”时; (2)当条件为“x=0”时; (3)当条件为“x=0”时。 实现:多分支结构
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x > 0 Then y = x ^ 2 + 1 ' x<0时计算y ElseIf x = 0 Then y=0 ElseIf x < 0 Then y=x^2-1 End If Print "x="; x, "y="; y
问题1: 输入x的值,计算如下函数对应的y值。
2 x 1 y 2 x 1
x ≥0 x <0
分析:本题包含两个条件: (1)当条件为“x≥0”时; (2)当条件为“x<0”时。可以用两个单分 支结构完成。
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x >= 0 Then ' x>=0时计算y y=x^2+1 End If If x < 0 Then ' x<0时计算y y=x^2-1 End If Print "x="; x, "y="; y
x ≥0 x <0
分析:本题中条件可为: x≥0 代码表示为:
(1)当“x≥0”成立时, y=x^2+1
Dim x As Single, y As Single (2)当“x<0” 成立时, y=x^2-1 x = Val(InputBox("请输入变量的值")) If x >= 0 Then y = x ^ 2 + 1 ' x>=0时计算y Else y=x^2-1 End If Print "x="; x, "y="; y
注意
条件和语句序列应在一行内写完;<语句组1> 和<语句组2>不得同时省略。 用行If结构的前提是“语句组1和语句组2要特别 简短”,如果语句组较复杂,结构会不清晰。
行If结构没有EndIf。 If a>b Then Print a Else Print b
3. 多分支结构(IF…Then…ElseIf语句)
选择结构小结
名称 条 件 语 句 If 语句格式 (条件) Then T 语句组 Else F 语句组 End If Select Case (表达式) Case 条件 1 1T 语句组 Case 条件 2 2T 语句组 … Case Else F 语句组 End Select 作用 条件成立,只执行 T 语句组;
问题1: 已知变量str中存放了一个字符,判断该字符的类型。
str=… str=… Select Case str If (str>="A" And str <="Z ") OR (str>="a" And str <="z") Then Case "A" To "Z" , "a""To "z" Print str; "是字母字符 是字母字符 ElseIfPrint str>=0 str; And" str <=9 Then" Case "0" "9" Print strTo ; "是数字字符 " Else Print str; "是数字字符" Case Else Print str; "是其他字符" End IfPrint str; "是其他字符" End Select
问题2:在两个数中求最大数。 Dim a As Single, b As Single a = Val(InputBox("请输入变量a的值")) b = Val(InputBox("请输入变量b的值")) If a >= b Then Print "最大数为:" ; a Else Print "最大数为:" ; b End If
4.4 简单应用
分别利用If与Select结构编写同一程序
不及格 及格 良好
优秀
0 If score < 60 Then
60
80
90
100
mark = "不及格" ElseIf score < 80 Then mark = "及格" ElseIf score < 90 Then mark = "良好" ElseIf score <=100 Then mark = "优秀" Else mark = "错误!"
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x < 0 Then y = x ^ 2 - 1 ' x<0时计算y ELSE If x > 0 Then y=x^2+1 ELSE y=0 End If End If Print "x="; x, "y="; y
4. 选择结构
4.1 IF选择结构
4.2 有关函数
4.3 Select Case结构
4.4 简单应用
广东石油化工学院
流程图描述法的基本图形符号
起止框
数据框
开始 输入R R>0? N
处理框 判断框
Y S=3.14*R^2 输出S 结束
VB程序的控制结构
• 顺序结构:从上到下逐一执行每一个语句 • 选择结构:根据给出的条件,选择执行一个分支 • 循环结构:根据给出的条件,判断是否重复执行某一部分语句
③ 表达式1 To 表达式2 如Case 0 to 9 表示当变量或表达 式的值在0~9之间时,执行对应的语句组; ④ Is 关系运算符表达式 如Case Is>10 表示当变量或表达 式的值大于10时,执行对应的语句组。
(3) Select Case 后不能出现多个变量;(例:Select Case x,y ) (4) Case子句后不能出现变量。(例:Case x < 0 And y > 0)
顺序结构 选择结构
条件? False True T语句组 条件? True 循环体 语句 False
循环结构
语句1 语句2 语句3
F语句组
4.1 If 选择结构
1、单分支结构 (If…Then语句)
语法结构:
If <条件> Then <语句组> End If
条件 假
多行结构
真 语句组
或 If <条件> Then <语句> 单行结构
语法格式
If <条件1> Then <语句组1> ElseIf <条件2> Then <语句组2> …… ElseIf <条件n> Then <语句组n> [Else <语句组n+1>] End If
执行流程:
真 条件1 假 真 条件2 假 真 条件n 假 语句组2 语句组1
语句组n 语句组 n+1
Choose(Weekday(Now),"日","一","二","三","四","五","六")
4.3 Select Case结构
语句格式: Select Case <单一变量或表达式> Case <预设值1> <语句组1> Case <预设值2> <语句组2> …… Case <预设值n> <语句组n> Case Else <语句组n+1> End Select
语法结构:
If <条件> Then <语句组1> Else <语句组2> End If
真
语句组1
条 件
假
语句组2
若T/F语句为一个 语句时, IIF 函数可 代替 IF
或 If <表达式> Then <语句1> Else <语句2>
IIF(条件,T语句,F语句)
问题1:输入x的值,计算如下函数对应的y值。
多 分 支 语 句
条件不成立,只执行 F 语句组。 表达式的结果 当条件 1 成立,只执行 1T 语句组; 当条件 2 成立,只执行 2T 语句组; …… 若全部条件都不成立,则执行 F 语句组; 表达式值---预设值 1)匹配量: 1,2,3 1 to 10 “a” to “z” 2) 关系量: is <= 常量表达式 3)混合式: 1,2,3,is>10
结构嵌套
在前例中,可以看到:
在一个选择结构中,又包含了另一个选 择结构,这种形式称为选择结构(分支) 嵌套。
当问题越复杂时,用块If的嵌套层次会越
深,程序易读性越差。
采用块IF的多分支结构If…ElseIf会使程 序简练。
关于行格式:
格式
If <条件> Then [<语句组1>] [Else <语句组2>]
2、Choose函数
(1)格式:Choose(整数表达式,选项列表) (2)说明
根据整数表达式的值,决定函数返回选项列表中的某 个值。如果整数表达式的值是1,则返回选项列表中的 第一个选项值,如果是2,则返回第二个选项值,依此 类推。
若整数表达式的值小于1或大于列出的选项数时,函 数返回空值(Null)。
Fra Baidu bibliotek
问题3: 输入x的值,计算如下函数对应的y值。
x2 1 y 0 x2 1
x>0 x=0 x<0
分析:本题中条件可看作: x≥0和x<0两种情况
(1)当“x<0” 时, y=x^2-1 (2)当“x≥0”时,再进一步判断: ① 1若“x>0”,则:y=x^2+1; ② 否则: y=0
问题2:在两个数中求最大数。
Dim a As Single, b As Single a = Val(InputBox("请输入变量a的值")) b = Val(InputBox("请输入变量b的值")) If a >= b Then Print "最大数为:" ; a End If If x < 0 Then Print "最大数为:" ; b End If
4.2 有关函数
1、IIf函数 (1)格式: IIf(条件,T语句,F语句) (2)说明: 当条件成立时,该函数返回表达式1的值,否则返
回表达式2的值。
Dim a As Single, b As Single, max As Single a = InputBox("请输入a的值") b = InputBox("请输入b的值") max = IIf(a >= b, a, b) Print max
计算表达式
注意:
(1) 变量或表达式 可以是单一数值型或字符串表达式; (2) 表达式列表 与变量或表达式的类型必须相同,可以是下面4 种形式之一,除了这4种情况,不能用Select Case结构: ① 表达式 如:Case 8 表示当变量或表达式值等于8时执行 对应的语句组;
② 一组用逗号分隔的值 如Case 1,3,4,7,10 表示当变量或 表达式的值为1,3,4,7,10中之一时,执行对应的语句组;
问题1:输入X的值,求Y的值。
x 2 1 x≥10 10>x≥-5 y 0 x 2 1 x<-5
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) Select Case x Case Is >= 10 '情况:x>=10 y=x^2+1 Case Is >= -5 '情况:x>=-5 and x<10 y=0 Case Is < -5 '情况:x<-5 y=x^2-1 End Select Print "x="; x, " "; "y="; y
End If
Print "成绩为" & mark
Select Case score Case Is < 60 mark = "不及格" Case Is <80 mark = "及格" Case Is <90 mark = "良好" Case Is <=100 mark = "优秀" Case Else mark = "错误!" End Select Print "成绩为" & mark
问题3: 比较3个数a、b和c的大小,输出其中的最大值. 采用“打擂法” max=a If b>max Then If max=b b>max Then max=b End If If c>max Then If max=c c>max Then max=c End If Print max
2、双分支结构 (If…Then…Else语句)
注意:
ElseIf不能写成Else If; 当多分支中有多个表达式同时满足时,仅执行第一个满 足条件的语句组。
问题1: 输入x的值,计算y的值。
x 2 1 y 0 x 2 1
x>0 x=0 x<0
分析:本题包含3个条件: (1)当条件为“x>0”时; (2)当条件为“x=0”时; (3)当条件为“x=0”时。 实现:多分支结构
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x > 0 Then y = x ^ 2 + 1 ' x<0时计算y ElseIf x = 0 Then y=0 ElseIf x < 0 Then y=x^2-1 End If Print "x="; x, "y="; y
问题1: 输入x的值,计算如下函数对应的y值。
2 x 1 y 2 x 1
x ≥0 x <0
分析:本题包含两个条件: (1)当条件为“x≥0”时; (2)当条件为“x<0”时。可以用两个单分 支结构完成。
Dim x As Single, y As Single x = Val(InputBox("请输入变量的值")) If x >= 0 Then ' x>=0时计算y y=x^2+1 End If If x < 0 Then ' x<0时计算y y=x^2-1 End If Print "x="; x, "y="; y