FORTRAN90第6节子程序.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FORTRAN90程序设计 计算机中心 2006.3 * Fortran 90 * Visual Fortran 90 程序设计 §6.1概述 §6.5 子程序的嵌套调用 §6.2 函数子程序 §6.6 模块 §6.3 子例子程序 §6.7 递归过程 §6.4 虚实结合 §6.8 其他部分 §6.9 程序举例 §6.1 概述 主程序的结构: 单位定义 说明部分 输入 计算或处理 输出 END 用子程序完成 用子程序完成 用子程序完成 子程序 子程序 引入子程序的目的:模块化设计 所有功能都在主程序单位内完成 1、一个Fortran90程序主程序单元个数:1个 2、子程序单元:0-n个 子程序单元被主程序单元或被其它子程序单元调用,甚至可以递归调用(调用本身) 源程序的结构 主程序: 单位定义 说明部分 输入 调用子程序 输出 END 计算或处理 子程序: 最简单的源程序的结构 子程序分类 1、函数子程序 分为内部函数子程序 外部函数子程序 2、子例行子程序 分为内部子例行子程序 外部子例行子程序 用于完成复杂的计算 返回 一个或多个值 用于完成复杂计算,返回一个或多个值,或用于其它数据处理 §6.2外部函数子程序 单位定义语句 说明部分 程序体:具体计算 END语句 外部函数子程序的结构 FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL::X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END PROGRAM NAIN …… READ*,A,B D=F(A,B,c) PRINT*,C,D END 两单位相互独立编译 必须进行数据的传递 END [FUNCTION [函数名]] 子程序END语句写法 1、函数单位的结束标志 2、将控制返回到主调程序。 子程序END语句功能 函数单位定义语句的写法 [RECURSIVE]FUNCTION 函数名(虚元表)RESULT(结果名) 1、函数子程序的第一行(注释行除外)。 2、如果函数是递归的,则应以RECURSIVE开头。 3、函数名为全局名:作用域为整个程序,不与已有的全局名同名。 各独立程序单位的名字为全局名 4、主调程序与被调程序 两个单位之间的数据传递 ①结果名:子程序的一个输出 一般写法:函数名_RESULT,用于保存一个计算结果,称为函数值。且结果名有类型,必须在子程序说明部分说明类型。 ②虚元表:子程序的所有输入,及除函数值之外的其他计算结果的输出。 函数值返回给调用式 由实元传递给对应的虚元 虚元数据返回给对应的实元 FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL::X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END PROGRAM NAIN …… READ*,A,B D=F(A,B,c) PRINT*,C,D END 主 子 5、虚元的含义:编写子程序时没有具体值(调用时或调用结束后才获得数值),因此只是一个符号,表示输入、输出,名字可随便用户取。 6、虚元可以是变量名、数组名、过程名、指针等。 7、虚元的可选属性INTENT: INTENT(IN):作为子程序的输入(不得再改变其值) INTENT(OUT):子程序的输出(对应的实元不能是表达式) INTENT(INOUT):子程序的输入输出 例:REAL,INTENT(IN)::X,Y 子程序程序体的写法 分为说明部分和执行部分。 1、说明部分应对程序体内一切变量、数组等实体(包括虚元)作出说明,同时还要说明函数结果变量名,但不可说明函数名。 2、执行部分中必须对函数结果名至少赋值一次。 FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL::X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END 两单位独立编译 1、调用式是表达式, 调用结束后调用式得到函数值。 2、常见形式: ①Y=函数名(实元表) ②PRINT*,函数名(实元表) ③IF(函数名(实元表))…… 注意:实元与虚元一般必须在个数、次序、类型上保持一致;但实元与虚元名字可以不同。 函数子程序的调用 例1:编写子程序求K=M*N,L=M-N,主程序输入2,3,调用子程序,计算2*3及2-3。 Program main Implicit none Integer::M,N,K,L,F Read*,M,N K=F(M,N,L) PRINT*,K,L END FUNCTION F(M,N,L)RESULT(F_RESULT

文档评论(0)

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

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

1亿VIP精品文档

相关文档