单行结构条件语句
单行结构条件可以分为单分支IF语句和二分支IF语句两种情况。 1.单分支IF语句 语法格式一:If条件Then语句 语法格式二:If 条件 Then
语句块
End If
单分支IF语句的执行流程是首先判断条件。若条件成立,则执行Then后面的语句或语句块,否则执行下一条语句。流程如图6-1所示。
【例6.1】从键盘任意输入两个数,按由小到大的顺序显示在当前窗体上。 (1) 分析:定义变量x和y表示任意输入的两个数。依题意,当x>y时,要交换x与y的值,所以要定义一个中间变量t。 (2) 在窗体的单击事件上编写下面的事件过程: Private Sub Form_Click() Dim x As Single, y As Single , t As Single x=Val(InputBox("输入x的值","输入框1")) y= Val (InputBox("输入y的值","输入框2")) If x>y then t=x x=y y=t End if Print x, y End Sub (3) 程序功能:运行程序后,单击窗体分别弹出两个输入框供用户输入x和y的值,然后在窗体上按由小到大的顺序输出这两个数。当分别输入56和2008时,运行结果如图6-2所示。
图6-2 按由小到大的顺序输出两个数
2.二分支IF语句 语法格式一: If条件Then语句1 Else语句2 语法格式二: If 条件 Then 语句块1 Else 语句块2 End if 执行二分支IF语句时,首先判断条件。若条件成立,则执行Then后面的语句1或语句块1,否则执行Else后面的语句2或者语句块2。流程如图6-3所示。
【例6.2】编写一个函数,求两个数中的较大数。 Private Function MaxValue1 (a As Integer,b As Integer) As Integer If a > b Then MaxValue1 = a Else MaxValue1 = b End Function 【例6.3】从键盘输入年份,判断该年份是否闰年。判断闰年的条件是年份能被4整除,但不能被100整除;或者能被400整除。 (1) 分析。定义变量year表示年份,由提示信息可知,判断闰年的条件可以表示为year Mod 4=0 And year Mod 100 <>0 Or year Mod 400=0。 (2) 在窗体的单击事件上编写下面的事件过程。 Private Sub Form_Click () Dim year As Integer year=Val(InputBox("请输入年份","输入框")) Print "您输入的年份是:"; year; "年" If (year Mod 4=0 And year Mod 100 <>0 ) Or (year Mod 400=0) then Print "该年份是闰年" Else Print "该年份不是闰年" End If End Sub ③ 程序功能。运行程序后,单击窗体弹出输入框供用户输入年份,然后在窗体上输出判断结果。当分别输入2000时,运行结果如图6-4所示。
1. 块结构条件语句 块结构条件语句语法格式如下: If <条件1> Then <语句块1> [ElseIf <条件2 > Then <语句块2> ] [ElseIf <条件3 > Then <语句块3> ] …… [Else <语句块n>] End If 执行多分支IF语句时,首先判断条件1是否成立。若成立,则执行语句块1;否则如果条件2成立,则执行语句块2;否则如果条件3成立,则执行语句块3……否则转到Else部分执行语句块n。 【例6.4】函数 y= 0 (x=0),根据x的数值,对变量y进行赋值。 1 (x>0)
程序代码: if x<0 then
y = -1 elseif x=0 then y=0 else y=1 end if 【例6.5】求解一元二次方程ax2+bx+c=0的实根x1、x2。 (1) 分析。令判别式s=b2 (2) 在窗体的单击事件上编写下面的事件过程。 Private Sub Form_Click () Dim a As Single, b As Single , c As Single, s As Single,x1,x2 As Single a= Val(InputBox("提示","输入方程的第一个系数")) b= Val(InputBox("提示","输入方程的第二个系数")) c= Val(InputBox("提示","输入方程的第三个系数")) s=b^2-4*a*c If s>0 Then x1=(-b+sqr(s))/(2*a) x2=(-b-sqr(s))/(2*a) print "方程的两个不相等实根分别为:";x1;x2 ElseIf s=0 Then x1=(-b+sqr(s))/(2*a) Print "方程的两个相等的实根均为:";x1 Else Print "方程无实根" End If End Sub (3) 程序功能。运行程序后,单击窗体分别弹出三个输入框由用户输入方程系数a,b,c的值,然后在窗体上显示根的情况。当分别输入1,2,1时,运行结果如图6-5所示。
2. IIf函数
IIf是Immediate If 的缩写,实际上它是If…Then…Else结构的简写版,可用来执行简单的条件判断。其格式为: IIf(条件,当条件为True时的部分,当条件为False时部分) “条件”是一个关系或逻辑表达式。当“条件”为真时,函数返回“True时部分”,而当“条件”为假时,函数返回“False时部分”。注意,该函数中的3个参数都不能省略。 例如求x,y中的大数,放入max变量中,语句如下: max=IIf (x > y, x, y) IIf函数可以嵌套使用,例如若求3个数x,y,z中的最大值,可用如下语句: max= IIf (IIf (x > y, x, y) > z, IIf (x > y, x, y), z) 在有些复杂情况下,对某个条件进行判断后可能会出现多种取值的情况,此时,我们可以使用多分支结构语句来实现多条件选择结构。在Visual Basic中,多分支结构程序通过情况语句― Select Case来实现,它根据一个表达式的值,在一组相互独立的可选择语句序列中通过挑选要执行的语句序列。 Select Case语句的一般格式为: Select Case <测试表达式> Case <表达式结果表列1> <语句块1> [Case <表达式结果表列2> <语句块2>] … [Case Else <语句块n>] End Select 在Select Case语句中,测试表达式通常是数值型变量或字符串表达式。该语句的功能是判断测试表达式的取值与各个表达式结果表列的取值是否匹配。若与其中某个表达式结果表列的值匹配,则执行该表列后的相应语句块,若无一满足,而又有Case Else子句,则执行Case Else后相应的语句块n。 Select Case语句一般格式中的表达式结果表列可以有如下4种格式: 1. 表达式结果:此种格式表达式结果表列中只有一个数值或字符串供用户与测试表达式的值进行比较,这要求两者精确匹配。例如,Case 1或者Case "char"等。 2. 表达式结果1[,表达式结果2]……[,表达式结果n]:此种格式在某一个表达式结果表列中有多个数值或字符串供用户与测试表达式的值进行比较,多个取值之间用逗号隔开。如果表达式的值与这些数值或字符串中的一个相等,即可执行其后相应的语句体部分。例如,Case 1,3,5,7或者Case "a", "b", "c", "d" 等。 3. 表达式结果1 To 表达式结果2。此种格式在表达式结果表列中提供了一个数值或字符串的取值范围,可以将此范围内的所有取值与测试表达式的值进行比较。如果测试表达式的值与此范围内的某个值相等,则可执行此表达式结果表列后的相应语句体部分。例如,Case 1 To 4或者Case "a" To "z"等。 4. Is 关系运算符数值或字符串。此种格式使用了关键字“Is”,其后只能使用各种关系运算符:“=”、“<”、“>”、“<=”、“>=”或“< >”等。可以将测试表达式的值与关系运算符后的数值或字符串进行关系比较,检验是否满足该关系运算符。若满足,则执行此表达式结果表列后的相应语句体部分。例如,Case Is < 3 或者Case Is > "Apple" 等。 在实际运用中,Visual Basic允许以上这几种格式混合使用。例如: Case Is < 5, 7, 8, 9, Is > 12或Case Is < "z", "A" To "Z" 【例6.6】编写一个程序,将分数转换成等级,转换方式如表6-1所列。 表6-1 分数等级转换表
(1) 分析。定义变量x表示输入的分数,由题意可知,等级的划分由输入的分数x决定。根据分数x所属的范围,可以划分5个等级,因此x就是Select Case语句的条件表达式。 (2) 在窗体的单击事件上编写下面的事件过程。 Private Sub Form_Click() Dim x as Single,level as String x=Val(InputBox("请输入分数","提示")) Select Case x Case Is>=90 Level = "优" Case Is>=80 Level = "良" Case Is>=70 Level = "中" Case Is>=60 Level = "及格" Case Else Level = "不及格" End Select Print "您输入的分数为:"; x Print "对应的成绩等级为:"; level End Sub (3) 程序功能。运行程序后,单击窗体弹出一个输入对话框,由用户输入分数x的值,确定后在窗体上显示成绩的等级。当输入86分时,运行结果如图6-6所示。
在使用Select Case语句时,需要注意下面两个问题: ① 若在多个Case子句中有同一种取值重复出现,则只执行第一个出现此取值的Case语句后的相应语句体。 ② Case Else子句必须放在其他Case子句后面,当条件表达式的值与前面所有Case子句条件结果表列取值均不匹配时,就执行Case Else后面的语句块部分。这个子句可以省略。 小结: 选择结构是用来描述现实世界分支现象的重要手段。所谓选择结构,表示根据条件表达式的值做出不同的选择,执行不同的操作。当程序运行到选择结构时,首先对某个条件做出判断,再根据这个条件的具体取值情况,选择一组语句执行。在Visual Basic中,此类问题通过选择结构程序来解决,而选择结构则是通过条件语句来实现。条件语句也称之为IF语句,有单行结构块结构两种形式 作业: 1、 举例说明选择结构的特点? 2、举例说明Select Case语句的使用?
|
|