- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
fortran95的使用方法4
第13章 ?过程及其通讯 如果说一个语句可以看成是一条指令,那么在FORTRAN 95语言里,一个具有一定结构的计算任务可以对应的最小程序单位,就是一个过程。 从专致于科学计算的初衷出发,FORTRAN在语言的结构层面上,可以认为是面向过程的一种语言,尽管在编程语言流行面向对象的今天,面向过程显得有点落伍,但却有效地适用于描述计算任务,当然随着现代技术对于计算的要求越来越复杂与庞大,FORTRAN也不是一味地守旧,可以预计FORTRAN的下一个版本,就会具有适应大型软件工程的要求的面向对象的语言特性。 FORTRAN 95语言作为一种语言的主要特点,可以说就体现在它的过程这个主要的程序结构上。而从我们程序编写者的角度来看,能否把一个完整的算法转写成一个完整的程序,关键也就在于能否构造出一些恰当的过程来作为程序的基本单位。 特别是对于大型的FORTRAN 95程序,需要把它分解为好几百个过程是很常见的,这时如何恰当地使用过程来构建整个程序,可以说是编写程序最主要的工作。因此如何构建过程,如何根据需求运用过程,然后在不同的过程之间建立必要的通讯,是值得我们非常仔细地加以讨论的。本章的主要任务即在于此。 13.1 ?过程的分类与性质 由于过程具有多方面的功能与属性,因此对于过程的分类可以有多种方式。下面我们首先讨论过程的各种分类方式及其相应的分类意义,然后我们讨论有关过程引用的要点与相应概念。 13.1.1? 过程的分类 过程可以有几个不同的分类方式,每种分类方式反映了过程的某个方面的特性。下面分别予以讨论。 从形式上根据调用的方式的不同,FORTRAN的过程分为两类: ●??? 函数; 函数返回一个可以供表达式使用的值。因此函数的调用总是作为一个表达式的算元,函数的值也就是相应表达式算元的取值。函数调用时直接使用函数的名称和它的变量,或者作为一个自定义运算,它返回值之后,它的功能就算完成,不对程序产生后效,当然,FORTRAN标准也不绝对禁止使用产生一定后效的函数。 ●??? 子例行程序。 子例行程序的调用必须使用CALL语句,或者是作为一个赋值。 子例行程序的功能主要在于产生一定的后效,例如改写一些变元,以及全局变量,或者执行某些输入输出。 函数与子例行程序的一般规则如下: ● 函数与子例行程序在调用方式上的差别实际上来源于一个函数总是和一个相应的函数结果值相关联,只要运行或者调用一个函数,总会得到相应的函数结果值,而子例行程序却没有相应的概念,这就使得子例行程序只能依靠使用专门的CALL语句来调用,而既然函数总是能够给出一个函数值来,就可以直接把它作为表达式的算元来调用。 ● 函数结果可以是任意的数据类型,例如派生类型,或者是取数组值都可以。 ● 如果在FUNCTION语句当中使用RESULT属性,那么就可以给结果一个与函数定义里面的函数名称不同的名称,这主要应用于直接调用自身的递归函数。 ● 在除了模块以及数据块程序单位之外的程序单位的说明部分还可以使用一种由一个语句组成的函数,称为语句函数,不过它的功能完全可以由下面的内部过程来实现,因此已经过时。 再从过程与其他程序单位的关系的角度来分类的话,过程也可以分为如下两大类: ●??? 外部过程; 顾名思义,外部过程就是处于任何的程序单位的外部,它作为一个孤立的过程,可以单独构造,单独编译,单独使用,而可以完全独立于任何的过程与程序单位。甚至还可以是用其他的语言编写的,例如常见的C语言。 当然,一个外部过程还是可以通过变元列表,模块,公用块等来共享数据与过程之类的信息。 ●??? 内部过程。 内部过程总是定义在一个程序单位内部,该程序单位就称为它的宿主。 当一个过程出现在它的宿主内部的时候,总是出现在宿主的CONTAINS语句和END语句之间。 一个内部过程对于其宿主而言,总是局域的,而且通过宿主关联继承了宿主的数据环境。 特别的,如果一个内部过程的宿主是一个模块,那么这种内部过程被单独称为模块过程。 ●??? 模块过程。 模块过程同样必须出现在其宿主模块里面的CONTAINS语句和END语句之间。 ? 一个模块同样可以通过宿主关联继承宿主模块的数据环境。? 但与一般内部过程不同的是,模块内的模块过程可以具有PUBLIC属性,即从模块外部可以直接访问具有PUBLIC属性的过程;当然模块过程也可以具有PRIVATE属性,使得模块外部不能访问该过程。 注意在早期FORTRAN版本里面出现过语句函数的概念,它是出现在程序单位的说明部分的单语句定义的函数,不能够出现在模块或数据块程序单位当中。由于它的功能可以完全由内部过程替代,因此语句函数的概念已经过时。 一般由多个过程组成过程子程序。对于内部过程来说,组成过程子程序的多个过程可以通过宿主关联而获得对宿主数据环境的共享;而对于外部过程
文档评论(0)