(3)Sub f1(ByVal n%())(4)Sub f1(x(i)as integer)
9. 已知有如下求两个平方数和的fsum子过程:
Public Sub fsum(sum%, byval m%, byval n%)
Sum=m*m+n*n
End Sub
在事件过程中有如下变量声明:
Dim a%,b%,c!
a=10
b=20
则指出如下过程调用语句错误所在:
(1)fsum 3,4,5(2)fsum c, a, b(5)call fsum c, a, b
(3)fsum a+b, a, b(4)call fsum(sqr(c), sqr(a), sqr(b))
1. 子过程和函数过程的相同点:函数过程和子过程都是功能相对独立的一过程结构,它们有各自的过程头、变量声明和过程体。在程序中使用它们不但可以避免频繁的书写重复的程序语句,缩短代码,而且使程序条理清晰,容易阅读。
子过程和函数过程的不同点:
(1)过程声明的关键字不同,子过程用Sub,函数过程用Function。
(2)子过程名无值就无类型声明,函数过程有值就有类型声明。
(3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值一次;而子过程名在过程内不能赋值。
(4)调用方式不同,子过程是一句独立的语句,可用call子过程名或省略call直接以子过程名调用;函数过程不是一句独立的语句,是一个函数值,必须参与表达式的运算。
(5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数定义的形式,并在子过程的
形参表中增加一个地址传递的形参来传递结果。但反过来,用一个函数过程去替代一个子过程,有时是不容易实现的。
2. 形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置,形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。
形参不能是常量、表达式或数组元素,只能是变量。
实参是调用子过程时提供给过程形参的初始值或通过过程体处理过后获得的结果。
3. 调用时用实参代替形参,实参与形参在个数、位置、类型一一对应,但实参与形参名相同与否无关。VB在调用过程时,提供了命名参数的功能,在调用时使用形参名,而位置可任意;同时VB还提供了可选参数的功能,也就是实参与形参个数不一定相等。
4. 仅要从调用者获得初值,应使用值传递;要将过程运算结果提供给调用者,必须是地址传递。数组、记录类型和对象必须使用地址传递。
调用时地址传递对应的实参不应该是表达式或常量。在VB中尽管不显示出错信息,但得不到所期望的值。
能够用值传递实现的,尽量用值传递,减少过程间关联,有利于程序的调试。
5. 利用VB提供的函数LBound和UBound确定数组的上、下界。
6. 可以,条件是要在Form1窗体通用声明部分声明的变量是Public;Form2窗体中的过程被访问时变量名前加Form1。
7.方法一:在标准模块中声明Public的变量;
方法二:在某事件过程所在的窗体的通用声明段声明变量;
方法三:在某事件过程以Static关键字声明的变量。
8. (1)错误为Sub子过程名无返回值,也就没有类型
(2)函数名与形参名相同
(3)形参n为数组,不允许声明为ByVal值传递
(4)形参x(i)不允许为数组元素
9. (1)fsum 子过程的第一个形参是地址传递,因此对应的实参3不应该是常量。
(2)fsum子过程的第一个形参是整型且地址传递,对应得实参c是单精度,类型不匹配。
(3)fsum子过程的第一个形参是地址传递,因此对应的实参a+b不应该是表达式。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22730-22.html
你信不信到时候美国会毫不犹豫的第三次揍你
卿言是也