友情提示:同学您好,此页面仅供预览,在此页面学习不会被统计哦! 请进入学习空间后选择课程学习。

实验目的

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)

   Print

   MyPrint (20)

   Print

   MyPrint (100)

   Print

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,改写通用过程FactCommand1_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)在区间[ab]上的定积分,其几何意义是求曲线f(x)和直线x=ay=0x=b所围成的曲边梯形面积。为近似求出此面积,可将区间[ab]分成若干个小区间,每个区间的宽度为(b-a)/nn为区间个数。近似求出每个小的曲边梯形面积,然后将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)使用矩形法修改上面的程序代码,并调试通过。