载入中
自定义HTML载入中... loading
第4章 VBScript编程语言(二) [原创 2008-06-20 19:23:31]  删除... 
字体变小 字体变大

第4章  VBScript编程语言(二)
4.1  VBScript的选择结构
4.2  VBScript的循环结构
4.3  VBScript 过 程

 通过本章的学习,读者应该掌握以下内容:
 ?  VBScript的选择结构
 ?  VBScript的循环结构
 ?  VBScript过程
4.1  VBScript的选择结构
4.1.1  单条件选择结构
1.行If语句
语法:
If<条件>Then[<语句1>][Else<语句2>]

例4-1  If…Then…Else语句用法示例。
<% Option Explicit          '放在程序首行,强制变量声明 %>
<html>
<head>
 <title> If…Then…Else语句用法示例</title>
</head>
<body>

<%
Dim Grade
Grade=86              '给变量直接赋值
If Grade>=85 Then  Response.write "好优秀哟!"  Else   Response.write "较上次有进步哟!"
%>
</body>
</html>

2.块If语句
 块If语句又称多行If语句,也就是将一个选择结构用多个语句来实现。
 语法:
 If<条件1>Then
 [<语句序列1>]
 [Else
 [语句序列2]]
 End  If

例4-2  块If语句应用。
<html>
  <head><title>块If语句实例</title></head>
  <body><h3>日期型测试函数</h3><hr>
    请输入日期型数据:
    <input name="Text1" type="TEXT" SIZE="10"><P>

    <input type="Button" name="Button1"  value="确认">
    <script for ="Button1" event="onClick" language="VBScript">
      x = Text1.value
      If Isdate(x) Then 
        msgbox "您输入的是日期型数据"

     else
      MsgBox "您输入的不是日期型数据"
     end  if
  </SCRIPT>
  </BODY>
</HTML>

 例4-4  某超市店庆促销,采用多购物多打折的优惠办法,条件为每位顾客一次购物累计:
(1)在500元以上者,按九五折优惠;
(2)在1 000元以上者,按九折优惠;
(3)在1 500元以上者,按八五折优惠;
(4)在3 000元以上者,按八折优惠。

编写如下VBScript代码:
<html>
  <head><title>优惠价格计算</title></head>
  <body><h3>优惠后价格</h3><hr>
    所购商品总金额:
    <input name="Text1" type="TEXT" size="10">&nbsp;元<P>


    <input type ="Button" name="Button1"  value="计算">
    <script for ="Button1" event="onClick" language="VBScript">
      x = Text1.value
      If Not IsNumeric(x) Then MsgBox "您输入的不是数值数据" : Exit Sub


      If x < 500 Then
        y = x
      ElseIf x < 1000 Then
        y = 0.95 * x
      ElseIf x < 1500 Then
        y = 0.9 * x
      ElseIf x < 3000 Then
        y = 0.85 * x

      Else
        y = 0.8 * x
      End If
      MsgBox "优惠后价格为:" & y & "元"
    </script>
  </body>
</html>

4.1.2  多分支条件选择结构
语法:
Select Case〈测试条件〉
  [Case〈表达式表1〉
     [〈语句序列1〉]]
  [Case〈表达式表2〉
     [〈语句序列2〉]]
   ...
  [Case Else
     [〈其他语句序列〉]]
End Select

例4-5  将例4-4中的If语句改为Select语句。
代码如下:
<html>
  <head><title>优惠价格计算</title></head>
  <body><h3>优惠后价格</h3><hr>
    所购商品总金额:
    <input name="Text1" type="TEXT"

SIZE="10">&nbsp;元<P>
    <input type ="Button" name="Button1"  value="计算">
    <script for ="Button1" event="onClick" language="VBScript">
      x = Text1.value
      If Not IsNumeric(x) Then MsgBox "您输入的不是数值数据" : Exit Sub

      Select Case True
        Case x < 500
          y = x
        Case x >= 500 And x < 1000
          y = 0.95 * x
        Case x >= 1000 And x < 1500
          y = 0.9 * x

Case x >= 1500 And x <300
          y = 0.85 * x
        Case Else
          y = 0.8 * x
      End Select
      MsgBox "优惠价为:" & y & "元"
    </script>
  </body>
</html>
4.2  VBScript的循环结构
循环可分为3类:
(1)在条件变为False之前重复执行语句;
(2)在条件变为True之前重复执行语句;
(3)按照指定的次数重复执行语句。

1.Do…Loop语句
 (1)进入循环之前检查条件(Do…Loop循环)是否为True。
 进入循环之前检查条件是首先判断条件,根据条件判断结果决定是否执行循环,执行循环的最少次数为0。

语法:
Do [{ While | Until }〈条件〉]
   [〈语句序列1〉]
   [Exit Do]
   [〈语句序列2〉]
Loop

 例4-6  求累加和1 + 2 + 3 +…+ 100。
 分析:采用累加的方法,用变量s来存放相加的和(开始为0),用变量n来存放加数(加到s中)这里的n又用来计数,作为循环条件至100为止,则停止循环。

程序代码如下:
<html>
<head>
<title>累加和计算</title>
</head>
  <body><h3>累加和计算</h3><hr>
    求累加1 + 2 + 3 +…+ 100的值。<p>
<input type="button" name="button1"  value="计算">

    <script for="button1" event="onclick" language="vbscript">
      s = 0: n = 1
      do while n <= 100
        s = s + n
        n = n + 1
      loop
      msgbox "1+2+3+…+100 = "  & s
    </script>
  </body>

 上面的当型循环的实例,当n小于等于100时是循环的起始条件,否则一次也不循环。将上例改为直到型循环 。
 修改后的VBScript代码如下:

<script for="Button1" event="onClick" language="VBScript">
        s = 0: n = 1
      Do until n>100
        s = s + n
        n = n + 1
      Loop
      MsgBox "1+2+3+…+100 = "  & s
    </script>

 例4-7  计算100以内的奇数的平方和。
 分析:100以内的奇数为:1,3,5,7…。连续奇数之间相差2,赋初值I=1,在循环内使变量I=I+2,保证I总为奇数即可。

<% Option Explicit %>
<html>
<head>
<title> Do…Loop循环语句用法示例</title>
</head>
<body>

<%
Dim Sum,I,N
Sum=0
N=100
I=1
'循环,从1加到N

Do While I<=N
Sum=Sum+I^2
I=I+2
Loop
Response.write "100以内的奇数的平方和=" & Cstr(Sum)
%>
</body>
</html>

 (2)进入循环之后检查条件是否为True。
 进入循环之后检查条件,首先执行循环体,然后判断条件,根据判定结果决定是否继续执行循环,因此执行循环次数至少为1。

语法:
Do
   [语句序列1]
   [Exit Do]
   [语句序列2]
Loop [{While | Until} 条件]

例4-8  将例4-6用Do…loop Until改写。
<html>
<head>
<title>累加和计算</title>
</head>
  <body><h3>累加和计算</h3><hr>

    求累加1 + 2 + 3 +…+ 100的值。<p>
    <input type="button" name="button1"  value="计算">
    <script for="button1" event="onclick" language="vbscript">
      s = 0: n = 1
      do
        s = s + n
        n = n + 1

      loop  while n <= 100    
'只是条件放到Loop while后
      msgbox "1+2+3+…+100 = "  & s
    </script>
  </body>

2.While…Wend语句
 While…Wend语句比较简单,只要指定条件为True,则会重复执行一系列的语句,但是由于While…Wend缺少灵活性,所以建议最好使用Do…Loop语句。

3.For…Next语句
 For…Next语句用于指定语句块运行的次数。在循环中使用计数器变量,该变量的值随每一次循环增加或减少。

 语法:
 For<循环变量>=<初值>To<终值>[Step<步长>]
 [语句序列1]
 [Exit For ]
 [语句序列2]
 Next[循环变量]

说明:
 (1)如果没有指定步长,是默认为1。
 (2)<步长>可是正数也可是负数。
 (3)可以在循环中的任何位置放置一个Exit For语句,可随时退出循环。

 例4-10  使用For…Next循环,计算“2+4+6+…+100”的和。
 分析:求100以内偶数的和,从初值j=2开始,终值为100,步长为2。

<html>
<head>
<title>For…Next循环,步长为正</title>
</head>
<body>
<h2>求2+4+6+…+n=?</h2>
<%

Dim j, total
total=0
For j = 2 To 100 Step 2
total = total + j
Next
response.write"2+4+6+…+100= " & total
%>
</body>
</html>

 例4-11  使用For…Next循环,求“50+48+46+…+2”的和。
 分析:从初值j=50,计数器变量每次减2(步长为-2),终值为2。

<html>
<head>
<title>For…Next循环,步长为负</title>
</head>
<body>
<h2>求50+48+46+…+2=?</h2><hr>
<%

 Dim j, total
total=0
 For j =50 To 2 Step -2
 total = total + j
 Next 
response.write "50+48+46+…+2= " &total
%>
</body>
</html>

 例4-12  修改例4-11,求使50+48+46+…+j的和大于500后的第一个值j。
 <html>
 <head>
 <title>exit for的用法</title>
 </head>
 <body>

<h2>求使50+48+46+…+j的和大于500后的第一个值
j</h2><hr>
<%
 Dim j, total
total=0
For j =50 To 2 Step -2
  total = total + j

  if total>=500 then    exit for
Next 
response.write "则程序运行到j= " &j&"时停止循环。
<br>则计算50+48+...+"&j&"="&total
%>
</body>
</html>

4.循环的嵌套
 循环可以多级嵌套。所谓嵌套,就是在一个大循环内可以包含一个小循环,此时小循环就相当于大循环内的执行语句。


例4-13  循环的嵌套示例。
 定义一个二维数组并给其赋值,然后求出数组变量的和。
 分析:要给二维数组赋值,首先要读出二维数组变量的个数,用二重循环来实现分别读出行列,然后用一个变量赋给数组变量,最后用累加方法求出数组变量的和。

<html>
<title>循环嵌套的使用</title>
<body>
<h2>求出数组a(12,20)中各变量值的总和</h2><hr>
<input type="Button" name="Button1"  value="计算">
    <script for="Button1"

event="onClick" language="VBScript">
Dim a(12,20),sum   '声明一个2行2列的数组
For  I=0 to 12  '循环1
   For j=0  to 20  '循环2
     a(i,j)=i    '给数组变量赋值
    Sum=sum+a(I,j)
   Next
  Next

msgbox  "求出数组变量a(12,20)中各变量值的总和:"&Cstr(sum)
</script>
</body>
</html>

 例4-14  编写一个程序,输出如图4-14所示的图案。
 分析:图为4行4列,那么用一个循环控制行,嵌套一循环控制列的输出即可。


源程序代码如下:
<html>
<title>使用循环嵌套输出一图形</title>
<body>
<%
s="*":p=""

For  I=0 to 3  '循环1
   For j=0  to 3   '循环2
   p=p&"&nbsp"&S
   Next
RESPONSE.WRITE P&"<BR>"
p=""
Next
%>
</body>
</html>

 注意:在do…loop中跳出循环的指令是:exit do。如下例为当和数大于1000时,使用exit do强行终止循环。

<%
sum=0
n=100
do while n<=100
sum=sum+I
 do while  sum>1000 
   exit do
   enddo
n=n+1
%>
4.3  VBScript 过 程
 在VBScript过程中,过程有两种,一种是Sub子程序,一种是Function函数。两者的区别在于:Sub子程序只执行程序而不返回值,而Function函数可以将执行代码后的结果返回给请求程序。

4.3.1  Sub子程序
1.声明Sub子程序的语法
 语法:
 Sub子程序名(参数1,参数2,…)
 …
 end sub
 或
 sub子程序名()
 …
 end sub

2.Sub过程调用的两种方式
(1)使用Call语句:
 语法:
 Call  子程序名(参数1,参数2,…)
(2)不使用Call语句
 语法:
 子程序名  参数1,参数2

例4-15  Sub子程序示例。
<% Option Explicit                     
'放在程序首行,强制变量声明 %>
<html>
<head>
    <title>Sub子程序示例</title>
</head>
<body>

<%
    Dim user_name                    
'声明一个变量作为实参
    user_name="阿方"
    Call Welcome(user_name)             
'调用子程序,显示欢迎信息
    '下面是子程序,用来显示欢迎用户的信息
    Sub Welcome(Name)                 
'Name是形式参数

        Dim StrWelcome                    
'不能再声明Name了
        StrWelcome=Name&":你好,欢迎光临ASP子程序设计一节!"
        Response.Write StrWelcome           
'显示StrWelcome的值
    End Sub
    %>  
</body>
</html>

例4-16  求a和b的立方和。
<% Option Explicit             
'放在程序首行,强制变量声明 %>
<html>
<head>
<title> 用sub子程序求a^3+b^3=?</title>
</head>
<body>
<h3>计算a^3+b^3=?</H3><HR>

<%
    Dim m,n
       m=5
       n=9
    call countsum(m,n)     
'调用子程序显示结果


'下面是子程序,用来计算两个数的立方
    sub CountSum(a,b)        
        dim sum
        Sum=a^3+b^3
      Response.write "a和b的立方和等于"&Cstr(sum)
    End sub
    %>
</body>
</html>

4.3.2  Function函数
 语法:
 Function函数名(参数1,参数2,…)
 ……
 end Function
 或
 Function函数名
 ……
 end Function


 Function过程调用方式只有一种,即通过直接引用函数名实现函数的调用,而且函数名必须用在变量赋值语句的右端或表达式中,和函数调用一样。

例4-17  调用自定义函数。
<html>
<tittle>调用自定义函数</title>
<body>
<%
dim m,n
call myfunction '调用函数
%>

</body>
</html>
<script runat=server language=vbscript>
function  myfunction ()
flag=0
response.write("函数被调用了!1次!")&m
end function
</script>

例4-18  为了与子程序相比较,下面利用function函数,求a3+b3的值。
<% Option Explicit      
'放在程序首行,强制变量声明 %>
<html>
<head>
<title> 用Function函数求a^3+b^3=?</title>

</head>
<body>
<H3>计算a^3+b^3=?</H3><HR>
<%
Dim m,n,sum
m=5
n=9

sum= CountSum(m,n)           
'调用函数,求立方和
Response.write "m和n的立方和等于"& Cstr(sum)       '显示结果

'下面是函数,用来计算两个数的立方
    Function CountSum(a,b)        
        '由于a,b为形式参数,在函数被调用时,其值由实际参数给出
        CountSum=a^3+b^3
    End Function
    %>
</body>
</html>

4.3.3  子程序和函数的位置
 子程序和函数可以放在ASP文件的任意位置上,也可以放在另外一个ASP文件中。
 例4-19  求a3+b3值的主程序。
<% Option Explicit      
'放在程序首行,强制变量声明 %>
<!--#include file="ch4-20.asp"-->     '这是HTML语句,利用#include语句可以在一个文件中插入另一个文件

<html>
<head>
<title> 用Function函数求a^3+b^3=?</title>
</head>
<body>
<H3>计算a^3+b^3=?</H3><HR>

<%
Dim m,n,sum
m=5
n=9
sum= CountSum(m,n)         
'调用函数,求立方和
Response.write "m和n的立方和等于"& Cstr(sum)       '显示结果
%>
</body>
</html>

例4-20  求a3+b3值的自定义函数。
<%
'下面是函数,用来计算两个数的立方
    Function CountSum(a,b)
        '由于a,b为形式参数,在函数被调用时,其值由实际参数给出,
        '所以此处不能再定义
        CountSum=a^3+b^3
    End Function
%>

所属版块: 科技
票数:
什么是“我顶”?
点击数:    评论数:
本文章引用通告地址(TrackBack Ping URL)为:
本文章尚未被引用。
发表评论
大 名:
(不填写则显示为匿名者)
网 址:
(您的网址,可以不填)
标 题:
内 容:
请根据下图中的字符输入验证码:
(您的评论将有可能审核后才能发表)
和讯个人门户 v1.0 | 和讯部落 | 客服中心