Visual Basic语言程序设计08 ryjc vb ch7 过程与函数
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
见例7.2
7.3 函数过程
7.3.1 函数过程的定义 函数过程是过程的另一种形式,它在执行完毕之后会产生一个返回值 函数过程中的运算结果直接返回调用语句处
[Public | Private] Function 过程名([形参列表]) [As 类型] <语句组1> [函数名=返回值] [Exit Function] <语句组2> [函数名=返回值]
数值型函数过程的默认返回值是0,字符型函数过程的默认返回值是空串(“”)
见例7.3
7.3.2 函数过程的调用
函数过程的调用形式与内部函数相同,即在表达式中写出它的名称 和相应的实参
由于函数过程有返回值,因此一般将函数过程的调用作为赋值语句 的一部分 格式:
变量=函数过程名([实参列表])
VB语言的参数传递有传值、传引用和传数组三种方式
传数组方式可以归结为传引用方式的一种特例
7.5.1 传值
用ByVal对形参进行声明,则表示该参数在调用时采用传 值方式
传值就是将实参的值传递给形参,在调用过程时,将实参 的值复制给形参,这样形参和实参在内存中不同的存储单 元中,如果在程序执行过程中,形参的值改变了,不会影 响主调程序中的实参的值
不跟圆括号和下标。 (3)传数组方式本质上是传引用方式的特例,发生过程调用时,把
数组名作为实参传递给形参数组,使得形参数组和实参数组的起始地 址相同。由于两个数组的类型也完全相同,导致这两个数组各自的元 素在内存共占同一段空间。 (4)对于每一次过程调用时形参数组的长度,可以调用LBound函数, 得到形参数组的下界;调用UBound函数,得到形参数组的上界 见例7.11、例7.12
见例7.7、例7.8
7.5.2 传引用
用ByRef对形参进行声明,则表示该参数在调用时采用传 引用方式,这是默认的参数传递方式
实参变量名
存储单元
形参变量名
调用过程语句执行时,将实参的地址传给了形参,形参和 实参实际上使用的是同一个存储单元
所以传引用方式与传值方式最大的区别在于,传引用调用 时形参的值发生变化,会使实参的值也同步发生变化
End Function
说明:
[As 类型]是指函数过程的类型,即返回值的类型。如果没有进行类型说明,则系 统默认该函数过程的返回值类型为变体型(Variant)
在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语 句来实现的,在函数过程中一般至少要对函数名赋值一次
如果在过程体中没有对函数名赋值的语句,则该函数过程会返回一个默认值
见例7.9、例7.10
7.5.3 传数组
VB允许将数组作为实参传送到过程中,实现对一组数据的处理 传数组方式可以归结为传引用方式的一种特例 说明: (1)声明数组参数时,由于无法预知数组的长度,所以可设置一个
动态数组,如a(),可不必声明长度。 (2)调用过程时,将要传递的数组名放在实参表中,数组名后面可
见例7.6
Байду номын сангаас
7.5 参数传递的方式
形式参数(形参)
在Sub和Function过程的定义中出现的变量参数
实际参数(实参)
在调用Sub和Function过程时传递给Sub和Function过程的常量、 变量、表达式或数组
在调用一个过程时,一般主调过程和被调过程之间有数据 传递,即将主调过程的实参(调用时已有确定值和内存地 址的参数)传递给被调过程的形参,完成实参和形参的结 合,然后执行被调过程体
见例7.4、例7.5
7.4 事件过程
事件过程就是在响应事件时执行的程序段 格式:
Private Sub 对象名_事件名([形参列表]) 变量定义语句 执行语句
End Sub
说明:
(1)事件过程的名字是由对象名、下划线“_”和事件名组成,对象 可以是窗体或者控件
如:窗体双击事件的事件过程名是Form_DblClick (2)虽然可以自己输入首行的事件过程名,但使用系统提供的框 架会更方便,模板自动将正确的过程名包括进来
End Sub
说明:
参数表中的参数称为形参,若有多个行参,各个参数之间用逗号分隔,一 般表示形参的类型、个数、位置,只能是简单变量、数组名、自定义类型, 不能是常量、数组元素、表达式,定义时是无值的,只有在过程被调用时, 才获得相应的值
见例7.1
7.2.2 子过程的调用
子过程调用
方法一:Call 过程名[(参数列表)] 方法二:过程名 [参数列表]
说明:
(1)过程调用时的参数称为实参,用Call关键字时,若有实参,则 实参必须用圆括号括起,无实参圆括号省略,不用用Call关键字时, 过程的参数直接跟在过程名后面,不用括号把实参括起来 (2)在调用过程的语句中,实参的个数、类型以及前后次序需和 被调用过程的形参一致,有多个参数时,用逗号分隔。 (3)在调用过程中,由实参将数据传递给相应的形参。形参在过 程被调用时才被分配内存空间
说明:
(1)必须给参数加上括号,即使没有参数也不能省略括号 (2)实参必须与形参个数相同,位置与类型一一对应。可以是同类型的 常量、变量、表达式。 (3)函数调用作为表达式,出现在赋值语句的右侧。执行这条赋值语句 时,先对函数过程进行调用,然后把过程的返回值带回来并赋给某个变 量,从而使主调过程获得这个返回值。
7.2 子过程
7.2.1 子过程的定义 可以被其他程序或主程序调用,并且可以完成特定功能的一段程序为
子过程,它是以Sub关键字开头的,因此也称为Sub过程 子过程由过程头部和过程体组成,过程头部应该有过程名,一般还应
有参数表,在过程体中书写语句
[Public | Private] Sub 子过程名([参数列表]) 变量定义语句 执行语句 [Exit Sub]
第7章 过程
子过程 函数过程 事件过程 参数传递的方式 嵌套调用与递归调用 作用域与生存期 滚动条 直线和形状
7.1 概述
在VB程序设计中,为相对独立的功能模块编写的一段程 序代码就称之为过程
常用的过程有:
(1)子过程(Sub过程) (2)函数过程(Function过程) (3)事件过程
7.3 函数过程
7.3.1 函数过程的定义 函数过程是过程的另一种形式,它在执行完毕之后会产生一个返回值 函数过程中的运算结果直接返回调用语句处
[Public | Private] Function 过程名([形参列表]) [As 类型] <语句组1> [函数名=返回值] [Exit Function] <语句组2> [函数名=返回值]
数值型函数过程的默认返回值是0,字符型函数过程的默认返回值是空串(“”)
见例7.3
7.3.2 函数过程的调用
函数过程的调用形式与内部函数相同,即在表达式中写出它的名称 和相应的实参
由于函数过程有返回值,因此一般将函数过程的调用作为赋值语句 的一部分 格式:
变量=函数过程名([实参列表])
VB语言的参数传递有传值、传引用和传数组三种方式
传数组方式可以归结为传引用方式的一种特例
7.5.1 传值
用ByVal对形参进行声明,则表示该参数在调用时采用传 值方式
传值就是将实参的值传递给形参,在调用过程时,将实参 的值复制给形参,这样形参和实参在内存中不同的存储单 元中,如果在程序执行过程中,形参的值改变了,不会影 响主调程序中的实参的值
不跟圆括号和下标。 (3)传数组方式本质上是传引用方式的特例,发生过程调用时,把
数组名作为实参传递给形参数组,使得形参数组和实参数组的起始地 址相同。由于两个数组的类型也完全相同,导致这两个数组各自的元 素在内存共占同一段空间。 (4)对于每一次过程调用时形参数组的长度,可以调用LBound函数, 得到形参数组的下界;调用UBound函数,得到形参数组的上界 见例7.11、例7.12
见例7.7、例7.8
7.5.2 传引用
用ByRef对形参进行声明,则表示该参数在调用时采用传 引用方式,这是默认的参数传递方式
实参变量名
存储单元
形参变量名
调用过程语句执行时,将实参的地址传给了形参,形参和 实参实际上使用的是同一个存储单元
所以传引用方式与传值方式最大的区别在于,传引用调用 时形参的值发生变化,会使实参的值也同步发生变化
End Function
说明:
[As 类型]是指函数过程的类型,即返回值的类型。如果没有进行类型说明,则系 统默认该函数过程的返回值类型为变体型(Variant)
在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语 句来实现的,在函数过程中一般至少要对函数名赋值一次
如果在过程体中没有对函数名赋值的语句,则该函数过程会返回一个默认值
见例7.9、例7.10
7.5.3 传数组
VB允许将数组作为实参传送到过程中,实现对一组数据的处理 传数组方式可以归结为传引用方式的一种特例 说明: (1)声明数组参数时,由于无法预知数组的长度,所以可设置一个
动态数组,如a(),可不必声明长度。 (2)调用过程时,将要传递的数组名放在实参表中,数组名后面可
见例7.6
Байду номын сангаас
7.5 参数传递的方式
形式参数(形参)
在Sub和Function过程的定义中出现的变量参数
实际参数(实参)
在调用Sub和Function过程时传递给Sub和Function过程的常量、 变量、表达式或数组
在调用一个过程时,一般主调过程和被调过程之间有数据 传递,即将主调过程的实参(调用时已有确定值和内存地 址的参数)传递给被调过程的形参,完成实参和形参的结 合,然后执行被调过程体
见例7.4、例7.5
7.4 事件过程
事件过程就是在响应事件时执行的程序段 格式:
Private Sub 对象名_事件名([形参列表]) 变量定义语句 执行语句
End Sub
说明:
(1)事件过程的名字是由对象名、下划线“_”和事件名组成,对象 可以是窗体或者控件
如:窗体双击事件的事件过程名是Form_DblClick (2)虽然可以自己输入首行的事件过程名,但使用系统提供的框 架会更方便,模板自动将正确的过程名包括进来
End Sub
说明:
参数表中的参数称为形参,若有多个行参,各个参数之间用逗号分隔,一 般表示形参的类型、个数、位置,只能是简单变量、数组名、自定义类型, 不能是常量、数组元素、表达式,定义时是无值的,只有在过程被调用时, 才获得相应的值
见例7.1
7.2.2 子过程的调用
子过程调用
方法一:Call 过程名[(参数列表)] 方法二:过程名 [参数列表]
说明:
(1)过程调用时的参数称为实参,用Call关键字时,若有实参,则 实参必须用圆括号括起,无实参圆括号省略,不用用Call关键字时, 过程的参数直接跟在过程名后面,不用括号把实参括起来 (2)在调用过程的语句中,实参的个数、类型以及前后次序需和 被调用过程的形参一致,有多个参数时,用逗号分隔。 (3)在调用过程中,由实参将数据传递给相应的形参。形参在过 程被调用时才被分配内存空间
说明:
(1)必须给参数加上括号,即使没有参数也不能省略括号 (2)实参必须与形参个数相同,位置与类型一一对应。可以是同类型的 常量、变量、表达式。 (3)函数调用作为表达式,出现在赋值语句的右侧。执行这条赋值语句 时,先对函数过程进行调用,然后把过程的返回值带回来并赋给某个变 量,从而使主调过程获得这个返回值。
7.2 子过程
7.2.1 子过程的定义 可以被其他程序或主程序调用,并且可以完成特定功能的一段程序为
子过程,它是以Sub关键字开头的,因此也称为Sub过程 子过程由过程头部和过程体组成,过程头部应该有过程名,一般还应
有参数表,在过程体中书写语句
[Public | Private] Sub 子过程名([参数列表]) 变量定义语句 执行语句 [Exit Sub]
第7章 过程
子过程 函数过程 事件过程 参数传递的方式 嵌套调用与递归调用 作用域与生存期 滚动条 直线和形状
7.1 概述
在VB程序设计中,为相对独立的功能模块编写的一段程 序代码就称之为过程
常用的过程有:
(1)子过程(Sub过程) (2)函数过程(Function过程) (3)事件过程