第 4 章 子程序与函数

学习导航

  1. 子程序
  2. 函数

 

4.1 子程序 (Subroutines)

什么是子程序?

“子程序”是将一段具有某种特定功能的语句区块单句撰写成一个独立的程序,给予特定的名称,它的格式如下:

 sub 子程序名称 [(参数1,参数2,.. .)]

  程序代码

 end sub

子程序一定要有名称,调用子程序时就会使用到它的名称。如果没有调用它,子程序并不会执行,请看下面范例。

<script language="vbs">
    msgbox "我在外面"
    sub A
        msgbox "我在里面"
    end sub
</script>
<script language="vbs">
    msgbox "我在外面"
    A
    sub A
        msgbox "我在里面"
    end sub
</script>

4.2 调用子程序名称 [(参数1,参数2,...)]

方法一:call 子程序名称 参数1,参数2

方法二:子程序名称 参数1,参数2。。。

<script language="vbs">
    sub chang(c)
        degree=c*1.8+32
        msgbox "摄氏" & c & "度转换为华氏" & degree & ""
    end sub
    degreec=inputbox("请输入摄氏度:")
    chang degreec
</script>
<script language="vbs">
    msgbox "我在外面"
    A
    msgbox "我在后面"
    sub A
      msgbox "我在里面"
    end sub
</script>

4.3 局部变量和全局变量

<script language="vbs">
    A
    msgbox "i等于" & i
    sub A
      i=10
    end sub
</script>

为什么这里弹出的信息框I的值为空呢,因为子程序里面的I变量是局部变量,到子程序外面已经超出了变量I的有效范围,所以到了子程序之外后变量“I”失效了。

<script language="vbs">
    dim i
    A
    msgbox "i等于" & i
    sub A
        i=10
    end sub
</script>

这个程序在子程序之外先用“DIM I”对变量“I”进行声明,这时变量“I”就会变成了“全局变量”,所谓的全局变量就是指不管在程序的哪一部分,包括子程序之内,这个变量都有效果。一般变量只要在子程序之外先声明或是先出现就会变成全局变量,反之就是局部变量。所以只要跳出该程序,那么局部变量就会失效。

4.4 终止执行子程序

一般子程序执行到 end sub 就会结束,但也可以提早结束子程序,而直接跳回原来调用子程序的地方。

<script language="vbs">
    A
    sub A
        I=10
        exit sub
        msgbox "我不会执行到"
    end sub
</script>

在程序中直接使用“Exit sub”来跳出子程序,所以 msgbox “…”不会执行到。

4.5 事件驱动

在VBScript中,子程序不仅扮演执行重复动作的角色,还可以侦测到用户对浏览器所做的操作。

格式:

 sub 对象_操作

  所要响应的程序代码

 end sub

<script language="vbs">
    sub document_onclick
        msgbox "您按到我了!"
    end sub
</script>

 

在这个例子中,我们点击了页面单击鼠标时,就会驱动document_onclick这个子程序,而出现一个对话框。“对象”_”事件”中间要以下滑线隔开。

4.6 函数(Functions)

在写程序时,常常遇到一些相同的代码。那么我们经常会用调用的方法去处理。而函数的结构及用法与子程序几乎相同,唯一不同的是函数可以在执行结束的时候返回一个值,而子程序不会。函数是以“Function”开始,”End Function”结束。

格式:function 函数名称 [(参数1,参数2. . .)]

      程序代码

      函数名称=程序代码

     end function

<script language="vbs">
    function circle(n)
        circle=n*n*3.14
    end function
    msgbox "半径为10的圆面积为" & circle(10)  
</script>
<script language="vbs">
    function sum(n)
        total=0
        for I=1 to n
            total=total+I
        next
        sum=total
    end function
    number=InputBox("请输入一个整数:")
    mysum=sum(number)
    msgbox "1加到" & number & "的总和为" & mysum
</script>

函数不仅能够传入一个参数,您也可以根据实际需求而传入多个参数。

<script language="vbs">
    function sum(n,s)
        total=0
        for I=s to n
            total=total+I
        next
        sum=total
    end function
    start=inputbox("请输入初始值:")
    number=inputbox("请输入一个整数")
    mysum=sum(number,start)
    msgbox start & "加到" & number & "的总和为" & mysum
</script>

 

posted @ 2016-06-12 22:17  水之原  阅读(747)  评论(0编辑  收藏  举报