Visual Basic 6.0程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 罗朝盛 第5章 过程与函数

上传人:E**** 文档编号:89399786 上传时间:2019-05-24 格式:PPT 页数:67 大小:634.50KB
返回 下载 相关 举报
Visual Basic 6.0程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  罗朝盛 第5章 过程与函数_第1页
第1页 / 共67页
Visual Basic 6.0程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  罗朝盛 第5章 过程与函数_第2页
第2页 / 共67页
Visual Basic 6.0程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  罗朝盛 第5章 过程与函数_第3页
第3页 / 共67页
Visual Basic 6.0程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  罗朝盛 第5章 过程与函数_第4页
第4页 / 共67页
Visual Basic 6.0程序设计教程 第4版  普通高等教育“十一五”国家级规划教材  教学课件 ppt 作者  罗朝盛 第5章 过程与函数_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《Visual Basic 6.0程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 罗朝盛 第5章 过程与函数》由会员分享,可在线阅读,更多相关《Visual Basic 6.0程序设计教程 第4版 普通高等教育“十一五”国家级规划教材 教学课件 ppt 作者 罗朝盛 第5章 过程与函数(67页珍藏版)》请在金锄头文库上搜索。

1、,掌握Sub子程序和Function函数过程的定义和调用方法; 掌握传址和传值两种参数传递方式的区别及其用途; 熟悉数组参数的使用方法; 了解过程的嵌套调用和递归调用的执行过程; 掌握过程作用域的有关概念; 掌握变量的作用域和生存期,本章要求:,第六章 过程与函数,本章重点:,Sub过程及Function过程的定义与调用; 过程调用中数据的传递。,本章难点:,过程调用中数据的传递。,第六章 过 程,5.1 过程概述,在VB5.0/6.0中,除了系统提供的内部函数过程和事件过程外,用户可自定义过程下列四种过程: “Sub” 保留字开始的为子过程 “Function” 保留字开始的为函数过程 “P

2、roperty”保留字开始的为属性过程 “Event”保留字开始的事件过程,在VB中,的Sub子过程分为:事件过程和通用过程 5.2.1 事件过程 (1)窗体事件的语法 Private Sub Form_事件名(参数列表) 语句组 End Sub (2)控件事件的语法 Private Sub 控件名_事件名(参数列表) 语句组 End Sub,5.2 Sub过程,子过程的定义形式如下: Public|PrivateStatic Sub 子过程名(形参表) 语句组 Exit Sub 语句组 End Sub,5.2.2 通用过程(Sub过程)的定义,说明:(1)子过程名:命名规则与变量名规则相同。

3、子过程名不返回值,而是通过形参与实参的传递得到结果,调用时可返回多个值。,5.2 Sub过程,(2)形式参数列表:形式参数通常简称“形参”,仅表示形参的类型、个数、位置,定义时是无值的,只有在过程被调用时,虚实参结合后才获得相应的值。 (3)过程可以无形式参数,但括号不能省。 (4)参数的定义形式: ByValByRef变量名( )As 类型,, ByVal表示当该过程被调用时,参数是按值传递的;缺省或ByRef表示当该过程被调用时,参数是按地址传递的。,5.2 Sub过程,例5.1 编一个交换两个整型变量值的子过程。 Private Sub Swap( X As Integer, Y As

4、Integer) Dim temp As Integer Temp=X : X=Y : Y=Temp End Sub,5.2 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,5.2.3 子过程的建立,通过 “工具”菜单中的“添加过程”命令,出现“添加过程”对话框(见图5.1),选择过程类型(子过程、函数、属性、事件)及作用范围(公有的Public

5、、私有的Private),单击确定后得到一个过程或函数定义的结构框架(模板),如: Public Sub Sort( ) End Sub,5.2 Sub过程,5.2.4 过程的调用 1、子过程的调用 子过程名 参数列表 或 Call 子过程名(参数列表) 说明: (1)参数列表称为实参或实元,它必须与形参保持个数相同,位置与类型一一对应。 (2)调用时把实参值传递给对应的形参。其中值传递(形参前有ByVal说明)时实参的值不随形参的值变化而改变。而地址传递时实参的值随形参值的改变而改变。,5.2 Sub过程,(3)当参数是数组时,形参与实参在参数声明时应省略其维数,但括号不能省。 (4)调用子

6、过程的形式有两种,用Call关键字时,实参必须加圆括号括起,反之则实参之间用“,”分隔。 例:调用上面定义的Swap子过程的形式: Swap a,b Call Swap(a,b),5.2 Sub过程,Private Sub CmdOK() Call Swap(a,b) Swap a,b End Sub,Private Sub Swap(x%,y%) Dim temp% Temp=X X=Y Y=Temp End Sub,过程调用的执行过程:,5.2 Sub过程,5.3 Function过程,Visual Basic函数分为内部函数和外部函数,外部函数是用户根据需要用Function关键字定义的

7、函数过程,与子过程不同的是函数过程将返回一个值 。,5.3.1 函数过程(Function过程)的定义,Public|PrivateStaticFunction 函数名()As 函数名=返回值 Exit Function 函数名=返回值 End Function,说明: (1)函数名:命名规则与变量名规则相同。 (2)在函数体内,函数名可以当变量使用,函数的返回值就是通过对函数名的赋值语句来实现的,在函数过程中至少要对函数名赋值一次。 (3)AS类型:是指函数返回值的类型,若省略,则函数返回变体类型值(Variant)。 (4)Exit Function:表示退出函数过程,常常是与选择结构(I

8、f或Select Case语句)联用,即当满足一定条件时,退出函数过程。 (5)形参数列表:形参的定义与子过程完全相同。,例5.2,5.3 Function过程,5.3.2 函数的调用,调用形式如下: 函数名(实参列表) 说明: 在调用时实参和形参的数据类型、顺序、个数必须匹配。函数调用只能出现在表达式中,其功能是求得函数的返回值。,例5.3,5.3 Function过程,5.4 过程之间参数的传递,Visual Basic中不同模块(过程)之间数据的传递有两种方式: 通过过程调用实参与形参的结合实现; 使用全局变量来实现各过程中共享数据。,5.4.1 形式参数与实际参数,1、形式参数 是指在

9、定义通用过程时,出现在Sub或Function语句中的变量名后面园括号内的数,是用来接收传送给子过程的数据,形参表中的各个变量之间用逗号分隔。,2、实际参数 实际参数是指在调用Sub或Function过程时,写入子过程名或函数名后括号内的参数,其作用是将它们的数据(数值或地址)传送给Sub或Function过程与其对应的形参变量。 实参可由常量、表达式、有效的变量名、数组名(后加左、右括号,如A( ))组成,实参表中各参数用逗号分隔。,5.4.2 参数传递(虚实结合),参数传递指主调过程的实参(调用时已有确定值和内存地址的参数)传递给被调过程的形参,参数的传递有两种方式:按值传递、按地址传递。

10、形参前加“ByVal”关键字的是按值传递,缺省或加“ByRef”关键字的为按地址传递。,5.4 过程之间参数的传递,传址与传值 传址: 形参得到的是实参的地址,当形参值的改变同时也改变实参的值。 传值: 形参得到的是实参的值,形参值的改变不会影响实参的值。,Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,例5.4,5.4 过程之间参数的传递,Private Sub CmdO

11、K_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,Sub Swap2(x%, y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,Sub Swap1(ByVal x%, ByVal y%) Dim Temp% Temp = x: x = y: y = Temp End Sub,5.4 过程之间参数的传递,值传递的执行过程如下图:

12、,5.4 过程之间参数的传递,通过地址传递数据的执行过程,5.4 过程之间参数的传递,5.4.3 有关过程之间数据传递的几点说明,1.参数的数据类型,2. 按值传递参数,3.按地址传递参数,注意:在子过程和函数过程调用时,如果实参是常量(包括系统常量、用Const自定义的符号常量)或表达式,无论在定义时使用值传递还是地址传递,此时都是按值传递方式将常量或表达式计算的值传递给形参变量。 如果形参定义是按传地址方式,但调用时想使实参变量按值方式传递,可以把实参变量加上括号,将其转换成表达式即可。,例5.5 参数的传递问题:,4使用子过程还是使用函数过程 解决一个问题既可以使用子过程,也可以使用函数

13、过程,是使用子过程还是使用函数过程呢?如果是需要求得一个值,一般情况使用函数过程,如不是为了求一个值,而是完成一些操作,或需要返回多个值,则使用子过程比较方便。,例5.6 分别编写计算下面级数的子过程和函数过程,并在窗体的单击事件中调用。 级数为, 要求精度为:,5.4.4 数组作过程的参数,Visual Basic允许把数组作为实参传送到过程中。数组作参数是通过传地址方式传送。在传送数组时,除遵守参数传送的一般规则外,还应注意以下几点: 1为了把一个数组的全部元素传送给一个过程,应将数组名分别写入形参表中,并略去数组的上下界,但括号不能省略。 Private Sub Sort(a() As

14、single) End Sub 其中形参“a( )”即为数组。,2被调过程可通过Lbound和Ubound函数确定实参数组的上、下界。 3当用数组作形参时,对应的实参必须也是数组,且类型一致。 4实参和形参结合是按地址传递,即形参数组和实参数组共用一段内存单元。 例如:定义了实参数组b(1 to 8),给它们赋了值,调用Sort()函数过程的形式如下: Sort b( ) 或 Call Sort( b() ) 实参数组后面的括号可以省略,但为便于阅读,建议一般不要省略为好。,5.4.4 数组作过程的参数,调用时形参数组a和实参数组b虚实结合,共用一段内存单元,如图6-7所示。因此在Sort()

15、过程中改变数组a的各元素值,也就相当于改变了实参数组b中对应的元素的值,当调用结束时,形参数组a成为无定义。 b(1) b(2) b(3) b(4) b(5) b(6) b(7) b(8) a(1) a(2) a(3) a(4) a(5) a(6) a(7) a(8) 参数为数组时虚实结合示意图,例5.7 改写上章例5.3的排序程序,分别将排序用子过程Sort(),产生N个随机整数用子过程GetData(),输入N个数组元素用PrData()子过程来完成。,5.4.4 数组作过程的参数,5.5 过程的嵌套和递归调用,5.5.1 过程的嵌套,在程序中调用一子过程,而在子过程中又调用另外的子过程,

16、这种程序结构称为过程的嵌套。过程的嵌套调用执行过程如下图:,5.5.2 过程的递归调用,用自身的结构来描述自身,称递归。例如,对阶乘的定义:,Visual Basic允许在一个Sub子过程和Function过程的定义内部调用自己,即递归Sub子过程和递归Function函数。,例5.8 编求阶乘fac(n)=n! 的递归函数,5.5 过程的嵌套和递归调用,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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号