fortran90程序设计chapter13

fortran90程序设计chapter13

ID:14396072

大小:163.50 KB

页数:16页

时间:2018-07-28

fortran90程序设计chapter13_第1页
fortran90程序设计chapter13_第2页
fortran90程序设计chapter13_第3页
fortran90程序设计chapter13_第4页
fortran90程序设计chapter13_第5页
资源描述:

《fortran90程序设计chapter13》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、13.1接口界面块第十三章接口与模块13.1接口界面块在调用执行外部子程序时,一般要用EXTERNAL语句对调用的外部子程序进行声明,但这种声明只给出外部子程序名,并没有给出外部函数子程序名和参数的类型。由于主调程序单元与外部子程序独立编写,分别编译,所以仅声明子程序名有时系统难以获得外部子程序详细、准确的调用信息,从而无法正确编译,导致程序调用失败。FORTRAN90新增接口界面块功能可有效解决这些问题,同时还能提高程序的可读性。接口界面块可用在主程序单元、模块单元、外部子程序单元中,以指明主调程序与被调用外部子程序之间的接口信息,以便保证外部子程序的正确使用。例如,使用接口界面块求三个整数

2、最大值的示例程序如下:!主程序单元PROGRAMmainIMPLICITNONEINTERFACEFUNCTIONmax3(a,b,c)IMPLICITNONEINTEGERmax3,a,b,cENDFUNCTIONENDINTERFACEINTEGERx,y,zREAD*,x,y,zWRITE(*,"(1X,'三个数的最大值为:',I4)")max3(x,y,z)END!求三个整数最大值的外部函数子程序FUNCTIONmax3(a,b,c)INTEGERmax3,a,b,c,maxmax=aIF(B>max)max=BIF(C>max)max=Cmax3=maxENDFUNCTION3651

3、3.1接口界面块接口界面块如同EXTERNAL语句一样,在一般情况下可缺省。对于一些常规函数和子例行程序,使用时不需要用INTERFACE接口声明它们的接口信息,但遇到以下情况必须在主调程序中使用接口界面块:l外部函数返回结果是一个数组,即外部函数名类型为数组。l外部函数返回结果是一个字符串,且长度不是常数,也不是假定长度(*)。l外部函数返回结果是一个指针。l外部子程序形式参数(哑元)是一个数组片段。l外部子程序实在参数是关键字变元或是缺省的可选变元。l外部子程序扩展了赋值号的使用范围。l外部子程序参数个数不确定。l外部子程序改变参数传递位置。接口界面块的一般格式:<接口界面块>→INTER

4、FACE<接口界面体>ENDINTERFACE<接口界面体>→{<函数接口界面定义>∣<子例行程序接口界面定义>}<函数接口界面定义>→[<类型>]FUNCTION<函数名>(<形式参数表>)<函数名形式参数类型说明>ENDFUNCTION<子例行程序接口界面定义>→SUBROUTINE<子例行程序名>(<形式参数表>)<形式参数类型说明>ENDSUBROUTINE说明:①接口界面块可出现在除BLOCKDATA数据块单元以外的其它三个程序单元(主程序单元、外部子程序单元、模块单元)中,放置在程序单元说明部分前面。②接口接体可以并列包含若干个函数或子例行程序接口界面定义。③每个函数或子例行程序接

5、口定义只给出子程序的FUNCTION语句、SUBROUTINE语句、函数名与形式参数类型说明部分、ENDFUNCTION语句、ENDSUBROUTINE语句,不允许出现可执行语句。④接口界面体中的函数名、子例行程序名、形式参数个数和形式参数类型必须与被调用的函数名、子例行程序名、形参个数和形参类型相同,但形参名称可以不同。⑤接口界面体中不允许出现ENTRY、DATA、FORMAT、语句函数语句。例如,定义一个接口界面块,声明了2个子例行程序接口界面和2个函数接口界面。INTERFACE!定义矩阵相乘子例行程序P1接口界面SUBROUTINEP1(A,B,C)INTEGER,DIMENSION(

6、50,50)::A,B,CENDSUBROUTINE!定义矩阵转置子例行程序P2接口界面36513.1接口界面块SUBROUTINEP2(A1,A2)INTEGER,DIMENSION(40,50)::A1,A2ENDSUBROUTINE!定义矩阵相乘函数F1接口界面FUNCTIONF1(X,Y)INTEGER,DIMENSION(50,50)::F1,X,YENDFUNCTION!定义计算向量X和Y内积的函数F2接口界面FUNCTIONF2(X,Y)REALF2,X(10),Y(10)ENDFUNCTIONENDINTERFACE接口界面块定义后,在调用其定义的外部子程序时可使用关键词指定实

7、在参数,允许改变实在参数传递位置,如:CALLP1(matrix1,matrix2,matrix3)!按形参定义次序依次传递CALLP1(A=matrix1,C=matrix3,B=matrix2)!按指定形参关键字传递CALLP1(A=matrix1,C=matrix3)!B数组内容区默认值13.2模块外部子程序为人们提供了一种并行设计、共享使用子程序的有效机制,对提高程序设计质量和效率有很大帮

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

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

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