APP下载

VB调用过程中的参数传递解析

2015-07-19

学周刊 2015年6期
关键词:主程序常量子程序

(河北省香河县第三中学065400)

VB调用过程中的参数传递解析

刘新颖

(河北省香河县第三中学065400)

VB编程中参数过程的调用是重点和难点,特别是调用过程中的参数传递,学生难于理解和掌握,本文结合实例,深入分析参数传递中的两种方式,并对两种方式进行举例说明,对于学生理解和掌握参数传递的过程十分重要。

过程调用参数传递

使用Visual Basic(简称VB)编写程序,除了需要进行界面设计,还需要大量的程序代码的编写,为了便于程序的调试与维护、提高代码的利用率,就需要将程序分为若干模块和子模块,并采用过程的调用来实现。在VB教学工作中,过程调用中的参数传递往往是学生最难理解和掌握的知识点,本文结合实例对参数传递的两种方式进行深入的分析和说明,方便学生的理解和使用。

一、参数的概念

参数是过程与外界通信的媒介,有与外层程序互相传递消息的使命。参数分为形式参数和实在参数。

1.形式参数是指出现在过程中参数,简称形参。实在参数是指调用过程时使用的参数,简称实参。

2.实在参数与形式参数表中的参数名可以相同,也可以不同。但实参表中的参数类型与形参表中的数据类型必须一致。

3.实在参数与形式参数发生数据传递时,数据是一一对应的。即实参表中的第一个参数必须只能传给形参表中的第一个参数。

二、参数传递的方式

在VB中,根据参数的值是否能回传,也就是说,根据运算后的形式参数值能否再传递给与它相应的实在参数,而把参数传递分为两种方式:按值传递和按地址传递。

1.按值传递。这种传递方式只能是在调用过程时,主程序将值传递给形参,而不能在运算后形参的值再传递回来给实参。也就是说,这种传递方式只能是单向的,即使形参的值发生了改变,也不会影响到调用该过程的语句中实参的值。

例如:

Private Sub Form_Activate()

Const A%=5

Print 5,A,3+5

Call exam1(5,A,3+5)

Print 5,A,3+5

End Sub

Private Sub exam1(x,y,z)

X=x*2

Y=y+3

Z=z^2

Print x,y,z

End Sub

主程序的第一条语句,是在声明符号常量,即让A的值在此程序中永远等于5。此时执行到第二条语句时,在窗体中输出常量值5、符号常量值5、和表达式3+5的值,即8。第三条语句时,实现了过程调用中的参数传递,即把常量5传递给了子程序exam1中的x,符号常量A的值5传递给了子程序中的y,把表达式3+5的值8传递给了子程序的Z。转到子程序后,按照子程序的过程,再分别x、y、z的新值,这时,执行子程序中的Print x,y,z,即输出新的x、y、z的值。执行到子程序中的End Sub语句后,返回主程序的第四条语句。

由于在刚刚进行的参数传递的过程中,主程序中的实参均是常量(常量值不受任何外界影响,永远都不会变化),所以过程在被调用时对形参的任何改变都不会影响到实参,这段主程序中的实参并没有因为子程序而发生任何的变化。

由此分析,此程序的运行结果为:558 10864 558

此过程即为参数传递中的按值传递。

2.按地址传递。这种传递方式不是将实在参数的值传递给了形式参数,而是将存放实在参数值的内存中的存储单元地址一起传递给了形参,此时形参和实参具有相同的存储单元地址,也就是说,如果一旦形参的值发生改变,实参的值也会随之一起变化,并且实参会将改变后的值带回到调用该过程的程序里面,这种参数传递方式是双向的。

例如:

Private Sub Form_Activate()

Dim a%,b%,c%

A=5:b=5:c=8

Print a,b,c

Call exam(a,b,c)

Print a,b,c

End sub

Private Sub exam(x,y,z)

X=x*2

Y=y+3

Z=z^2

End sub此例题与上一例题有稍许改动,但意义和执行过程就有了很大的变化。

主程序中的第一条语句,定义了三个变量:a、b、c。第二条语句分别给a、b、c赋值。执行到第四条语句时,调用子程序exam,在调用的过程中,将a的值传递给了子程序中的形参x,将b的值给了形参y,将c的值传递给形参Z。由于实在参数在传递时为变量,所以传递的过程中,实参不仅将值传递给了形参,并且将存储它们的地址单元一起传递了过去,即此时实参a与形参x共用一个存储地址单元。同理,实参b与形参y共用一个地址单元,实参c与形参z共用同一地址。调用子程序后,子程序中分别对x、y、z的值进行了新的计算和赋值,此时,与它们同用一个地址单元的实参a、b、c也会随之发生变化。

由此分析,此程序的运行结果为:5 5 8

10 8 64

10 8 64

此过程实现了参数的按地址传递。

三、调用过程中的参数传递总结

在参数传递的过程中,实在参数可以是常量、表达式或者变量,而形式参数作为接收数据的一方,只能是以变量的方式出现。如果实在参数是常量或表达式时,系统默认为按值传递参数,一旦实在参数为变量时,则系统自动默认采用按地址传递。也就是说,在按地址传递参数时,实在参数必须是变量,常量或表达式是无法进行地址传递的,因为它们的值永远固定,无法因为子程序中形参值的改变而改变。

(责编 金东)

猜你喜欢

主程序常量子程序
科学照亮世界
——卡文迪什测定万有引力常量
电控冰箱软件模块化设计
低氧低分压环境下泡塑吸附火焰原子吸收光谱法测定常量金
子程序在数控车加工槽中的应用探索
论常量函数的充分必要条件
简化编程与子程序嵌套的应用
未经授权的第三方软件侵权问题研究
——以“腾讯与360之争”为视角*
解决常量与变量问题的四种策略