第6章 过程41553.ppt
《第6章 过程41553.ppt》由会员分享,可在线阅读,更多相关《第6章 过程41553.ppt(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Visual Basic程序设计6.1 子过程的定义与调用6.2 函数的定义与调用6.3 子过程与函数的参数传递6.4 变量、过程的作用域6.5 递归6.6 常用算法举例第6章 过程与函数Visual Basic程序设计 VB中的过程有两种:(1)系统提供的内部函数过程和事件过程。(2)用户根据应用的需要而设计的过程。在VB中根据应用的要求可分为几种类型的自定义过程:(1)以“Sub”保留字开始的子过程。(2)以“Function”保留字开始的函数过程。(3)以“Property”保留字开始的属性过程。(4)以“Event”保留字开始的事件过程。本书仅讨论以“Sub”开头的子过程和以“Func
2、tion”开头的函数过程。Visual Basic程序设计6.1.1 子过程的定义 在VB中用Sub 语句定义的过程叫做子过程。可按下列格式定义子过程:Sub 子过程名(形式参数列表)语句序列 End Sub 子过程中可以使用Exit Sub语句跳出子过程。形式参数列表由若干个形式参数构成,参数之间用逗号分隔。每个形式参数按下列格式定义::形式参数名 As 类型名省略类型说明则表示是Variant类型。例如下列代码定义了一个子过程sub1,有两个长整型形式参数a和b,功能是将a+b的值赋给变量c。Sub sub1(a as long,b as long)c=a+bEnd SubVisual B
3、asic程序设计6.1.2 子过程的调用 子过程只能作为语句被调用,不能作为表达式被调用。可以用下列两种方法调用子过程:Call子过程名(实际参数列表 )或 子过程名 实际参数列表 以上两种调用方法功能完全一致。注意,当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。例如下列两条语句都可以调用了前面定义的子过程sub1,调用的结果是变量c的值变成了5。Call sub1(2,3)或 sub1 2,3 事事件件过过程程的的调调用用:当有事件发生时,系统会自动调用与事件相对应的事件过程。事件过程是与对象相关联的,是对象对事件做出的响应。事件过程的名称
4、由对象名、下划线、事件名连接而成。Visual Basic程序设计6.2.1 函数的定义 在VB中,用Function语句定义的过程叫做函数。可按下列格式定义函数:Function 函数名(形式参数列表 )As 类型 语句序列End Function 函数的定义与子过程类似,不同之处在于函数有返回值。函数的返回值用函数名表示,在函数返回前至少需要对函数名赋值一次。使用语句Exit Function 可以立即跳出函数。例如下列代码定义了一个函数Fun1,有两个长整型形式参数a和b,函数的返回值为长整型,值等于a+b的结果。Function fun1(a As Long,b As Long)As
5、Long fun1=a+bEnd FunctionVisual Basic程序设计函数可以作为表达式来调用。格式为:函数名(实际参数列表)如果函数要直接作为语句来使用,则必须按照子过程的方式来调用,当然此时也就不能利用函数的返回值了。例如下列三条语句都可以调用前面定义的函数Fun1:Print fun1(2,3)Call fun1(2,3)fun1 2,3 6.2.2 函数的调用Visual Basic程序设计1.1.参数传递方式参数传递方式 参数有两种传递方式:按值传递和按地址传递。按值传递参数按值传递参数:在形式参数前加上关键字ByVal表示指定按值传递参数。调用时实际参数仅将值传递给形式
6、参数,形式参数的任何改变不会影响实际参数。按地址传递参数按地址传递参数:在形式参数前加上关键字ByRef表示指定按地址传递参数。调用时如果实际参数是表达式,则传递方式与按值传递效果相同;如果实际参数是变量,则将实际参数的内存地址传递给形式参数,形式参数与实际参数指向同一个内存地址,形式参数的改变也就是实际参数的改变。6.3 子过程与函数的参数传递Visual Basic程序设计6.3 子过程与函数的参数传递【例】下列程序运行后,每次单击窗体就会显示“a=3”,“b=8”。Option Explicit Dim a As Long Dim b As Integer Sub s(c As Long
7、)c=c+1 End Sub Sub Form_Click()a=2 b=8 s a Print a=;a s(b)Print b=;bEnd Sub 说明:本例中,圆括号用于将实际参数由变量b转换为表达式,即按值传递(s(b),否则就是按址传递(s a)。Visual Basic程序设计2.2.可选参数可选参数 在形式参数前加上关键字Optional可以指定该形式参数为可选参数。可选参数在过程调用时可以不提供与可选参数对应的实际参数。可选参数可以指定默认的缺省值。3.3.命名参数命名参数 实际参数使用“形式参数名:=实际参数”的格式即为命名参数。命名参数出现的位置可以与定义时的顺序无关。但需
8、注意非命名参数仍需按定义时的位置出现,所以非命名参数在定义时应排在第一个命名参数之前。4.4.数组作为参数和返回值数组作为参数和返回值 数组可以作为实际参数传递到过程中。此时形式参数应为Variant类型或与实际参数类型完全相同的数组类型。作为形式参数的数组应为可变数组,用数组名跟空的圆括号表示。函数的返回值也可以是数组,此时类型说明为Variant类型或“As 类型()”。6.3 子过程与函数的参数传递Visual Basic程序设计【例例】下列程序运行后,单击窗体时显示“9”、“8”、“7”。Option Explicit Function f(a()As Long)As Long()f=
9、a End Function Sub Form_Click()Dim b()As Long Dim c(2)As Long c(0)=9 c(1)=8 c(2)=7 b=f(c)print b(0)b()=f(c()print b(1)Print f(c)(2)函数表达式直接带数组下标代表数组元素 End Sub6.3 子过程与函数的参数传递Visual Basic程序设计5.5.可变个数参数可变个数参数 将最后一个形式参数声明为Variant类型的数组,同时在前面加上ParamArray关键字,就变成可变个数的参数;调用过程时可输入任意个数的参数,输入的参数转变为数组的元素;也可以省略该参数
10、。ParamArray 关键字不能与 ByVal或ByRef一起使用,也不能在参数列表中出现Optional。【例例】下列程序运行后,每次单击窗体就会显示“6”。Option Explicit Function f(a,ParamArray b()f=a+b(0)+b(1)End Function Sub Form_Click()Print f(1,2,3)End Sub 注意:在用可变个数参数时,实参个数不能少于使用的形参个数。6.3 子过程与函数的参数传递Visual Basic程序设计6.4 变量、过程的作用域 过程的作用域过程的作用域 定义过程时在过程名前加关键字Private,则该过
11、程为私有过程,仅在定义该过程的模块内有效,其他模块的过程不能调用该过程。如果没有加关键字Private或加了关键字Public,则该过程为公共过程,在整个工程内有效,其他模块内的过程可以调用该过程。调用当前过程所在模块定义的过程可以直接使用过程名。调用其他窗体模块或其他标准模块定义的过程,使用“模块名.过程名”的格式。Visual Basic程序设计6.4 变量、过程的作用域 变量的作用域变量的作用域局局部部变变量量:过程的形式参数、过程中定义的变量、未经定义直接使用的变量,仅在过程中有效。全全局局变变量量:在所有过程之外定义的变量,在定义变量的模块中有效。公共变量公共变量:用Public定义
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 过程41553 过程 41553
限制150内