VB程序设计第八章过程
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一页
返回章首
下一页
第八章 过程
8.5 代码模块 VB的代码模块 VB的代码模块 有三种类型: 有三种类型: 1.窗体模块 1.窗体模块 2.标准模块 2.标准模块 3.类模块 3.类模块
上一页
返回章首
下一页
第八章 过程
8.5.1 窗体模块 窗体模块保存在扩展名为.frm 1. 窗体模块保存在扩展名为.frm 的文件中 窗体模块包含三部分内容 内容: 2. 窗体模块包含三部分内容: 1)变量,常量,类型,或外部过程的声明 变量,常量,类型, 2)通用过程 3)事件过程 3. 添加多个窗体
第八章 过程
Procedure) 第八章 过程 (Procedure)
本章要求 8.1 通用自过百度文库 8.2 函数过程 8.3函数过程中参数的传递 8.4 过程的嵌套和递归调用 8.5 代码模块
返回目录
第八章 过程
第八章 过程 本章要求: 本章要求:
◆ ◆ ◆ ◆
理解过程的概念; 理解过程的概念; 掌握Sub和Function函数过程的定义和调用方法; 掌握Sub和Function函数过程的定义和调用方法; Sub 函数过程的定义和调用方法 掌握形参和实参的用法; 掌握形参和实参的用法; 理解标准模块, 理解标准模块,类模块的作用
下一页
第八章 过程
总结:
在VB应用程序时,是通过工程来管理构成应用程 VB应用程序时, 应用程序时 序的所有文件的. 序的所有文件的. 工程常含有窗体模块(.frm 文件), 文件), 工程常含有窗体模块( 标准模块( 文件) 标准模块(.bas 文件) 类模块( 类模块(.cls) 工程文件(.vbp)中 工程文件(.vbp)中.
上一页 返回章首 下一页
第八章 过程
实际参数( Argument) 2. 实际参数(Calling Argument) 实参可以是常量,变量,表达式,数组等. 实参可以是常量,变量,表达式,数组等. 实参和形参具有一一对应的关系: 实参和形参具有一一对应的关系: 实参和形参的个数相等,顺序位置一一对应, 实参和形参的个数相等,顺序位置一一对应,类型相符 例如: 例如: Private Sub mySub(g As String, t As Integer) hello", Call mySub( "hello , hello
上一页 返回章首 下一页
第八章 过程
用递归的方法计算N! 用递归的方法计算N! 根据定义,它的值可由下面的递推公式计算: 根据定义,它的值可由下面的递推公式计算:
n =1 1 fac( n ) = n * fac( n 1) n > 1
上一页
返回章首
下一页
第八章 过程
Public Function fac(n As Integer) As Long If n = 1 Then fac = 1 Sub Form_Click() Else Print "fac(4)=";fac(4) fac = n * fac(n - 1) ; End Sub End If End Function
上一页 返回章首 下一页
256
)
第八章 过程
参数的传值方式( argument) 8.3.2 参数的传值方式(methods of passing argument) 1.按值传递 按值传递( 1.按值传递(ByVal) 实参是常量 表达式, 常量或 实参是常量或表达式, 或者在定义过程时 形参前有关键字ByVal 在定义过程时, ByVal. 或者在定义过程时,形参前有关键字ByVal. 例8 - 7 x 实参占据的内存单元: 实参占据的内存单元: 5 形参占据的临时单元: 形参占据的临时单元:
上一页
返回章首
下一页
第八章 过程
中过程分为三 VB 中过程分为三种: 通用子过程( 通用子过程(Subroutine Procedure) 事件过程 (Event Procedure)
子过程: 子过程:
函数过程:通用函数过程(General Function Procedure) 函数过程:通用函数过程( 标准函数过程( 标准函数过程(Standard Function Procedure) 属性过程: 属性过程: Property Procedure
上一页 返回章首 下一页
第八章 过程
8.1 通用子过程 8.1.1 通用子过程的创建 方法1 方法1. 工具" 添加工程" 利用 "工具" 菜单下的 "添加工程" 命令 方法2 方法2. 在代码编辑窗口中直接定义
上一页
返回章首
下一页
第八章 过程
语句的语法形式如下: Sub 语句的语法形式如下: [格式] 格式] [Public|Private][Static]Sub 过程名([形参列表]) ([形参列表 [Public|Private][Static]Sub 过程名([形参列表]) [局部变量或符号常量的声明] 局部变量或符号常量的声明] [语句序列] 语句序列] [Exit Sub] End Sub
上一页
返回章首
下一页
第八章 过程
例8 - 5 : 编一个函数,任意输入一个数, 编一个函数,任意输入一个数,判断并显示它是 否是平方数 例8 - 6 : 编写计算阶乘的函数fact fact, 编写计算阶乘的函数fact, 并计算1 +2!+3! 10!的结果 并计算1!+2!+3!+…10!的结果 10!
8.4.2 递归调用 递归调用:过程直接或间接调用它本身. 递归调用:过程直接或间接调用它本身. 直接调用:过程p 过程p 直接调用:过程p 过程p 间接调用:过程p 过程Q 过程p 间接调用:过程p 过程Q 过程p 一个问题需要采用递归的方法来解决时, 一个问题需要采用递归的方法来解决时, 必须符合以下两个条件: 必须符合以下两个条件: 1.具有递归形式 1.具有递归形式 必须有一个明确的结束递归的条件. 2.必须有一个明确的结束递归的条件.
上一页
返回章首
下一页
第八章 过程
8.3 过程中的参数传递 8.3.1 形式参数和实际参数 1.形式参数( Argument) 1.形式参数(Receiving Argument) 形式参数 格式] [格式] [ByVal|ByRef] 形参名 [()] [As类型] [As类型] 类型 [ByVal|ByRef]说明参数传递的方式, [ByVal|ByRef]说明参数传递的方式, 说明参数传递的方式 ByVal(按值 按值), ByVal(按值), ByRef(按址)(缺省时是 ByRef) 按址)( ByRef(按址)(缺省时是 ByRef)
上一页 返回章首 下一页
上一页 返回章首 下一页
第八章 过程
8.2.2 函数过程的调用 函数调用必须出现在表达式 必须出现在表达式中 函数调用必须出现在表达式中. 如: Area = trapeArea(3,6,4) myAbs(Print myAbs(-7) Select Case myAbs(a) If trapeArea (3,6,4) >20 then trapeArea(5,10,myAbs(Print trapeArea(5,10,myAbs(-7))
第八章 过程
调用通用子过程的语句 [Syntax1] Call过程名 实参列表] 过程名( list) Call过程名([实参列表])(Calling argument list) [Syntax2] 实际参数列表] 过程名 [实际参数列表] 例8-1(无参过程的创建和调用). 无参过程的创建和调用). 例8-2:有参数的过程的创建和调用
5 a
上一页 返回章首
y 9 9 b
x 5 10 a
下一页
y 9 90 b
x 5
y 9
1.传值
2.改变形参 3.释放形参单元 改变形参 3.释放形参单元
第八章 过程
2. 按址传递(ByRef) 按址传递( 实参是变量 变量, 实参是变量, 并且在定义过程时 形参前有关键字ByRef 或缺省) 在定义过程时, ByRef( 并且在定义过程时,形参前有关键字ByRef(或缺省) 注意: 注意: 形参和实参共用同一内存单元, 形参和实参共用同一内存单元, 相同. 形参和实参数据类型要相同 形参和实参数据类型要相同.
上一页 返回章首 下一页
第八章 过程
[例8-10] Private Sub testSub (a As String) Print a End Sub ---------------------------Private Sub Form_Click() Dim a As Integer a =100 testSub a ' 或 call testSub (a) End Sub 实形参类型不同时, ()运算符可将实参的数据传给形参 运算符可将实参的数据传给形参. 实形参类型不同时,用()运算符可将实参的数据传给形参.
上一页 返回章首 下一页
第八章 过程
2.启动过程 Sub Main 2.启动过程 [例 8-23] 根据用户的选择启动不同的窗体 8.5.3 类模块 类模块保存在.cls文件中. .cls文件中 类模块保存在.cls文件中. 类模块既包含数据又包含代码. 类模块既包含数据又包含代码.
上一页
返回章首
上一页 返回章首 下一页
第八章 过程
8.2 函数过程 8.2.1 函数过程的创建 方法1 方法1. 工具" 添加工程" 利用 "工具" 菜单下的 "添加工程" 命令 方法2 方法2. 在代码编辑窗口中直接定义
上一页
返回章首
下一页
第八章 过程
语句的语法形式如下: Function 语句的语法形式如下: [格式]: 格式]: 过程名— [Public|Private][Static] Function 过程名 ([参数列表])[As 类型] ([参数列表])[As 类型] 参数列表]) ……. . 函数过程名= 函数过程名=表达式 End Function 例8-4:计算梯形面积
上一页
返回章首
下一页
第八章 过程
8.1.2 通用子过程的调用
主调过程 Procedure) (Calling Procedure 被调过程Proc 被调过程 (Called Procedure Called Procedure)
Code1
调用Proc 调用 结束
Code2
结束
过程调用示意图
上一页 返回章首 下一页
上一页
返回章首
下一页
第八章 过程
将例8 改成按址传递. 例8-8 将例8-7改成按址传递.
实参 x 5 形参 a 1.传址 传址 y 9 b x 10 a y 90 b 3.释放形参 释放形参 x 10 y 90
2.改变形参 改变形参
上一页
返回章首
下一页
第八章 过程
Private Sub mySub (a As Integer, b As Integer, c As Integer) a = 2 * a: b = 3 * b: c = 4 * c Print "被调过程:",a, b ,c 被调过程: 被调过程 End Sub ------------------------Private Sub Form_Click() Dim x As Integer, y As Integer X = 2: y = 6 Print "主调过程:" , x, y 主调过程: 主调过程 Call mySub (x+y, y+1, x) Print "主调过程:" , x, y 主调过程: 主调过程 End Sub
[例8-11] 编写过程计算球的面积和体积
上一页 返回章首 下一页
第八章 过程
8.4 过程的嵌套与递归调用 8.4.1 过程的嵌套
主调过程 过程proc1 过程 过程proc2 过程 调用proc1 调用 调用proc2 调用 过程结束 过程结束 过程结束 过程的嵌套调用
上一页 返回章首 下一页
第八章 过程
上一页 返回章首 下一页
第八章 过程
8.5.2 标准模块 1 标准模块 1)标准模块保存在扩展名为.bas 的文件中. 标准模块保存在扩展名为.bas 的文件中. 2) 标准模块通常包含 变量,常量,类型, 变量,常量,类型, 外部过程和通用过程的全局或模块级声明 3)标准模块可以脱离特定的应用程序, 标准模块可以脱离特定的应用程序, 4)添加模块