- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
FORTRAN95第07章-模块
第7章 FORTRAN模块 7.1 模块概述 在FORTRAN中有四种不同的程序单元:主程序、外部过程、数据块子程 序和模块。 模块是在FORTRAN 90中新增加的一种独立编写的程序单元。 模块中可 包含其它程序单元(主程序、函数子程序、子例行子程序)访问的数据、过程 和派生类型的说明和定义。如变量、数组的说明,派生类型的定义,函数子程 序、子例程子程序的定义等。 模块的主要作用是供其它程序单元引用和支持面向对象的程序设计。 一个程序单元如果引用模块,实际上就是把该模块内的全部语句复制到本 程序单元中,并且所有与模块中的名字相同的变量,彼此共享存贮单元。如 果模块程序单元中包含有过程的定义,那么,这些过程也可供其它程序单元 使用。所以使用模块的第一个作用就是共享。 还可以把某个算法的数据及其实现、或者对于某种派生类型的定义和操作 封装在一个模块中。 例如, 高精度数值积分、快速傅立叶变换等算法各自封装在一个模块中; 对 于高考生、职工等派生类型的定义和操作各自封装在一个模块中。这样,通 过模块,Fortran可以支持面向对象的程序设计方法。所以使用模块的第二个 作用就是进行面向对象的程序设计。 7.2 模块的基本组成与使用 7.2.1 模块的基本组成形式 MODULE 模块名 [ 说明部分 ] [ CONTAINS 模块过程部分 ] END [ MODULE [模块名] ] 其中: 说明部分可以出现类型说明、COMMON语句、 DATA语句、DIMENSION语句、POINTER语句等,但是不能出现语句函数、FORMAT语句、 ENTRY语句。 模块过程部分中可以包含若干个函数子程序、子例程子程序。因为这些过程是书写在模块内部,所以称它们为模块过程。 CONTAINS语句把模块的说明部分与模块过程部分区分开。 例如: ! 定义双精度数学常数 Module MathConstants implicit none ! INTEGER,PARAMETER::DP=SELECTED_REAL_KIND(15,307) INTEGER,PARAMETER::DP=KIND(1.d0) ! 前一注解中所含语句的另一形式 real(DP),parameter::DegPerRad=57.295779513082320876798155_DP real(DP),parameter::RadPerDeg=0.017453292519943295769237_DP real(DP),parameter::eValue=2.71828182845904523560287_DP real(DP),parameter::Euler=0.5772156649015328606_DP real(DP),parameter::Gamma=0.577215664901532860606512_DP real(DP),parameter::Golden_Ratio=0.618033988749894848_DP real(DP),parameter::piValue=3.141592653589793238462643_DP end Module MathConstants 再如: module myutils !说明部分 type point real::x,y end type point !模块过程部分 contains subroutine displaypoint( p ) type(point)::p write(*, ((,f7.2,,,f7.2,)) )p end subroutine displaypoint function distanceofpoints(p1,p2) result(d) type(point)::p1,p2 real::d d=sqrt( (p1%x-p2%x)**2 + (p1%y-p2%y)**2 ) end function distanceofpoints end module myutils 7.2.2 模块的共享使用 一般形式: USE 模块名 注意:USE语句必须作为一个程序单元内的第一个语句出现 例7.1 模块共享使用示例。 module myutils !说明部分 type point real::x,y end type point !模块过程部分 contains s
文档评论(0)