1. 掌握变量作用域的概念。
2. 了解声明局部变量、模块级变量和全局变量的方法。
3. 了解过程调用中的参数传递问题。
4. 能够利用分支结构、循环结构和数组编写稍复杂一些的程序。
一、定义并调用Function过程
考虑编写Function过程计算n!,然后调用该通用过程计算1!+2!+3!+ …… +20!。补充完善如下代码,并调试通过。
FunctionFACT(n As Integer) As Single
'下面的代码实现FACT的功能
EndFunction
PrivateSub Form_Click()
DimS As Single, I As Integer
S = 0
For I = 1 To 20
S = S + FACT(I)
Next I
Print "1!+2!+……20!=", S
EndSub
运行该程序,然后回答以下几个问题。
(1)定义Function过程时应注意什么问题?
(2)应怎样调用Function过程?
二、定义并调用Sub过程
考虑编写Sub过程打印*号,然后调用该过程多次打印指定个数的*号。补充完善如下代码,并调试通过。
SubMyPrint(N As Integer)
'下面的代码实现MyPrint的功能
EndSub
PrivateSub Form_Click()
MyPrint (5)
MyPrint (20)
MyPrint (100)
EndSub
运行该程序,然后回答以下几个问题。
(1)定义Sub过程时应注意什么问题?
(2)应怎样调用Sub过程?
三、通用过程的使用
设计如图7-1所示的程序界面,计算
。要求公式中的n!、m!和(n-m)!采用Sub过程实现。补充完善如下代码,并调试通过。

SubFact( )
For i = 1 To N
s = s * i
Next i
EndSub
PrivateSub Command1_Click()
DimN As Integer, m As Integer
Dim s1 As Double, s2 As Double, s3 AsDouble
Dimc As Double
N = Val
m = Val(Text2.Text)
Call Fact(s1, N)
Call Fact(s2, m)
c = s1 / (s2 * s3)
Text3.Text = c
EndSub
运行该程序,然后解决以下几个问题。
(1)编写通用过程求n!时,除使用Sub过程外,还可以使用什么过程?
(2)根据问题1,改写通用过程Fact和Command1_Click事件过程。
(3)调用Function过程和Sub过程的方法有何不同?
四、过程调用中的参数传递问题
在窗体上添加命令按钮控件Comamnd1,并编制如下的程序代码。
Subabc(ByVal x As Integer, y As Integer, z As Integer)
z =x + y
x = 0
y= 0
EndSub
PrivateSub Command1_Click()
Dima As Integer, b As Integer, c As Integer
a = 10
b = 20
Call abc(a, b, c)
Print a, b, c
EndSub
先回答下面几个问题,然后再调试运行该程序。
(1)运行该程序后,a,b,c的值分别为: , , 。
(2)调用过程abc时,第1个参数属于按 传递,第2个参数属于按 传递,第3个参数属于按 传递。
五、变量的作用域
窗体上含有一个命令按钮控件,并编制如下的程序代码。
'定义窗体级变量
Public X AsInteger
PrivateSub Form_Load()
Static Y AsInteger
X=10
Y=20
Z=30
EndSub
PrivateSub Command1_Click()
X=X+1
Y=Y+1
Z=Z+1
Print X, Y, Z
EndSub
先回答下面的问题,然后再调试运行该程序。
(1)第一次单击Command1的输出结果为: , , 。
(2)第二次单击Command1的输出结果为: , , 。
六、综合程序设计
使用梯形法编程计算定积分
,补充完善如下代码,并调试通过。提示:求一个函数f(x)在区间[a,b]上的定积分,其几何意义是求曲线f(x)和直线x=a,y=0,x=b所围成的曲边梯形面积。为近似求出此面积,可将区间[a,b]分成若干个小区间,每个区间的宽度为(b-a)/n,n为区间个数。近似求出每个小的曲边梯形面积,然后将n个小面积加起来,就近似得到总的面积,即定积分的近似值。当n愈大(即区间分得愈小),近似程度就愈高。而近似求小曲边梯形面积的方法,可使用矩形法和梯形法

PrivateSub Form_Click()
ConstN = 10
Dim a As Single, b As Single
Dim s As Double, s1 As Double, h As Double
a = 0: b = 1
h =
For I = 1 To N
s1 = (Sin(a + (I - 1) * h) + Sin(a + I* h)) * h / 2
s =
Next I
Print s
EndSub
运行该程序,然后解决以下几个问题。
(1)在本程序中,要增加运算结果的精度,应改变程序中的哪个值?
(2)使用矩形法修改上面的程序代码,并调试通过。