VB选择结构程序设计
4
【例5-1】设界面如下图所示,用文本框输入x的值, 第 单击“计算Y”按钮时,根据以下公式计算y的值。 五 |x| x≤0 章 y= Text1 lnx x>0 选 择 Label3 结 构 Command1 程 序 Private Sub Command1_Click() 设 X = Val(Text1.Text) 计 If X <= 0 Then Y = Abs(X) Else Y = Log(X) Label3.Caption = Y End Sub
分析:设购物款数为x元,优惠价为y元,则优惠付款公式为: x (x<1000) 0.95x (1000≤x <2000) y= 0.9x (2000 ≤x<3000) 0.85x (3000 ≤x<5000) 0.8x (x>=5000)
9
设计步骤如下:
第 五 章 选 择 结 构 程 序 设 计
(1)建立应用程序界面并设置对象属性, 如图所示。 (2)编写程序代码.命令按钮command1 的Click事件代码如下:
15
Private Sub Command1_Click() Dim y As Integer, m As Integer Dim leapyear As Boolean y = Val(Text1.Text) m = Val(Text2.Text)
If (y Mod 4 = 0 And y Mod 100 <> 0) Or (y Mod 400 = 0) Then
leapyear = True Label3.Caption = "闰年" Else leapyear = False Label3.Caption = "非闰年" End If
第 五 章 选 择 结 构 程 序 设 计
Select Case m Case 3 To 5 Label4.Caption = "spring" Case 6 To 8 Label4.Caption = "summer" Case 9 To 11 Label4.Caption = "autummn" Case 12, 1, 2 Label4.Caption = "winter" End Select
5
第 五 章 选 择 结 构 程 序 设 计
例: 比较以下两段程序,是否都能够实现上例的 功能。 程序段1: X = Val(Text1.Text) Y = Abs(X) If X > 0 Then Y = Log(X) Label3.Caption = Y 程序段2: X = Val(Text1.Text) Y = Log(X) If X <= 0 ThenY = Abs(X) Label3.Caption = Y
多分支选择语句的功能流程图:
第 五 章 选 择 结 构 程 序 设 计
匹配 表达式表1
T
F
匹配表达式 表2
语句组1
T 语句组2
F …… T
匹配表达式 表n
F
语句组n
语句组n+1
13
第 五 章 选 择 结 构 程 序 设 计
3. 说明 <测试表达式> : 数值或字符串表达式 Case 表达式表: 表中的表项为如下形式: (1) 表达式1[,表达式2]... 如: Case 1 , 3 , 5 (2) 表达式1 TO 表达式2 如: Case 10 TO 30 Case "A" TO "Z" (3) Is <关系运算符><表达式> 如: Case Is >= 10 Case Is = 0 与 Case 0 相同 注意: 测试表达式的类型应与Case后表达式类型一致,且三 种形式可以混用,如: Case Is < -5 , 0 , 5 To 100 举 章 选 择 结 构 程 序 设 计
(3) <语句组1>、<语句组2>: 可以有多条语句,各语 句之间用冒号隔开。 例: If N>0 Then A=A+B:B=B+A Else A=A-B:B=B-A
(4)应作为一条语句书写。如果语句太长需要换行, 必须在折行处使用续行符号。 (5) 无论条件是否成立,都具有共同出口 例: If X >= 0 Then X = 1 + X Else X = 5 - X Y=1-X 共同出口 Print "Y="; Y 若 X=2 Y? 若 X=-2 Y? (6)单行结构条件语句可以嵌套 IF ... THEN...IF ... THEN ...ELSE ...ELSE…
第 五 章 选 择 结 构 程 序 设 计
第 五 章 选 择 结 构 程 序 设 计
第5章 选择结构程序设计
本章要点: 条件语句 单行结构条件语句If...Then...Else ... 块结构条件语句If...Then...EndIf 多分支选择语句Select Case...End Select Timer控件,单选按钮和复选按钮
特点: 根据条件是否成立,决定程序的执行分支
17
第 五 章 选 择 结 构 程 序 设 计
Select Case m Case 1, 3, 5, 7, 8, 10, 12 Label5.Caption = "31天" Case 4, 6, 9, 11 Label5.Caption = "30天" Case 2 If leapyear Then Label5.Caption = "29天" Else Label5.Caption = "28天” End If End Select Text1.SetFocus End Sub
1
5.1.1 单行结构条件语句
第 五 章 选 择 结 构 程 序 设 计 1. 格式 If <条件> Then [<语句组1>] [Else <语句组2>] 2. 功能 如果<条件>成立,则执行<语句组1> 否则执行<语句组2>
T 语句组1 F 语句组2
条件 ?
2
第 五 章 选 择 结 构 程 序 设 计
10
第 五 章 选 择 结 构 程 序 设 计
注意: (1) ElseIf不能写成Else If,即中间不能有空格。 (2) 在书写时,可以将If语句、ElseIf子句、Else 子句、和End If语句左对齐,而各语句组向 右缩进若干空格,以使程序结构更清楚。 (3) 严格按格式要求书写,不可随意换行或将两 行合并成一行。例如,对于条件结构: If x >= 0 Then y=1 Else y=2 End If 以下两种写法都是错误的:
Private Sub Command2_Click() Text1.Text = "" Text1.Text = "" Label3.Caption = "" Label4.Caption = "" Label5.Caption = "" End Sub
18
5.1.4 条件语句的嵌套
第 五 章 选 择 结 构 程 序 设 计
写法一: If x>=0 Then y=1 Else y = 2 End If 写法二: If x = 1 Then y = 10 Else y = 20 End If
11
5.1.3 多分支选择语句
第 五 章 选 择 结 构 程 序 设 计 1. 格式 Select Case <测试表达式> Case <表达式表1> [<语句组1>] [Case <表达式表2> [<语句组2>]] … [Case Else [<语句组n>]] End Select 2. 功能: 根据测试表达式的值,按顺序匹配Case后的 表达式,如果匹配成功,则执行该Case下的语句块, 然后转到End Select语句之后继续执行。 12
19
多分支选择语句的嵌套示例: 第 五 章 选 择 结 构 程 序 设 计 Select Case A Case 1 Select Case B Case 0 Print "**0**" Case 1 Print "**1**" End Select Case 2 Print "**2**" End Select
6
5.1.2 块结构条件语句
第 五 章 选 择 结 构 程 序 设 计 1.格式 If <条件1> Then [<语句组1>] [ElseIf <条件2> Then [<语句组2>]] …… [ElseIf <条件N> Then [<语句组N>]] [Else [<其他语句组>]] End If If <条件1> Then [语句组1] Else [语句组2] End If If语句 ElseIf子句
21
5.2 条件函数
第 五 章 选 择 结 构 程 序 设 计
5.2.1.IIf函数 格式: IIf(<表达式>, <表达式为True时的值>, <表达式为False时的值>) 功能: 当<表达式>的值为True时,返回第2个参数 的值;当<表达式>的值为False时,返回第 3个参数的值。(类似于具有两个分支的If语 句的功能) 例: 使用IIf函数求两个变量A和B的较大数。 MaxAB = IIf(A > B, A, B) 例: 使用IIf函数求三个变量A、B和C的最大数。 MaxAB = IIf(A > B, A, B) MaxABC = IIf(MaxAB > C, MaxAB, C) 22