fortran95的使用方法5

fortran95的使用方法5

ID:9972855

大小:203.50 KB

页数:14页

时间:2018-05-17

fortran95的使用方法5_第1页
fortran95的使用方法5_第2页
fortran95的使用方法5_第3页
fortran95的使用方法5_第4页
fortran95的使用方法5_第5页
资源描述:

《fortran95的使用方法5》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第14章 固有过程固然,我们已经能够做到运用FORTRAN95来描述任何的计算任务,因为FORTRAN95所提供的数据类型,固有运算,派生类型,自定义运算,以及构造函数与子例行程序的方法,都足以使得我们应付任何的计算问题。不过FORTRAN95标准还提供了大量的科学计算的常规计算与函数,都可以作为固有过程直接使用,而不需要我们自己来编写源码。这就好像对于一个汽车装配师,除了给他提供螺栓,轴承之类的标准零件,还给他提供更高层次的标准配件,例如各种型号的发动机,电机之类。因此熟练掌握固有过程,将给我们带来如虎添翼的感觉。FORTRAN95把固有过程作为标

2、准来提出,就意味着任何的FORTRAN95的编译器实现版本,都必须能够提供它们:115个固有过程,其中包括109个固有函数和6个固有子例行程序。当然不排除很多的编译器还提供额外的固有过程。正是由于固有过程是属于FORTRAN95的标准内容,因此和固有运算,例如+,一样,总是“随叫随到”,无论在哪个程序单位内部,只要使用某个固有过程的名称,就等于调用了该固有过程。不过,如果它的名称被用户定义的函数或子例行程序所“侵占”,那么在下面的情况下,被调用的将是用户自定义的函数或子例行程序而不是固有过程:●   该自定义函数或子例行程序的界面是显式的;●   该

3、自定义函数或子例行程序出现在EXTERNAL语句当中;●   该自定义函数属于语句函数。当然上述的名称被侵权的有效范围只是该自定义函数或子例行程序的作用域。相应的,固有过程也就只能在下面的情形下夺回被侵占的名称:●   不存在使用该名称的语句函数;●   它的名称出现在INTRINSIC语句当中;●   相应的用户定义的过程的界面是隐式的。例如在一个模块或一个内部过程里面,由于它的界面是显式的,那么固有过程的名称就能够被侵占,除非固有过程的名称出现在一个有效的INTRINSIC语句当中。下面我们主要讨论固有过程的按照功能的分类,以及每个种类的固有过程

4、所能够完成的计算任务。FORTRAN95的固有过程主要分为如下5类:●   查询与数字操作函数;●   转换,置空以及传递函数;●   计算函数;●   数组函数;●   固有子例行程序。在分别讨论上面5种固有过程之前,我们首先讨论13章所没有仔细讨论的固有过程的一些特点。14.1 固有过程的分类与性质固有过程可以从形式和功能两个方面来进行分类。从形式的角度来看,固有过程分为如下两类:●   类过程;●   种过程。所谓类过程是一个集合名称,类过程与种过程是一个集合与其元素的关系。一个类过程由两个或多个种过程组成。在固有过程中间之所以会出现这种关系,

5、是因为过程所具体针对的变元的作为数据对象的类型与种别,是具有不同分类的,这样就导致同一个函数,当它的变元取不同类型或种别的数据值时,就需要对固有过程按照情形进行分类,甚至采用不同的过程名称,来应对相应的变元情况。例如同样是求一个变量的绝对值,当该变量分别取实型和复型数值时,就对应了完全不同的计算过程,因此有必要给予不同的函数名称,尽管在数学的意义上,都是成为取绝对值。在所有的115个固有过程当中,除了如下4个固有函数外,其他都是类过程:●   LGE;●   LGT;●   LLE;●   LLT。对于每个类过程属下的种过程,显然都必定具有相应的类型

6、,种别,甚至秩的属性。许多的种过程具有专门的过程名称,在下面的表14-1当中列出了它们的全部名称以及相应的变元属性。这些种过程的名称也可以直接用作过程引用,但并不提倡。这些名称的主要用途是作为实元来传递,这时就必须使用种过程名称。注意,在表中注明了少数种过程不能作为实元。如果从功能的角度来对固有过程分类,那么除了上面的比较具体的5类之外,还可以从固有过程对数组的作用方式的角度,把固有过程分为两大类:逐元过程和变换过程。●   逐元过程从数学的观点来看,这种过程的计算对象并不是数组,但是可以运用一种自然的方式使得这种过程能够作用于数组对象,并且得到相同

7、形状的数组结果。也就是使得该过程分别作用于数组的每个元素,把所有的过程结果再集合起来作为结果数组。固有过程当中的大部分都属于逐元过程,包括:●   转换函数;●   计算函数(除了REPEAT,TRIM,DOT_PRODUCT,MATMUL之外);●   子例行程序MVBITS。其他的所有固有过程就都不是逐元过程了。●   变换过程 固有过程里面逐元过程之外的所有过程都称为变换过程,因为从它们的定义的实质上看,就是作用于一个数组数据对象,得到一个标量或者数组结果,也就是一个变换的过程,而不是单独地作用于每个元素。因此除了函数NULL之外,所有的变换过

8、程或者是具有一个取数组值的哑元,或者是具有一个取数组值的实元,它们对数组的作用都是某种整体变换作用。例如对于

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。