1 / 23
文档名称:

研究生课程_程序语言设计原理教程_第06章.ppt

格式:ppt   页数:23
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

研究生课程_程序语言设计原理教程_第06章.ppt

上传人:3346389411 2013/3/27 文件大小:0 KB

下载得到文件列表

研究生课程_程序语言设计原理教程_第06章.ppt

文档介绍

文档介绍:第6章函数和过程
命令式语言中子程序有两种形式:函数(必须返回值)也叫函数,过程(实施一组动作)也叫子例程subroutine。它们是程序的第一次分割,这种分割的好处:
实施的功能单一,便于调试;
相对独立,便于多人分工完成,且时间不受约束;
相对封闭,人们易于控制,是分解复杂性的有力措施。
子程序和主程序联系的接口特别重要。在这个界面上要指出该例程的数据特征, 即输入什么输出什么。而整个子程序体是完成从输入到输出的实现手段。
界面指出“做什么?”,而子程序体回答“怎么做”。
80年代程序完成第二次分割: 将子程序定义(即界面)和子程序体显式的分开, 成为相对独立的规格说明(Specification)和体(body)。
函数和过程抽象
函数抽象是用一个简单的名字抽象代表一个函数。函数由函数型构(Signature)和函数体(body)组成。函数计算的目的是求值。函数体等同于一个复合的表达式。
函数抽象是对表达式的抽象
过程抽象是用一个简单的名字抽象代表一个计算过程。过程由过程型构和过程体组成。过程调用的目的是执行一组命令
过程抽象是对命令(即语句)集的抽象
函数由函数型构和函数体组成。形式是:
function FUNC (fp1,fp2,...):returntype;//函数型构
B; //函数体,可包括任何声明和语句
其中fp1,fp2,…为形式参数,也叫形式变元(argument)
returntype 为函数返回值的类型
· 函数引用是应用函数的唯一手段,它在同名的函数名之下给出实
在参数(实在变元):
FUNC (ap1,ap2,...);
各种语言函数定义
(a) FORTRAN
INTEGER FUNCTION FACT(N) //前缀指明返回类型
INTEGER N,I,F //参数类型在此声明
F = 1
DO 10 I = 2,N
F = F*1
10 CONTINUE
FACT = F //必须至少定义函数名一次
RETURN //至少有一返回语句
END
(b) Pascal
FUNCTION fact (n:Integer) :Integer; //参数类型在变元表中定义,
BEGIN //后缀指明返回类型
fact ∶= 1;
IF n = 1 OR n = 0 THEN
Return
ELSE
Fact ∶= n*fact(n-1); //也要定义函数名
END
(c) C
int fact (n){ //前缀指明返回类型
int n; //参数在体中声名类型
int i, f; //ANSI C改参数原型
f = 1;
if(n>1)
for (i = 2; i<= n; i++)
f * = i;
return (f); } //返回表达式f的结果值
(d) Ada
function FACT (N: POSITIVE) return POSITIVE is
begin //参数类型在表中定义,
if N = 1 then //后缀指明返回类型
return(1);
else
return (N*FACT(N-1)); //返回表达式值
endif;
end FACT;
(e) ML
fun fact (n :int) = //函数定义,参数类型表中定义
if n = 1 then 1 else n*fact (n-1)
val fact = fn(n:int) => //用函数定义值
if n = 1 then 1 else n*fact (n-1)

多重入口和指定返回
FORTRAN 的多重入口示例
SUBROUTINE DEG(R,THETA,X,Y)
C =
THETA = C * THETA
ENTRY RAD (R,THETA,X,Y)
X = R * COS(THETA)
Y = R * SIN(THETA)
RETURN
END
若THETA是度数值时,则调用语句为:
CALL DEG (R,THETA,X,Y)
//入口在子程序顶部
若THETA是弧度值时,则:
CALL RAD(R,THERA,X,Y)
//入口在子程序中
FORTRAN的指定返回
SUBROUTINE RM(X,Y,*,*,*)
.
.
.
RETURN2 //返回语句标号80
.
.
.
RETURN1 //返回语句标号70
.
.
.
RETURN3 //返回语句标号120
.
.
.
END
CALL RM(A,B,70,80,120)
形-实参数表中元素个数,次序,类型应一致。早期语