函数、过程的定义和调用(一)15
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
值传递的执行过程如下图:
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
2、实际参数 实际参数是指在调用 Sub 或 Function 过程时,写入子过程 名或函数名后括号内的参数,其作用是将它们的数据(数值或 地址)传送给Sub或Function过程与其对应的形参变量。 实参可由常量、表达式、有效的变量名、数组名(后加左、 右括号,如A( ))组成,实参表中各参数用逗号分隔。 For i=1 to 5 A(i)=i Next I T1=tim(a())
[Public|Private][Static]Function 函数名([<参数列表>])[As<类型>]
<局部变量或常数定义> <语句块> [函数名=返回值] [Exit Function] <语句块> [函数名=返回值] End Function
函数体
如:public function fac(n as integer) as integer
Y=Temp
End Sub
End Sub
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.3 Function过程
Visual Basic函数分为内部函数和外部函数,外部函数是 用户根据需要用Function关键字定义的函数过程,与子过程 不同的是函数过程将返回一个值 。 6.3.1 函数过程(Function过程)的定义
第六章 过
本章要求:
程
掌握子过程(Sub过程的定义、调用); 掌握函数过程(Function过程)的定义、调用; 掌握值传递、地址传递的传递规则;
理解递归的概念。
本章重点:
Sub 过程及 Function 过程的定义与调用。 过程调用中数据的传递。
本章难点:
目录
过程调用中数据的传递。
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
6.2.4 过程的调用
1 子过程的调用 子过程名 [参数列表]
或
说明:
Call 子过程名(参数列表)
(1)参数列表称为实参或实元,它必须与形参保持个数 相同,位置与类型一一对应。 (2)调用时把实参值传递给对应的形参。其中值传递 (形参前有ByVal说明)时实参的值不随形参的值变化而改变。 而地址传递时实参的值随形参值的改变而改变。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.3 Function过程
说明:
(1)函数名:命名规则与变量名规则相同。
( 2)在函数体内,函数名可以当变量使用,函数的返回值就 是通过对函数名的赋值语句来实现的,在函数过程中至少要对 函数名赋值一次。 (3)AS类型:是指函数返回值的类型,若省略,则函数返回 变体类型值(Variant)。
6.2 Sub过程
6.2.2 通用过程(Sub过程)的定义
子过程的定义形式如下: [Public|Private][Static] Sub 子过程名([形参表])
<局部变量或常数定义> <语句组> [Exit Sub]
<语句组> End Sub
说明:(1)子过程名:命名规则与变量名规则相同。
子过程名不返回值,而是通过形参与实参的传递得到结果, 调用时可返回多个值。
6.4 过程之间参数的传递
通过地址传递数据的执行过程
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
Βιβλιοθήκη Baidu
6.3 Function过程
例6.2 求fac(n)=n!的函数
分析:根据求n!的定义 n!=n*(n-1)!,可写成如下形式:
1,n=1 Fac(n)= n*fac(n-1),n>1
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.1 过程概述
在VB5.0/6.0中,除了系统提供的内部函数过程和 事件过程外,用户可自定义过程下列四种过程: ▲ “Sub” 保留字开始的为子过程 ▲“Function” 保留字开始的为函数过程 “Property”保留字开始的为属性过程 “Event”保留字开始的事件过程
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
(2)形式参数列表:形式参数通常简称“形参”,仅表示 形参的类型、个数、位置,定义时是无值的,只有在过程被 调用时,虚实参结合后才获得相应的值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: [ByVal|ByRef]变量名[( )][As 类型][,…], ByVal表示当该过程被调用时,参数是按值传递的; ByRef表示当该过程被调用时,参数是按地址传递的。
( 4 ) Exit Function :表示退出函数过程,常常是与选择结构 (If或Select Case语句)联用,即当满足一定条件时,退出函 数过程。 (5)形参数列表:形参的定义与子过程完全相同。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = Temp End Sub Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub
Private Sub CmdOK_Click() Dim a%,b% a = 10: b = 20 Swap1 a, b ‘传 值 Print "A1="; a, "B1="; b a = 10: b = 20 Swap2 a, b '传地址 Print "A2="; a, "B2="; b End Sub
6.4.1 形式参数与实际参数 1、形式参数
是指在定义通用过程时,出现在Sub或Function语句中 的变量名后面圆括号内的数,是用来接收传送给子过程的 数据,形参表中的各个变量之间用逗号分隔。 Function tim(a() as integer)
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = Temp End Sub Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
传址与传值
传址: 形参得到的是实参的地址,当形参值的改变同时 也改变实参的值。
传值: 形参得到的是实参的值,形参值的改变不会影响
实参的值。 例6.3
6.3 Function过程
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
Visual Basic中不同模块(过程)之间数据的传递有两种方式: 通过过程调用实参与形参的结合实现; 使用全局变量来实现各过程中共享数据。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
例6.1 编一个交换两个整型变量值的子过程。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
(3)当参数是数组时,形参与实参在参数声明时应省略 其维数,但括号不能省。
(4)调用子过程的形式有两种,用Call关键字时,实参
必须加圆括号括起,反之则实参之间用“,”分隔。 例:调用上面定义的Swap子过程的形式: Swap a,b Call Swap(a,b)
6.3 Function过程
6.3.2 函数的调用
调用形式如下:
函数名(实参列表)
说明: 在调用时实参和形参的数据类型、顺序、个数必须 匹配。函数调用只能出现在表达式中,其功能是求得函 数的返回值。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
在VB中,的Sub子过程分为:事件过程和通用过程
6.2.1 事件过程
(1)窗体事件的语法 Private Sub Form_事件名(参数列表) <语句组> End Sub (2)控件事件的语法 Private Sub 控件名_事件名(参数列表) <语句组> End Sub
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
6.2.3 子过程的建立
通过 “工具”菜单中的“添加过程”命令,出现“添加
过程”对话框(见图6.1),选择过程类型(子过程、函数、 属性、事件)及作用范围(公有的Public、私有的Private), 单击确定后得到一个过程或函数定义的结构框架(模板), 如:
Public Sub Sort( ) … End Sub
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.4 过程之间参数的传递
6.4.2 参数传递(虚实结合)
参数传递指主调过程的实参(调用时已有确定值和内存
地址的参数)传递给被调过程的形参,参数的传递有两种方 式:按值传递、按地址传递。形参前加“ByVal”关键字的是 按值传递。缺省或加“ByRef”关键字的为按地址传递。
目录
www.Goit.Net 6.1浙江科技学院教信系计算机基础教学网站: 6.2 6.3 6.4 6.5 6.6 6.7 6.8 小结 作业
6.2 Sub过程
过程调用的执行过程:
Private Sub CmdOK() …… Call Swap(a,b) …… Swap a,b
Private Sub Swap(x%,y%) Dim temp% Temp=X X=Y