VFP程序设计基础实验指导 下载本文

Do SUBJC with 5, S && 调用子程序,并传递参数5,S ? S &&120 5的阶乘值

注意:默认情况下,DO ... WITH 语句以引用传递方式向过程传递变量和数组。当一个值在被调用过程中更改时,新值传递回调用程序中相关的变量或数组。 (3)在命令窗口中执行主程序JCMAIN.PRG,观察执行情况。 do JCMAIN.PRG &&执行主程序 3.带参数的过程文件调用

(1)建立过程文件SP1.PRG,功能是求x的阶乘,代码如下: Procedure JC &&在过程文件中定义一个名为JC的过程 Parameters x , y && 定义形式参数 N=1 Y=1

Do while N<=x

Y=Y*N N=N+1

Enddo

Return &&返回主程序

注:多个过程可以放在一个过程文件中,用过程名来区分。实际上,过程和子程序是一回事,只不过把多个子程序保存在一个PRG文件中,在PRG文件中每个子程序(过程)用Procedure 语句单独定义罢了,而把这个PRG文件成为过程文件。 (2)建立主程序SPMAIN.PRG,代码如下: Set procedure to sp1 &&打开过程文件SP1.PRG S=0

Do JC with 5,S &&调用过程文件中的JC过程 ? S

Set procedure to &&关闭过程文件

(3)在命令窗口中输入DO SPMAIN来执行主程序SPMAIN.PRG,观察执行情况。 4.自定义求圆的面积的函数,程序文件名为:MYFUN.PRG,代码如下: input \请输入半径\

MJ=area(R) &&调用自定义函数AREA,返回值保存到MJ中。

? \半径为\的圆面积为\ &&输出圆的面积

****下面的代码是自定义函数AREA****

FUNCTION AREA &&定义函数名为AREA Parameters X &&定义形式参数

S=pi()*X*X &&计算面积

RETURN S &&返回S的值

注:上述例子,自定义的函数代码与主程序在一个程序文件中;当然也可以把自定义的函数代码放到过程/子程序文件中,用时要先打开过程文件,即可调用。

5.变量的作用域

全局变量:用PUBLIC命令定义,作用范围为所有的程序,直到用RELEASE命令将其释放掉。

私有变量:用PRIVATE命令定义,作用范围为定义它的本级和各级子程序,一旦本级程序结束,私有变量即被释放掉。

局部变量:用LOCAL命令定义,作用范围为定义它的程序,不能被上级程序和下级子程序所调用,一旦定义它的程序执行结束,局部变量即被释放掉。 (1)分析下面的主程序的执行结果。

运行结果为:13

注:图中1,2,3,4为程序执行的流程顺序。

(2)分析下面的主程序的执行结果。

运行结果为:12 注:

①图中1,2,3为程序流程顺序。

②程序中未加说明的变量是私有变量(private),其作用范围是本级程序及其各级子程序,命令窗口中定义的变量是全局变量。 (3)分析下面的主程序的执行结果

运行结果为:X= 4 Y= 5 Z=9 (4)分析下面的主程序的执行结果

运行结果为:X= 1 Y= 2 Z=9

注意:private命令可将上级程序中创建的与私有变量同名的变量隐藏起来,可以在当前程序中操作这些私有变量,而不影响被隐藏的变量的值。一旦包含 private 命令的程序执行完毕,所有被隐藏起来的内存变量就恢复原值,可继续使用。