第 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>
时间: 2024-10-13 12:05:18

第 4 章 子程序与函数的相关文章

mySQL教程 第7章 存储过程和函数

第7章 存储过程和函数 存储过程和存储函数 MySQL的存储过程(stored procedure)和函数(stored function)统称为stored routines. 1. MySQL存储过程和函数的区别 函数只能通过return语句返回单个值或者表对象.而存储过程不允许执行return,但是通过out参数返回多个值. 函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行. 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制

重构改善既有代码的设计--第6章--重新组织函数

第6章 重新组织函数 6.1 Extract Method Long methods,因为包含太多信息和逻辑,不容易处理和修改.所以需要进行Extract Method. (1)场景 当一个函数过长,或者一段代码需要注释才能看懂,就可以考虑将其放入独立函数中. (2)优点 每个函数粒度小,被复用的几率大,被修改的难度也会低一些:高层函数逻辑分明. (3)做法 以"做什么"命名,而不是"怎么做".比如,printDetail(). 将源函数中的某一段提取到目标函数中.

第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)

原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(3) 本文为这个系列最后一篇.将是如何使用DBCC命令来监控SQLServer日志空间的使用情况. 前言: 每个数据库都必须有事务日志.事务日志记录每个DML操作,并应用于SQLServer的数据库中,如果恢复模式为FULL并经常有DML操作,日志将增长得非常快.几时恢复模式为simple,当数据库处于事务复制或者合并复制时,日志通常会增长.如果日志不是经常备份且日志文件的增长没有受到限制的话,将有可能

Lua_第25章 调用 C 函数

第25章 调用 C 函数  扩展 Lua 的基本方法之一就是为应用程序注册新的 C 函数到 Lua中去. 当我们提到 Lua 可以调用 C 函数,不是指 Lua 可以调用任何类型的 C 函数(有一些包可以让 Lua 调用任意的 C 函数,但缺乏便捷和健壮性).正如我们前面所看到的,当C 调用 Lua函数的时候,必须遵循一些简单的协议来传递参数和获取返回结果.相似的, 从Lua 中调用 C 函数,也必须遵循一些协议来传递参数和获得返回结果.另外,从 Lua 调用 C 函数我们必须注册函数,也就是说

第六章 深入理解函数 Lua程序设计笔记

--第六章 深入理解函数Lua中函数是"第一类值",与其他传统类型有相同的权利:可以储存到变量或table中,可以作为函数实参传递,还可以作为函数的返回值. 函数的标准定义: foo = function(x) return x*2 end 一个函数定义实际上就是一条赋值语句,这条语句创建了一种类型为"函数"的值,并将这个值赋予一个变量. --6.1closure(闭合函数) function newCounter() local i = 0 return func

源码-PL/SQL从入门到精通-第十三章-子程序-Part 2

调试nocopy功能时,为了看到实际效果,设置了一个比较大的循环次数,结果悲剧了: 运行了近1个小时没出结果,电脑死机(任务管理器都打不开):无奈只能强行关机,开机时间又特别长,一度让我以为系统崩溃. 看来,PL/SQL developer下调试这种暴力计算的程序风险很高啊,我在Eclipse下调试Java程序时从来没碰到过这种造成电脑死机的情况. 不过,这章的内容实用性很强,死机也值了(有点心疼电脑了) -代码13.11 使用%Type定义形式参数 CREATE OR REPLACE PROC

第十一章 存储过程和函数

第一节:存储过程和函数的引入 存储过程和函数是在数据库中定义一些 SQL 语句的集合,然后直接调用这些存储过程和函数来执行已经定义好的 SQL 语句. 存储过程和函数可以避免开发人员重复的编写相同的 SQL 语句. 而且, 存储过程和函数是在 MySQL服务器中存储和执行的,可以减少客户端和服务器端的数据传输: 第二节:创建存储过程和函数 2.1 创建存储过程 CREATE PROCEDURE sp_name([proc_parameter[,...]])[characteristic...]

第 5 章 内置函数

学习导航 日期时间函数 数值数组函数 判断函数 字符串函数 其他函数 5.1 VBScript 内置函数 在前面,我们介绍了函数的使用与建立方法,其实有很多函数是不用自己动手来建立的,VBScript 早就准备好了许多常用的函数来供您调用,下面就一一来说明一些常用的函数. 5.2 日期与时间函数 VBScript 提供了许多显示日期与时间的函数,如表: 函数 用途 Now 显示今天的日期与现在的时间 Date 显示今天(计算机系统)的日期 Time 显示现在(计算机系统)的时间 Year 显示本

exit()子程序终止函数与return()函数的差别

在main函数中我们通常使用return (0);这样的方式返回一个值. 但这是限定在非void情况下的也就是void main()这样的形式. exit()通常是用在子程序中用来终结程序用的,使用后程序自动结束跳会操作系统. 但在假如把exit用在main内的时候无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1) //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必闻名出处和