子过程和函数过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过程”对话框,选择过程类型(子过程、函数、属性、事件)及作 用范围(公有的Public、私有的Private),单击确定后得到一个函 数定义的结构框架(模板),如:
Public Function Sort( ) …… End Function
方法二:直接在代码窗口中输入
[Public|Private][Static] Function 函数名([<参数列表>])[As<类型>]
Dim temp As Integer Temp=X X=Y Y=Temp
End Sub
例2:编写求阶乘的子过程。 Private sub fact(n As Integer,f as Double) Dim i As Integer f=1 For i = 1 To n f=f*i Next End sub
(2)控件事件过程 Sub 控件名_事件名(参数列表) <语句组> End Sub
8.1.2 用户自定义 Sub子过程定义
Sub子过程的定义----两种方法
方法一: 通过 “工具”菜单中的“添加过程”命令,出现 “添加过程”对话框,选择过程类型(子过程、函数、属性、 事件)及作用范围(公有的Public、私有的Private),单击确 定后得到一个过程定义的结构框架(模板),如: Public Sub Sort( ) …… End Sub
8.2.2 函数过程的调用 调用形式如下:
函数名(实参列表)
说明:在调用时实参和形参的数据类型、顺序、个数必须匹配。 函数调用只能出现在表达式中,其功能是求得函数的返回值。 调用阶乘的过程: Private Sub Command1_Click() Dim S As Integer S=5 Print fact(S) End Sub
说明:
(1)函数名:命名规则与变量名规则相同。但不能与系统的 内部函数或其它通用子过程同名,也不能与已定义的全局变 量和本模块中模块级变量同名。 (2)在函数体内,函数名可以当变量使用,函数的返回值就 是通过对函数名的赋值语句来实现的,在函数过程中至少要 对函数名赋值一次。 ( 3) AS类型:是指函数返回值的类型,若省略,则函数返 回变体类型值(Variant)。 (4)Exit Function:表示退出函数过程,常常是与选择结构 (If或Select Case语句)联用,即当满足一定条件时,退出函 数过程。 (5)形参数列表:形参的定义与子过程完全相同。
方法二:直接在代码窗口中输入
[Public|Private][Static] Sub 子过程名([形参表])
<局部变量或常数定义> <语句组> [Exit Sub]
过程体
<语句组>
End Sub
例1: 编一个交换两个整型变量值的子过程。
Private Sub Swap( X As Integer, Y As Integer)
化而改变。而地址传递时实参的值随形参值的改变而改变。
(3)当参数是数组时,形参与实参在参数声明时应省略其
维数,但括号不能省。 (4)调用子过程的形式有两种,用Call关键字时,实参必须 加圆括号括起,反之则不用加圆括号括起。实参之间用“,” 分隔。 例:调用上面定义的Swap子过程的形式: 在某个事件过程中调用已定义 Swap a,b 的阶乘的过程fact: Call Swap(a,b) Private Sub Command1_Click() Dim n As Integer, m As Long n=5 Call fact(n, m) Print m End Sub
说明: (1)子过程名:命名规则与变量名规则相同。子过程名不返回 值,而是通过形参与实参的传递得到结果,调用时可返回多个值 ( 2 )形式参数列表:形式参数通常简称“形参”,仅表示形参 的类型、个数、位置,定义时是无值的,只有在过程被调用时, 虚实参结合后才获得相应的值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: [ByVal|ByRef]变量名[( )][As 类型][,…]
Visual Basic函数分为内部函数和外部(自定
义)函数,外部函数是用户根据需要用Function
关键字定义的函数过程,与子过程不同的是函数 名将返回一个值 。
8.2.1 Function函数过程的定义 Function函数过程过程的定义----两种方法 方法一: 通过 “工具”菜单中的“添加过程”命令,出现“添加
ByVal 。 表示当该过程被调用时,参数是按值传递的; ByRef表示当该过程被调用时,参数是按地址传递的,缺省时传址。
8.1.3 子过程的调用
方法一: Call 子过程名(参数列表) 方法二:子过程名 [参数列表]
说明:
(1)参数列表称为实参或实元,它必须与形参保持个数相同, 位置与类型一一对应。 (2)调用时把实参值传递给对应的形参。 其中值传递(形参前有ByVal说明)时实参的值不随形参的值变
本章内容及要求
• • • • • 8.1 Sub过程的定义和调用 8.2 Function函数过程的定义和调用 8.3 参数传递 8.4 过程的嵌套和递归调用 8.5 变量及过程的作用域
8.1 Sub子过程的定义和调用
在VB中Sub子过程分为:事件过程和用户自定义过程
8.1.1 事件Sub过程 (1)窗体事件过程 Private Sub Form_事件名(参数列表) <语句组> End Sub
过程调用的执行过程:
Private Sub CmdOK_click() …… Call Swap(a,b) …… Swap a,b
Private Sub Swap(x%,y%) Dim temp% Temp=X X=Y
Y=Temp
End Sub
End Sub
8.2 Function函数过程的定义和调用
<局部变量或常数定义> <语句块> [函数名=返回值] [Exit Function] <语句块> [函数名=返回值]
End Function
函数体
把例2阶乘的sub 子过程改为Function函数过程
Function fact(n As Integer) As Double Dim i As Integer, f As Double f=1 For i = 1 To n f=f*i Next fact = f End Function