第7章VB过程和参数传递
- 格式:ppt
- 大小:297.00 KB
- 文档页数:53
一、形式参数与实际参数1 形式参数:就是在定义函数或过程的时候命名的参数。
通俗讲就是一个记号。
2 实际参数:就是在执行时,调用函数或过程时,传递给函数或过程的参数。
通俗讲就是实际值。
3 参数嘛,就是一个可变量,它随着使用者的不同而发生变化。
举个例子,在中学的时候学过sin(x)函数,这里的x就是形式参数,当你需要求1的正弦值时,你会使用sin(1),这里的1就是实际参数。
4 形参和实参间的关系:两者是在调用的时候进行结合的,通常实参会将取值传递给形参,形参去之后进行函数过程运算,然后可能将某些值经过参数或函数符号返回给调用者。
在过程之间传递参数,形式参数和实际参数是很重要的概念。
我们通常说形式参数是过程为了运行的需要预先在内存中保留的地址单元,而实际参数就是在调用过程时放入这些内存地址中进行处理的数据。
如果形式参数是一个盒子,那么实际参数就是盒子里面装的东西。
在参数传递的过程中,形式参数和实际参数的数据类型要一致。
二、参数传递函数参数的传递方式有两种,一种是按地址传递,一种是按值传递。
按地址传递:调用函数时,不直接把实参的值“告诉”函数,而是把地址“告诉”它,函数根据这个地址来寻找并处理值,如果函数修改了这个值,也就修改了这个地址对应的值。
按值传递:把值复制一份再给函数,这个值只属于函数,函数对这个值的修改不影响原值。
VBScript中,要按地址传递可在形参前加ByRef,要按值传递得在形参前加 ByVal,如果什么也不加则表示按地址传递。
1) 按值传递如果在声明过程时,形式参数名前面加上关键字“ByVal”,即规定了在调用此过程时该参数是按值传递的。
按值传递参数时,传递的只是变量的副本。
如果过程改变了这个值,则所做的改动只影响副本而不会影响变量本身。
代码1**********************************Private Sub Command1_Click()Dim num1 As Integernum1 = 5Print num1Call MySub(num1)Print num1 '输出结果为5Call MySub2(num1)Print num1 ' 输出结果仍为5End SubPrivate Sub MySub(ByVal A As Integer)A = 10End SubPrivate Sub MySub2(ByVal A As String)A = "abc"End Sub**********************************如果过程中的形式参数设定为按值传递,就不要求调用时相应实参数的类型必须与其一致,只要实参数的值能够转换为形参的类型即可。
课程标准课程名称:Visual Basic程序设计学时学分:160(2)专业层次:微机制订日期:2012年9月归口单位:计算机工程系制订人:Visual Basic程序设计是一个理论和实际紧密相连的技术,上机实验是教学中的必要环节。
现提出一套可行的“Visual Basic程序设计”课程的课程标准。
1 课程概述●课程研究的对象和研究内容随着计算机的普及和以Internet为代表的信息高速公路的迅速发展,计算机应用已深入到社会的各行各业,这不仅要求当今的大学生要掌握好本专业知识,同时还要有用计算机技术为本专业服务的能力。
因此熟练掌握一种计算机应用软件开发工具是对大学生的基本要求,这将直接影响到计算机在其他专业领域中的应用。
本课程所讲授的Visual Basic即是一种易学实用、适用面广的面向对象的软件开发平台。
VB程序设计课程可以使学生掌握软件设计的基础知识和基本方法,培养学生具有利用软件开发环境解决实际问题的能力,为进一步学习其它计算机知识及今后使用或开发应用程序奠定基础。
●课程在整个课程体系中的地位“Visual Basic程序设计”属于计算机基础教育课程的三个层次“文化、技术、应用”中的第二层次,是微机高职专业学生必修的计算机技术基础课程。
它的先修课是《信息技术基础》。
2. 课程目标(1)使学生理解程序设计的基本概念,建立起程序设计的基本思路,提高学生的理论知识水平。
主要包括了算法的概念、程序设计中的基本技巧和一些常用算法;能够阅读、理解源程序和设计解题流程的能力;了解结构化程序设计和面向对象程序设计的思想,能编制出风格良好的程序;最后达到使用Visual Basic 建立一个小型的应用系统的目的。
(2)使学生掌握基本的程序设计的技术和方法,培养学生的实际动手能力。
这些技术和方法包括算法的设计,程序的实现,能够使用Visual Basic建立一个小型的应用系统。
(3)使学生了解程序设计在本专业的应用、发展及其趋势,培养学生的科研素质。
VB参数传递(传值ByVal与传址ByRef)在过程调用时,一般主调过程与被调过程之间有数据传递,即将主调过程的实参传递给被调过程的形参,完成实参与形参的结合,然后执行被调过程体,被调过程执行结束后返回主调程序,并根据所使用的参数传递方式,决定是否将被调过程的形参值返回给主调过程的实参。
在VB中,实参与形参的结合有两种方式,即传值(ByVal)和传址(ByRef)。
下面将采用图示方法,结合实例,对两种参数传递方式进行深人分析。
1.传值方式(ByVal)。
VB中的传值方式,实参与形参在内存中占用不同的内存单元,当调用一个过程时,系统把实参的值复制一份给形参,实参与形参就断开了联系,被调过程中的操作是在形参自己的内存单元中进行,当过程调用结束时,形参所占用的内存单元同时被释放,调用过程中对形参值的改变对实参没有影响。
因此,值传递方式又称为单向传递,即只能由实参传递给形参,形参的值不能返回给实参。
在过程定义时,必须明确指定参数是按值传递的,在形参的前面加上关键字ByVal。
(I)应用举例。
采用值传递方式,编写交换两个数的过程Swap。
分析能否真正实现两数互换Swap 子过程:主调过程:执行程序,运行结果:A = 10,B =20,并未实现a、b互换。
2.传址方式(ByRef)。
传址方式也称引用方式,是VB默认的参数传递方式,当调用一个过程时,系统将实参的地址传递给形参,实参与形参在内存中占用相同的存储单元。
因此,被调过程中形参值发生变化,主调过程中实参值也会随之变化,这种传递方式是双向的,也称双向传递。
总之,传值时就是在内存中新开辟一个空间,将值赋给这个新开辟的空间,其生命周期为该函数调用结束时释放该空闲,计算结果不影响原调用数据内存空间的值。
传址时同样新开辟一个空间,但不同的是将所用数据空间的内存地址存在新开辟的空间中,即指针,函数在数据处理过程中由于是指针,即对源数据进行操作,操作后结果影响原数据。