fortran程序设计第9章.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第九章 子程序 应用程序由一个主程序和若干个子程序组成。程序中可以只有主程序而没有子程序,但是不能没有主程序而只有子程序。以前程序举例都只是由主程序组成的。程序在运行时总是从主程序开始执行,所以如果没有主程序,程序就无法运行。 子程序有函数子程序、子例行程序和数据块子程序三种。数据块子程序仅用来给公用区中的变量赋初值,故将它放在后面与公用区的使用同时介绍。 子程序可以被主程序调用,也可以被其它子程序调用,但是子程序不能直接或间接地自己调用自己,不允许递归调用。把调用子程序的主程序和子程序统称为调用程序,把被调用的子程序统称为被调用程序。 9.1 函数子程序 函数实例:f(x)=x4+x3+2x-7 +1 (x0) Y= 0 (x=0) -1 (x0) 函数子程序: FUNCTION Y(X) IF (X .GT. 0.0) THEN Y=1.0 ELSE IF (X .EQ. 0.0) THEN Y=0.0 ELSE Y=-1.0 END IF END 三种函数:内部函数、语句函数、函数子程序(外部函数)。 函数子程序是一个单独的程序单位,它不属于调用程序所在的程序单位,因此它称为外部函数。语句函数则属于其所在的程序单位,只能被本程序单位中表达式引用。内部函数是FORTRAN提供的系统标准函数,可以为任何程序单位引用。 [例9.1]编写求实型数绝对值的函数 REAL FUNCTION MYABS(X) REAL X IF (X .LT. 0) THEN MYABS=-1*X RETURN ELSE MYABS=X ENDIF END PROGRAM MAIN REAL MYABS, X, A WRITE (*, *) ‘Enter a number:’ READ (*, *) A X=MYABS(A) WRITE (*, *) ‘A=’, A, ‘X=’, X END 9.1.1 函数子程序的定义 格式1:类型说明 FUNCTION 函数名(虚拟参数表) 格式2:FUNCTION 函数名(虚拟参数, …) 类型说明 函数名 格式3:类型说明 FUNCTION 函数名() 虚参可以是变量名、数组名、子程序名。 9.1.2 函数子程序的调用 外部函数的调用形式与内部函数的调用形式完全相同,其形式如下: 函数名(实在参数, … )或者函数名() [9.2]编写求1+2+…+n的函数子程序,调用此函数求以下表达式的值Y=((1+2+3)+(1+2+3+4)+(1+2+3+4+5))/((1+2+3+4+5+6)+ (1+2+3+4+5+6+7)) PROGRAM MAIN2 N=3 Y=(SUM(N)+SUM(N+1)+SUM(N+2))/(SUM(N+3)+SUM(N+4)) WRITE (*, *) ‘Y=’, Y END FUNCTION SUM(X) INTEGER X SUM=0 DO 10 I=1, X SUM=SUM+I 10 CONTINUE END [例9.3]已知sinh(x)=(ex-e-x)/2,由程序输入x的值,求出sinh(x),其中ex=1+x+x2/2!+x3/3!+...+xn/n! PROGRAM MAIN3 REAL MYEXP READ (*, *) X Y=(MYEXP(X)-MYEXP(-X))/2.0 WRITE (*, *) ‘SINH(‘, X, ‘)=’, Y END FUNCTION MYEXP(X) REAL MYEXP N=0 T=1 S=1 DO 10 WHILE (ABS(T) .GT. 1E-5) N=N+1 T=T*X/N S=S+T 10 CONTINUE MYEXP=S END 9.2 子例行程序 子例行程序和函数子程序都是子程序,它们的区别在于:函数子程序的名字代表一个值,在函数子程序中求出的函数值存放在函数名中。因此,函数名是函数值的体现者,对函数名应作类型说明。而子例行程序的名字只供调用,它不代表某个值,当然也不属于某个类型。在子例行程序中求得的值不是由子程序名带回调用单位,而是通过实参与虚参的联系带回调用单位。 [例9.4]使用子例行程

文档评论(0)

zywx66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档