当前位置:首页 >> 其它课程 >>

TP8V1.0


主讲:陶夏至 QQ:83069659

第八章
过 程

考纲要求

Sub过程:Sub过程的建立;调用Sub过程;通用过程与 事件过程 Function过程:Function过程的定义;调用Function过 程 参数传递:形参与实参;引用;传值;数组参数的传送 可选参数与可变参数 对象参数:窗体参数;控件

参数

第2页

知识地图

过程 Sub过程 Function过程

参数传递
可选参数与可变参数 对象参数
第3页

Sub过程

Sub子过程分为:事件过程和通用过程 事件过程:
事件过程是一种特殊的Sub过程,它附加在窗体和控件上
窗体事件的语法 Private Sub Form_事件名(参数列表) <语句组> End Sub 控件事件的语法 Private Sub 控件名_事件名(参数列表) <语句组> End Sub

第4页

Sub过程

通用过程(Sub过程)的定义
子过程的定义形式如下:
[Public|Private][Static] Sub 子过程名([形参表]) <局部变量或常数定义> <语句组> [Exit Sub] <语句组> End Sub

说明:
子过程名:命名规则与变量名规则相同。子过程名不返回值,而 是通过形参与实参的传递得到结果,调用时可返回多个值。 形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、 个数、位置,定义时是无值的,只有在过程被调用时,虚实参结 合后才获得相应的值。

第5页

Sub过程

过程可以无形式参数,但括号不能省。 参数的定义形式:
[ByVal|ByRef]变量名[( )][As 类型][,…], ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表 示当该过程被调用时,参数是按地址传递的。

两过程的差别:
通用Sub过程一般在事件过程中被调用。 通用过程可以放在标准模块中,也可以放在窗体模块中,而事件 过程只能放在窗体模块中。 不同模块中的过程可以相互调用。当过程名唯一时,可以直接通 过过程名调用;如果两个或两个以上的标准模块中含有相同名称 的过程。则在调用过程时必须用过程名限定,一般的格式为: 模块名.过程名(参数列表)
第6页

过程的调用

过程的调用 或 说明:
参数列表称为实参,它必须与形参保持个数相同,位置与类型一 一对应。 调用时把实参值传递给对应的形参。其中值传递(形参前有 ByVal说明)时实参的值不随形参的值变化而改变。而地址传递 时实参的值随形参值的改变而改变。 当参数是数组时,形参与实参在参数声明时应省略其维数,但括 号不能省。 调用子过程的形式有两种,用Call关键字时,实参必须加圆括号 括起,反之则实参之间用“,”分隔。

过程名 [参数列表] Call 过程名(参数列表)

第7页

过程的调用

例:编一个交换两个整型变量值的子过程。
Private Sub Swap( X As Integer, Y As Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp End Sub
Private Sub command1_click() Dim a%,b% a%=val(inputbox(“a=“)) b%=val(inputbox(“b=“)) print “a=“;a%,”b=“,b% call swap(a%,b%) print “a=“;a%,”b=“,b% End Sub

第8页

过程的调用

过程调用的执行过程:

Private Sub CmdOK()

Private Sub Swap(x%,y%)
Dim temp% Temp=X X=Y Y=Temp

……
Call Swap(a,b) …… Swap a,b End Sub

End Sub
第9页

Function过程

Function过程又称函数过程,Visual Basic函数分为内部 函数和外部函数,外部函数是用户根据需要用Function 关键字定义的函数过程,与Sub过程不同的是函数过程将 返回一个值 。 函数过程(Function过程)的定义:
[Public|Private][Static]Function 函数名([<参数列表>])[As<类型>] <局部变量或常数定义> <语句块> [函数名=返回值] 函数体 [Exit Function] <语句块> [函数名=返回值] End Function

第10页

Function过程

说明:
函数名:命名规则与变量名规则相同。 在函数体内,函数名可以当变量使用,函数的返回值就是通过对 函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值 一次。 AS类型:是指函数返回值的类型,若省略,则函数返回变体类型 值(Variant)。 Exit Function:表示退出函数过程,常常是与选择结构(If或 Select Case语句)联用,即当满足一定条件时,退出函数过程。 形参数列表:形参的定义与子过程完全相同。

第11页

函数的调用

调用形式如下: 函数名(实参列表) 说明:
在调用时实参和形参的数据类型、顺序、个数必须匹配。函数调 用只能出现在表达式中,其功能是求得函数的返回值。

第12页

Sub过程与Function过程的区别和联系

Function过程有返回值和过程类型,并且在函数体内必 须对Function过程名赋值。需要特别提醒的是: Function过程的返回值类型与形式参数之间没有任何联 系;函数的返回值只有一个;函数之间的信息传递方式有 两种,即值传递和地址传递,数组名作函数参数时属于地 址传递。 Sub过程没有返回值和过程类型,而且不能在函数体内对 Sub过程名赋值。 解决一个问题既可以使用子过程,也可以使用函数过程, 是使用子过程还是使用函数过程呢?如果是需要求得一个 值,一般情况使用函数过程,如不是为了求一个值,而是 完成一些操作,或需要返回多个值,则使用子过程比较方 便。
第13页

参数传递

形式参数与实际参数:
形式参数
是指在定义通用过程时,出现在Sub或Function语句中的过程名称 后面圆括号内的变量,是用来接收传送给过程的数据,形参表中的 各个变量之间用逗号分隔。

实际参数
实际参数是指在调用Sub或Function过程时,写入子过程名或函数 名后括号内的参数,其作用是将它们的数据(数值或地址)传送给 Sub或Function过程与其对应的形参变量。 实参可由常量、表达式、有效的变量名、数组名(后加左、右括号, 如A( ))组成,实参表中各参数用逗号分隔。

第14页

参数传递

参数传递指主调过程的实参(调用时已有确定值和内存地 址的参数)传递给被调过程的形参,参数的传递有两种方 式:按值传递、按地址传递。形参前加“ByVal”关键字 的是按值传递,缺省或加“ByRef”关键字的为按地址传 递。 传址与传值:
传址:形参得到的是实参的地址,当形参值的改变同时也改变实 参的值。 传值:形参得到的是实参的值,形参值的改变不会影响实参的值。

第15页

参数传递
Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub

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
第16页

参数传递

注意:
在子过程和函数过程调用时,如果实参是常量(包括系统常量、 用Const自定义的符号常量)或表达式,无论在定义时使用值传 递还是地址传递,此时都是按值传递方式将常量或表达式计算的 值传递给形参变量。 如果形参定义是按传地址方式,但调用时想使实参变量按值方式 传递,可以把实参变量加上括号,将其转换成表达式即可。

第17页

过程的嵌套和递归调用

过程的嵌套
在程序中调用一子过程,而在子过程中又调用另外的子过程,这 种程序结构称为过程的嵌套。过程的嵌套调用执行过程如下图:

第18页

过程的嵌套和递归调用

过程的递归调用
用自身的结构来描述自身,称递归。Visual Basic允许在一个Sub子过程 和Function过程的定义内部调用自己,即递归Sub子过程和递归 Function函数。
例:编求阶乘fac(n)=n! 的递归函数 Private Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function Private Sub Form_Click() Print “fac(4)=”;fac(4) End Sub

第19页

过程的嵌套和递归调用

说明:
递归处理分递推和回归两个过程,如上图所示。 使用递归算法必须要满足以下的递归条件:
存在递归结束条件及结束时的值; 能用递归形式表示,且递归向终止条件发展。

第20页

数组作过程的参数

Visual Basic允许把数组作为实参传送到过程中。数组作参数是通过 传地址方式传送。在传送数组时,除遵守参数传送的一般规则外,还 应注意以下几点:
为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参 表中,并略去数组的上下界,但括号不能省略。
Private Sub Sort(a() As single) …… End Sub 其中形参“a( )”即为数组。

被调过程可通过Lbound和Ubound函数确定实参数组的上、下界。 当用数组作形参时,对应的实参必须也是数组,且类型一致。 实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单 元。
例:定义了实参数组b(1 to 8),并给其赋值,调用Sort()函数过程的形式如下: Sort b( ) 或 Call Sort(b())
第21页

可选参数与可变参数

可选参数(Optional)
当然用户在自定义子过程或函数时也可以定义可选参数。要指定 某个形参为可选参数,这就是在形参变量前加入Optional关键字 即可。 如果一个过程某个形参为可选参数,则在调用此过程时可以不提 供对应于这个形参的实参。 若一个过程有多个形参,当它的一个形参被设定为可选参数,则 这个参数之后面的其它参数也必是可选的,并且要用 Optional 关 键字来声明。
Private Sub Nadres(x As String,Optional y As String) Text1.text= x Text2.text= y End Sub

第22页

可选参数(Optional)

说明:
检测可选参数是否被省略
使用VB的内部函数IsMissing(可选参数名) 来测试过程被调用时, 某个参数是否被省略。如果可选参数被省略了,则返回True,未省 略,返回False。 注意:若可选参数是其它类型,则IsMissing()总是返回False, 不能起到检测的作用。

Private Sub Nadres(x As String, Optional y As Variant) Text1.Text = x If Not IsMissing(y) Then Text2.Text = y End If End Sub
第23页

可选参数(Optional)

指定可选参数的缺省值
也可以给可选参数指定缺省值。在下例中,如果未将可选参数传递 到函数过程,则返回一个缺省值。

Sub Nadres(x As String, Optional y As String= "杭州市 学院路85号") Text1.text= x Text2.text= y End Sub

第24页

可变参数

一般说来,过程调用中的参数个数应等于过程说明的参数 个数。可用 ParamArray 关键字指明,过程将接受任意 个数的参数。
Sub 过程名(ParamArray 数组名()) Function 函数名(ParamArray 数组名()) As 数据类型

第25页

试题

第26页

总结

数组的概念:数组的定义;静态数组与动态数组 数组的基本操作:数组元素的输入、输出和复制;For Each…Next语句;数组的 初始化 控件数组

第27页


相关文章:
AutoCAD激活方法
暂无评价|0人阅读|0次下载|举报文档AutoCAD激活方法...8U KV37 27AE 5.AutoCAD2007 版本注册方法: 1)...(Ctrl+V)到注册机的"Request"栏中; 7)然后:先...
习题答案(1)
(VGS-VT)VDS-VDS2/2] =30× 10-6[(2.5-0.4)1.8-1.82/2] =64.8μA c) VGS= 0.6V,VDS= 0.1V 线性 ID=k’(W/L)[(VGS-VT)VDS-VDS2/2]...
淘宝排名助手使用说明书v1.0.0
淘宝排名助手使用说明书v1.0.0_计算机软件及应用_...旺旺:tp 淘快车。 淘宝排名助手 第二章 操作概述 ...8.因技术故障等不可抗力事件影响到服务器的正常...
IPRAN培训题v1
共 40 分) ) 1、 IP RAN 产品的 MPLS-TP ...振幅 8、 IPRAN 设备使用下面哪个命令,可以查看对应...骨干区域 0 20、 下列关于 ISIS 区域之间的路由,说法...
电路图及名称
8 答: Jd2E1033 画出表示“准备”“数据”“处理...0 tp t1 t2 t i R Uo E 0 Uo 答案(虚框中...23 答: ZJ RD k2 S DC220V k1 R V RD Jf1...
BACnet网关产品说明
8 四.接口功能介绍 ......中,Modbus支持RTU 、TCP, BACnet支持IP 、MS/TP。 2、实现BACnet设备集成到...1 1 2 0V 2 网关电源接口 直流电源 DC 24/12V...
OATP基因多态性
为了更 好的理解 OATP1B1,OATP1B3 和 OATP2B1 ...例 如苯甲酸和普伐他汀,跨肠细胞的顶膜渗透(8-...变异等位基因的频率相似,分别为:73.4%和 14.0%62...
MIDH-S-TP-026 移动终端触摸屏性能技术要求及测试方法V1.0---试运行版本
MIDH-S-TP-026 移动终端触摸屏性能技术要求及测试方法V1.0---试运行版本_...参考文献: 1.Windows 8 Hardware Certification Requirements for Devices; <公司...
CTC问题处理手册 (V1.0.0)
>0</IMPINFO><S TPINFO>0</STPINFO><METINFO>0</METINFO><OPERFLAG>1</...>0</DEP_ENGINE_NUM><DEP_ENGINE_NAME></DEP_ENGINE_NAME> <SIDENM>8</...
更多相关标签:
tp wr881n v1.0升级 | tp wn322g v1.0 | tp300 v1.0.0 | miui v8.1.3.0 | amtemu v0.8.1 | amtemu v0.8.1怎么用 | 开眼v1.0.8.crx下载 | miui v8.1.1.0 |