Pascal语言子程序中参数的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Pascal语言子程序中参数的使用
第2卷第l期
2000年2月
辽宁高职
LIAONINGHIGHERVOCA TIONAL TECHNICALINSTITUTEJOUR NAL
V ol2.NO.1
Feb2000
Pascal语言子程序中参数的使用
张学军,李密
(辽宁电子计算机学校.早新高专汁算机教研室,辽宁阜新:123000)
摘要本文主要讨论Pascal语言子程序中值参数,变量参数的拟定和赋值,这对更深刻的理解子程
序的调用是非常必要的.
关键词值参数:变量参数:实在参数:Pascal语言
中图分类号TP3r”PA
弓言
在子程序调用过程中入何理解对值参数,变量参数的拟定,赋值是非常重要的,我们知道值参数
和变量参数是子程序与被调用程序之间传递数据的机构,调用程序
与子程序间是靠参数传递信息的.
例1PROGRAMXCJ1(INPUT,OUTPUT):BEGINN:=4
V ARN:INTEGER:V:=3:
Y,Z:REAL:Z:=0
PROCEDURESUB1(M:INI,EGER:V ARS,Z:REAL):SUB1(N,V,Z): BEGINV::2木Y:WRITELN(N:3,V:5:l,Z:5:1)
S:=S木Y:END.
z:=S/N输出结果为:436.09.0
END:
在过程SUB1的形式参数表自定义了三个参数,其中不带保留字V AR的M:INTEGER指明了M是值
参数,带V AR的V ARS,z:REAL指明了S,z是变量参数.
参数的赋值是这样的:
过程体执行前:
主程序:N囤Y=地址1圉z=ttgtJk2囵
3l;
子程序:卅4fs=地址1z=地址2
M是值参数,所以得到了实在参数N的值.
S,z是变量参数.所以S,z分别得到了Y与z的地址,实现了Y与S和z的单元共享.
过程体执行后:
子程序:s=地址1z:地址2
主程序:N囤圆
S=地址1Z:地址2
子程序:州4l
从这个例子中我们可以清楚看到:M与s和z的赋值过程是有明显区别的那么我在子程序的调
用过程中如何对值参数,变量参数进行拟定和赋值呢?
收稿日期:1999—04-27
4辽宁高职第2卷
1.参数的拟定
在程序设计过程中.过程和函数中的形式参数选用值参数还是变量参数要视具体情况丽定.对子
函数一般是希望出一个或多个自变量,通过函数的计算得到一个函数值.不希望在函数调用之后改变
自变量的值,所以函数的形式参数只用值参数,对于过程经常希望通过实在参数与形式参数的结合传
回数据,所以需要传回数据的那些参数必须用变量参数,而希望在过程运行时,其值不受影响的实在
参数只能用值参数与之相应.
例2任给三角形的三条边,求其面积.
PROGRAMzxj2(INPUT,OUTPUT):
V ARAREA,X,Y,Z:REAL:
FOUNCTIONSUB2(A,B,C:REAL):REAL:
V ARP:REAL:
BEGINP:=(A+B+C)/2:
SUB2:=SQRT(P木(P-A)木(P-B)木(P_C))
END:
BEGINREAD(X,Y,Z)
AREA:=SUB2(X,Y,Z)
WRUTEKB(AREA:6:2)
END.
结果为:457
9.80
在此函数的调用过程中,我们只希望通过给三个边长,通过函数的计算得到一个函数值(面积)
因此形式参数理所当然是值参数.
例3用子程序交换两个上整形变量x和Y的内容PROGRAMxcj3(INPUT.OUTPUT):BEGINX:=10:
V ARX,Y:INTEGER:Y:99:
PROVEDURESUB3(V ARA,B:INTEGER):WRIrELN(BEFORECALL INGSWAP:
V ART:INTEGER:’,’X=,X:3,’Y=,Y:3):
BEGINT:=A:SUB3(X,Y)
A:=B:WRITELN(‘.AFTERCALLNGSWAP:’.’X,X:3,’Y,Y:3):
B:=TEND
END:执行结果为:
BFFORECALLINGSWAP:X=10Y=99 AFTERCALLINGSWAP:X=99Y=10
在此过程的调用中需要x,Y与A,B的结果传回结果,所以过程的形式参数是变量参数.
2.参数的赋值
在子程序的调用过程中,实在参数与形式参数之间存在个数,位置,数据类型的一一对应的关系.
调用子程序时将实在参数的值赋给对应的值参数,值参数只具有将实参数的值带入过程体内的作
用.无论其参加何种计算,并不影响与之相配的调用程序中的实在参数值.
其物理过程是:在子程序被调用时,系统为每个值参数开辟了与其类型相适应的临时存储单元,
然后实在参数值赋给对应的值参数,这称为值的传送由于同一位置的实在参数与值参数是不同的存
储单元.因此值参数在子程序执行过程中的改变并不影响实在参数的值,一旦子程序执行完毕.系统
将收回临时存储单元,值参数的值则不存在了.
以例2说明:
函数体执行前:
主程序:x曰Y国z团AREA~
:;;
子程序:蛔困P口


第1期张学军,李密:Pasca1语言子程序中参数的使用8)
函数体执行后:
主程序:x同Y因zAREA网
子程序:蝈朝阳咽
函数执行完毕,临时分配的A,B,c三个存储元被系统收回,值参数的值也就不存在了.若调用
子程序时,对于变量参数是用实在参数的名去替换过程中出现的变量参数,实在参数的值由变量参数
带入子程序体内,在子程序中经运算处理,变量参数被赋以新值,返回调用程序也使实在参数得到该
新值,因此变量参数具有将实在参数传入子程序和将子程序内变量参数的值返回给调用程序实在参数
的作用.
其物理过程是:系统并不为变量参数另外开辟存储单元,而是将实在参数的地址传递给对应的变
量参数,使变量参数具有实在参数的地址,实现其单元共享,这称为地址传送.因此.对变量参数的
每一个操作都是通过它所保留的地址直接对实在参数的操作,从而达到了调用程序和被调用子程序之
间互相传送数据的目的.当过程执行完毕时,变量参数也随之消失,变量参数的值已保留在与其对应
的实在参数中.
以例3说明
在过程体执行前过程体执行完毕:
主程序:x=地址3I10fY=地址4J99lx=地址3B=地址4
I{主程序:9ll1ol
子程序:A=地址3Y=地址4YIlA:地址3B=地址4
过程:1110j
至此我们可以看出,在子程序调用过程中如何正确理解拟定形式参数及它们的赋值过程,对深刻
理解程序的调用过程确有深刻的意义.
参考文献
【l】谭浩强,田淑清.paSCa1语言程序设计.北京:高等教育出版社,1988 【2】陆悯.PaSCa1语言程序设计.北京:航空工业出版社,1995
【3】郑启华.PaSCa1程序设计.北京:清华大学出版社,1991
【4】PeterGrdgono着,蒋国南译.北京:清华大学出版社,1981 TOUseTheParmneterInSubprogramOfPascalLanguage
ZhangXue-jun,LiMi
(TheComputerSection.FuxinHigherProfessionalCollege.Liaoning:1230 00)
Abstract:IUthepapertheauthordiscusseschieflyvalueparanleterandvariabl eparauleterwhichisveD- essentialtounderstandprofoundlythetransferofsubprogram. Keywords:V alueParalneter:VariableParalneter;RealParalneter;PascalLa nguage.
【责任编辑,阜新高专:董艳双)。

相关文档
最新文档