程序在执行的时候,我们可以视情况决定要执行哪些程序,不执行哪些程序,或决定让某段程序代码可以重复执行;这些动作我们称为程序的流程控制。要控制程序的流程,首先我们要了解两种运算子,这两种运算子为比较运算子以及逻辑运算子。这两种运算子的传回值型态都是为布尔,不是代表真的True 就是代表伪的False。
比较运算子 要比较数值、字符串或日期,可以利用比较运算子。例如假设我们的程序要求使用者输入年龄,如果未满十八岁的话就不允许执行一些程序。这时候我们就要来检查使用者所输入的年龄,VB.NET 提供了六种用来测试数据的比较运算子,如下图所示:
比较运算子会将其比较测试结果以True 或False 的布尔型态传回,上表的范例利用指定运算子将比较的结果放到指定运算子左边的变量A~F。
逻辑运算子 除了比较运算子外,还有逻辑运算子。最常用到的逻辑运算子是And、Or 及Not。
And And 运算子用来组合两个叙述,And 运算子只有在这A以及B 两个叙述同时为True 时传回True,其余皆传回False。以下为And 运算子的真值表,其中F 代表False,T 代表Ture,而Y 代表输出:
Or Or 运算子用来组合两个叙述,只要Or 运算子在这A 或B 两个叙述有一个为True 时传回True,只有在两个叙述都为False 时传回False。以下为Or 运算子的真值表,其中F 代表False,T 代表Ture,而Y 代表输出:
其中F 代表False,T 代表Ture,而Y 代表输出。
Not Not 运算子用倒置单一叙述,Not 运算子在叙述为False 时传回True,叙述为True 时传回False。以下为Not 运算子的真值表,其中F 代表False,T 代表Ture,而Y 代表输出:
If...Then 叙述 If...Then 叙述可以依条件式的检查结果决定程序代码的执行。If...Then 的结构有三种,分别为 If...Then、If...Then...Else 以及If...Then...ElseIf 这三种。
If...Then 叙述 我们利用If...Then 叙述来决定程序是否要或是不要执行某段程序代码,其语法如下所示:
If 条件判断Then 叙述 或 If 条件判断Then 叙述一 叙述二 叙述N... End If
If 判断句会检查条件判断式的测试结果。其结果若传回True 或是非零的数值,则表示条件成立,便执行Then 后面的叙述。倘若测试结果传回False,则检查结果不成立,那们就不会执行Then后面的程序叙述。如果叙述只有一行,则可以接在Then 后面撰写程序叙述:
IF shtCPUSpeed < 500 Then Response.Write("你的计算机速度太慢了!") ?
<html> <% Dim intIncome As Integer intIncome=Cint(Request("Income")) If intIncome>990000 Then Response.Write("您的年输入超过99 万, 您应该缴的税为:") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00")) End If %> </html> Note 上列程序我们将If 和End If 之间的程序代码往内缩两个字符,这个程序代码的编排方式称做缩排。对于有结构的程序代码叙述,在撰写时将程序代码缩排可以让程序代码更容阅读。
If...Then...Else 叙述 我们利用If...Then...Else 叙述来决定程序要执行的程序代码区块,其语法如下所示:If 条件判断Then
If 条件判断Then 程序区块一 Else 程序区块二 End If If...Then...Else 结构在条件判断式的测试结果为True 成立时,执行Then 以及Else 之间的程序,执行完毕后则直接跳出If 判断结构继续执行程序;倘若条件判断式的结果为False 不成立,则执行Else 以及End If 之间的程序代码,执行完毕后一样直接跳出If 判断结构继续执行程序。
<html> <% Dim intIncome As integer intIncome=CInt(Request("Income")) If intIncome>990000 Then Response.Write("您的年收入超过99 万, 您应该缴的税为:") Response.Write(Format((intIncome*0.21)-105100,"$##,###,###.00")) Else Response.Write("您的年收入没超过99 万, 您应该缴的税为:") Response.Write(Format((intIncome*0.13)-25900,"$##,###,###.00")) End If %> </html> 我们在呼叫上述aspx 网页时如果将Income 参数以1000000 传入,则If 后面的条件判断式传回True 代表成立,所以Then 至Else 之间的程序代码将被执行,执行完毕后即略过Else 后面的程序代码并直接跳出If 判断结构继续执行程序;如果将Income 参数以990000 传入,则If 后面的条件判断式传回False 代表不成立,所以Then 至Else 之间的程序代码将被略过不被执行,直接无条件执行Else 至End If 之间的程序区块。
If...Then...ElseIf 叙述 我们利用If...Then...ElseIf 叙述来执行多个条件式的判断,其语法如下所示:
If 条件判断一Then 程序区块一 ElseIf 条件判断二 程序区块二 [Else 程序区块三] End If If...Then...ElseIf 结构在条件判断式一的测试结果为True 成立时,执行程序区块一的程序,执行完毕后不再做其它的条件判断,直接跳出If 判断结构继续执行程序;倘若条件判断式一的结果为False 不成立,则执行ElseIf 叙述的条件判断式二。倘若测试结果为True 成立时,则执行程序区块二;倘若条件表达式二的检查结果依然为False 不成立,则无条件执行Else 及End If 之间的程序区块三,执行完毕后一样跳出If 结构继续执行程序;倘若没有Else 叙述,则不执行任何动作。
<html> <% Dim shtGrade As Short=CShort(Request("Grade")) If shtGrade>=80 Then Response.Write("您的等级为A") ElseIf shtGrade>=70 Then Response.Write("您的等级为B") ElseIf shtGrade>=60 Then Response.Write("您的等级为C") Else Response.Write("您的等级为D") End If %> </html> 上述程序代码为将学生的成绩转换成A、B、C、D 的等级。这里的程序代码我们不再多做说明,唯一要注意的是下面这行用法:
Dim intGrade As Integer=CInt(Request("Grade")) 上列叙述用Resquest 对象从暂存区将参数Grade 取出后,为变量intGrade 的初始值,这样一来就可以取代原来的两行叙述:
Dim intGrade As Integer IntGrade=CInt(Request("Grade")) 巢状结构 如果If 条件判断式所要执行的程序区块里还有If 条件判断式,这种样式的循环我们称为巢状结构,如下所示:
If 条件判断Then If 条件判断Then 程序区块 Else 程序区块 End If Else 程序区块 End If 透过巢状结构的运用,程序的撰写就可以更灵活更有弹性。例如我们将上述程序多加个巢状If判断,六十分以下除印出等级为D 外,倘若不低于五十分则印出可以补考,低于五十分则印出不能补考。
<html> <% Dim shtGrade As Short=CShort(Request("Grade")) If shtGrade>=80 Then Response.Write("您的等级为A") ElseIf shtGrade>=70 Then Response.Write("您的等级为B") ElseIf shtGrade>=60 Then Response.Write("您的等级为C") Else Response.Write("您的等级为D") If shtGrade>=50 Then Response.Write("可以补考") Else Response.Write("不能补考") End If End If %> </html>
条件判断式和逻辑运算子的配合 上述所做的范例都是使用比较运算子进行比较运算,而本部分我们要利用逻辑运算子和条件判断式搭配使用。在条件判断式中,最主要是检查最后的结果来决定程序的执行。只要我们所使用的条件判断式最后传回True 或是False,就可以决定程序如何执行。在条件判断式中使用逻辑运算子,可以让我们做多个条件的判断,让我们撰写程序时更具弹性。
And And 运算子用于我们想要多个同时条件都成立时,才执行某段程序代码时使用。例如下列程序为检查使用者的名称及密码:
<html> <% Dim strID As String=CStr(Request("ID")) Dim strPWD As String=CStr(Request("PWD")) If strID="Charles" AND strPWD="1234" Then Response.Write("使用者名称及密码正确!") Else Response.Write("使用者名称及密码错误!") End If %> </html>
If 陈述最主要是检查If 和Then 间条件判断式的结果,在上述程序中条件判断式为:
strID="Charles" AND strPWD="1234"
|