关于VFP多模块程序设计内容 procedure和upfparms的意思和用法,请大神讲解

我列两个真题吧,请大神把每句解析一下,重点解析上提到的两个函数
一:clear
store 3 to x
store 5 to y
plus((x),y)
?x,y
procedure plus
parameters a1,a2
a1=a1+a2
a2=a1+a2
endproc

二:clear
a=10
b=20
set upfparms to reference
do sq with(a),(b)
?a,b
procedure sq
parameters x1,y1
x1=x1*x1
y1=2*x1
endproc
多谢大神啦,本人平时比较懒,没多少积分给,还请见谅

【基本概念】
--------------------------------------------------
简单说:
"过程",用Porcedure定义,没有返回值。
"函数",用Function定义,有返回值。
做完一件事,要返回参数结果的用函数,否则用过程。
--------------------------------------------------
关于参数:
对于过程和函数,可以传递参数(一般是变量,如:x,y等)

关于参数调用模式:
参数的变量调用,有2中模式:一种是调用中,可以改变变量的值(value——值模式);一种是值不改变,保持原值(reference——引用模式

)。
值——变量随程序计算而变化;
引用——变量被程序计算后,值保持不变。

--------------------------------------------------
使用方法:

第一种方法(命令):
SET UDFPARMS TO VALUE | REFERENCE
说明:
这个命令就是定义参数传递的模式,是“值(value)”还是“引用(refenrence)”。
值——变量随程序计算而变化;
引用——变量被程序计算后,值保持不变。

udfparms=user difind function parameters(用户自定义函数-参数的意思)

第二张方法(符号):
(1)要通过“值”传递数据时,可以将每个参数放入圆括号 (()) 中,
显示如下示例中:myFunc((var1),( var2))
(2)要通过“引用”传递数据时,在变量或数组名前用一个(@)前缀,
显示如下示例中:myFunc(@var1, var2)

--------------------------------------------------
回到题目:
一:clear &&清屏
store 3 to x &&x=3
store 5 to y &&y=5
&&这里可以理解还有一个语句,“默认情况,通过‘引用’将变量和数组传递给‘过程’。”
plus((x),y)
&&调用过程plus,输入参数是(x),y,其中(x)是值模式,y是引用模式,执行完过程,x=8(变化了),y=5(不变)
?x,y
&&屏幕显示x,y的值。8,5

procedure plus &&定义一个过程,名称plus
parameters a1,a2 &&plus 过程有2各输入参数a1,a2
a1=a1+a2
&&过程开始执行,参数a1+参数a2后,把值赋给a1=3+5=8,由于是值模式,变量x=8;
a2=a1+a2
&&过程继续执行,新a1+参数a2后,把值赋给a2,新a2值实际变为=8+5=13,由于是引用模式,变量y=5;
endproc &&过程结束

二:clear &&清屏
a=10 &&赋值,a=10
b=20 &&复制,b=20
set upfparms to reference
&&设置参数——引用模式,不改变参数值。
do sq with(a),(b)
&&执行过程,(a)(b)——参数值模式,这里程序故意对上一句做了一个不同模式的设置,验证效果;
?a,b
&&由于是值模式,参数值被调用后,会变化,所以打印:100,200

procedure sq &&过程定义sq
parameters x1,y1 &&参数x1,y1
x1=x1*x1 &&X1=10*10=100
y1=2*x1 &&Y1=2*100=200,参数b的值,这里没被用上,就被赋了新值。
endproc
温馨提示:答案为网友推荐,仅供参考
相似回答