vb程序设计实用教程 vb程序设计实例100( 二 )



数组名2=数组名1

我们就此形式作讨论:这里的数组名2,实际上在前面的数组声明时,只能声明为Variant的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:

Dim数组名2()或Dim数组名2 (下标)

程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息 。

所以,为了程序的安全、可靠,建议读者还是忍痛割爱,少用VB6.0的这一新功能,使用传统的循环结构来给数组赋值 。基于此原因,我们也就在教程中不作展开 。

五、过程中常见错误和注意事项

1.程序设计算法问题

该章程序编写难度较大,主要是算法的构思有困难,这也是程序设计中最难学习的阶段 。经验告诉每一位程序设计的初学者,没有捷径可走,多看、多练、知难而进 。上机前一定要先编写好程序,仔细分析、检查,才能提高上机调试的效率 。每当一个程序通过艰苦的努力调试通过时,那苦尽甘来的喜悦令你一言难尽 。

2.确定自定义的过程是子过程还是函数过程

实际上过程是一个具有某种功能的独立程序单位,供多次调用 。子过程与函数过程的区别是前者子过程名无值,后者函数过程名有值 。若过程有一个返回值,则习惯使用函数过程;若过程无返回值,则使用子过程,若过程返回多个值,一般使用子过程,通过实参与形参的结合带回结果,当然也可通过函数过程名带回一个,其余结果通过实参与形参的结合带回 。

3.过程中形参的个数和传递方式的确定

对初学者,在定义过程时不能确定形参的个数和传递方式 。

过程中参数的作用是实现过程与调用者的数据通信 。一方面,调用者为子过程或函数过程提供初值,这是通过实参传递给形参实现的,另一方面,子过程或函数过程将结果传递给调用者,这是通过地址传递方式实现的,因此,决定形参的个数就是由上述两方面决定的 。对初学者,往往喜欢把过程体中用到的所有变量作为形参,这样就增加了调用者的负担和出错概率,也有的初学者全部省略了形参,则无法实现数据的传递,既不能从调用者得到初值,也无法将计算结果传递给调用者 。

VB中形参与实参的结合有传值和传地址两种方式 。区别如下:

(1)在定义形式上前者在形参前加即ByVal关键字 。

(2)在作用上值传递只能从外界向过程传入初值,但不能将结果传出,而地址传递既可传入又可传出 。

(3)如果实参是数组、自定义类型、对象变量等,形参只能是地址传递 。

4.实参与形参类型对应问题

在地址传递方式时,调用过程实参与形参类型要一致 。例如:

函数过程定义如下:

Public Function f!(x!)

f=x+x

End Function

主调程序如下:

Privme Sub Commandl_Click()

Dim y%

y=3

Print f(y)

End Sub

上例形参x是单精度型、实参y是整型,程序运行时会显示"ByRef参数类型不符"的编译出错信息 。

在值传递时,若是数值型,则实参按形参的类型将值传递给形参 。例如:

函数过程定义如下:

Public Function f!(ByVal x%)

f=x+x

End Function

主调程序如下:

Priva~SubCommandI_Click()

Dim y!

Y=3.4

Print f(y)

End Sub

程序运行后显示的结果是6 。

5.变量的作用域问题

局部变量,在对该过程调用时,分配该变量的存储空间,当过程调用结束,回收分配的存储空间,也就是调用一次,初始化一次,变量不保值,窗体级变量,当窗体装入,分配该变量的存储空间,直到该窗体从内存卸掉,才回收该变量分配的存储空间 。

推荐阅读