6.2.3 VBScript的控制结构
在没有控制语句的情况下,VBScript中的代码总是按照书写的先后顺序依次执行。但是在实际应用中,通常要根据情况来改变代码的执行顺序,这时就要用到控制结构。在VBScript中,控制结构有两种,即判断结构和循环结构。
1. 判断结构
VBScript支持的判断结构分为条件语句和分支语句两种。
1)条件语句
条件语句一般使用多行语句的结构,根据条件的真或假指定要运行的语句。以下是多行条件语句的常用的两种形式。
形式一:If…Then…End If
If 条件语句 Then
执行语句
End If
形式二:If…Then…Else…End If
If 条件语句 Then
执行语句1
Else
执行语句2
End If
条件语句可以嵌套,每一个“执行语句”中还可以包含有条件语句。因此,条件语句可以形成很多个分支的结构。它的使用方法和含义与其他高级语言非常相似,这里不再举例说明。
注意:条件语句除了有多行结构外,还有单行结构;多行结构还有另外几种写法。这里只是列举了条件语句常用的多行结构的常用写法。
2)分支语句
分支语句也就是Select Case语句,它是判断结构的另外一种形式,在某些情况下使用分支语句比条件语句有更强的可读性。当然,也可以用条件语句来实现分支语句的功能。
分支语句的语法结构如下。
Select Case 变量或表达式
Case 结果1
执行语句1
Case 结果2
执行语句2
……
Case 结果N
执行语句N
Case Else
执行语句N+1
End Select
在执行Select Case语句时,先计算表达式或变量的值,然后将结果与每一个Case后的结果进行比较,若相等就执行此Case后的“执行语句”,然后退出Select Case语句,若与所有的结果(结果1~结果N)都不相等,则执行Case Else后的执行语句N+1后再退出。
---------------------------清单6-4 6-4.asp--------------------------
<HTML>
<HEAD>
<TITLE> 分支语句的使用 </TITLE>
</HEAD>
<BODY>
<%
Dim h
h=Hour(Now())'使用内置函数获取服务器当前时间的小时数
Select Case h
Case 0
Response.write "现在时间:零点"
Case 7,8,9,10,11,12
Response.write "现在时间:上午"
Case 13,14,15,16,17,18
Response.write "现在时间:下午"
Case Else
Response.write"现在时间:夜间"
End select
%>
</BODY>
</HTML>
--------------------------------------------------------------------
调试结果如图6-12所示。
图6-12 分支语句的应用
2. 循环结构
循环结构通常用于重复执行一组语句。在VBScript提供了多种不同风格的循环,下面学习最常用的Do循环和For循环。
1)Do循环
Do循环有以下两种形式。
第一种是Do while…Loop循环。
语法如下:
Do while 条件
执行语句
Loop
第二种是Do…Loop while循环。
语法如下:
Do
执行语句
Loop While 条件
第一种是入口型循环,它先检查条件是否为True,如果为True,才会进入循环中执行语句,否则退出循环;而第二种是出口型循环,先无条件地进入循环中执行1次后,再判断条件是否为True,如果为True,才会继续进入循环中执行语句,否则退出循环。
可以把两种do循环中的关键字while换成until,换成until以后,意义与while相反:当条件为True时,退出循环;条件为False时,循环。
例如,用Do循环计算1+2+3+…+100的值
---------------------------清单6-5 6-5.asp--------------------------
<HTML>
<HEAD>
<TITLE> Do循环的使用 </TITLE>
</HEAD>
<BODY>
<%
Dim i,sum
i=1
sum=0
Do While i<=100
sum=sum+i
i=i+1
Loop
Response.write "使用Do while….Loop循环:Sum(1,…,100)="&sum
i=1
s=0
Do
s=s+i
i=i+1
Loop While i<=100
Response.write"<br>使用Do …. Loop while循环:Sum(1,…,100)="&s
%>
</BODY>
</HTML>
--------------------------------------------------------------------
调试结果如图6-13所示。
图6-13 Do循环的使用
2)For循环
与Do循环不同,For循环包含有一个循环变量,每执行一次循环,循环变量的值就会增加或减少。For循环的语法格式如下。
For 循环变量=初值 To 终值 [Step=步长]执行语句
Next
其中,“循环变量”、“初值”和“步长”都是数值型。步长可正可负,如果为正,初值必须小于或等于终值;如果为负,初值必须大于或等于终值。步长为1时,可以省略Step=1。
用For循环求1+2+3+…+100的值。
---------------------------清单6-6 6-6.asp--------------------------
<HTML>
<HEAD>
<TITLE> For循环的使用 </TITLE>
</HEAD>
<BODY>
<%
Dim i,sum
sum=0
For i=1 To 100
sum=sum+i
Next
Response.write"1+2+3+...+100="&sum
%>
</BODY>
</HTML>
--------------------------------------------------------------------
调试结果如图6-14所示。
图6-14 For循环的使用
注意:在VBScript中,循环变量在每一次循环后自动增加或减少,不需要在循环中修改循环变量。如6-10.asp中,若在循环中增加语句i=i+1,会造成逻辑错误得不到正确的结果。
3)强行退出循环
一般情况下,都是根据条件判断退出循环,但有时候需要强行退出循环。在Do…Loop循环中,强行退出循环的指令是:Exit Do;在For…Next 循环中强行退出循环的指令是:Exit For。例如,
<%
Dim i,s
s=0
For i=1 To 100
s=s+i
If i>50 then '如果i>50就强行退出循环
Exit For
End If
Next
%>
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。