fortran第10章.ppt
《fortran第10章.ppt》由会员分享,可在线阅读,更多相关《fortran第10章.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Fortran 90Visual Fortran 90 程序设计第第10章章 模块与接口模块与接口Fortran 90Visual Fortran 90 程序设计10.1模块的定义模块的定义6.5 模块的应用举例模块的应用举例10.2 USE语句语句10.3 接口接口10.4 超载和定义操作符超载和定义操作符Fortran 9010.1 模块的定义模块的定义1功能:提供大量功能:提供大量共享共享符号符号常量、变量、派生类常量、变量、派生类型定义和过程;型定义和过程;即即公用公用的信息可放入模块单位的信息可放入模块单位各单位共享信息的途径:各单位共享信息的途径:虚实结合虚实结合模块单位模块单位F
2、ortran 902模块单位写法:一般形式模块单位写法:一般形式 MODULE 模块名模块名 !模块单位定义语句!模块单位定义语句 类型说明部分类型说明部分 CONTAINS 内部过程子程序内部过程子程序1 内部过程子程序内部过程子程序n END MODULE 模块名模块名注意:注意:1.模块是独立的程序单位模块是独立的程序单位(个数:个数:0n个个)即模块名为全局名:不与已有即模块名为全局名:不与已有 的全局名同名的全局名同名 2.模块名常以模块名常以_MODULE作为后缀作为后缀提供共享符号提供共享符号常量、常量、变量、派生类型定义变量、派生类型定义提供共享提供共享过程过程Fortran
3、90例:例:MODULE MY_ MODULE REAL,PARAMETER:PI=3.1415926 CONTAINS SUBROUTINE SWAP(X,Y)REAL:TEMP,X,Y TEMP=X;X=Y;Y=TEMP END SUBROUTINE SWAPEND MODULE MY_ MODULEFortran 90模块和子程序之间的区别:模块和子程序之间的区别:(1)模块)模块应先定义应先定义。(2)模块中)模块中无可执行语句无可执行语句(3)模块不给其它单位调用)模块不给其它单位调用,而而用用USE语句引用语句引用非执行单位非执行单位编译时完成编译时完成可执行语句只能在内部子程序内
4、可执行语句只能在内部子程序内先输入,不能放在先输入,不能放在其它单位的底部其它单位的底部Fortran 90引用格式引用格式1:引用模块中所有对象:引用模块中所有对象 use 模块名模块名1,模块名,模块名2,2:模块中对象更名共享模块中对象更名共享 use 模块名,别名模块名,别名=模块内对象名模块内对象名例:例:use exam,x=a,y=b x,y引用单位的局部名引用单位的局部名 a,b模块中的名模块中的名3:引用模块中部分对象引用模块中部分对象 use 模块名模块名,only:变量名表变量名表 例:例:use exam,only:a,b 各单位用各单位用USE语句共享模块中的信息语句
5、共享模块中的信息复制共享复制共享(按名共享存储单元)(按名共享存储单元)10.2 USE语句语句Fortran 90、USE语句位置:语句位置:单位定义语句之后,单位定义语句之后,IMPLICIT NONE语句之前语句之前程序单位的第二句程序单位的第二句只能在模块内使用只能在模块内使用5、可以对模块内说明的变量、派生类型及其成员、可以对模块内说明的变量、派生类型及其成员的使用范围进行限制。的使用范围进行限制。加加PRIVATE(专用)属性,模块以外的程序单专用)属性,模块以外的程序单元不能使用。元不能使用。否则为否则为PUBLIC(公用)属性。公用)属性。Fortran 90通过虚实结合传递数
6、据:通过虚实结合传递数据:FUNCTION AVER3(A,B,C)RESULT(AVER_VALUE)IMPLCIT NONEREAL:A,B,CREAL:AVER_VALUEAVER_VALUE=(A+B+C)/3.0END FUNCTIONFUNCTION MAX3(A,B,C)RESULT(MAX_VALUE)IMPLCIT NONEREAL:A,B,CREAL:AVER_VALUEMAX_VALUE=AIF(BMAX_VALUE)MAX_VALUE=BIF(CMAX_VALUE)MAX_VALUE=CEND FUNCTION例例6-8读入读入3个数,调用函数个数,调用函数AVER3求
7、平均值,调求平均值,调用函数用函数MAX3求最大值求最大值Fortran 90!主程序PROGRAM AVER_MAX_1IMPLICT NONEREAL:A,B,CREAL AVER,MAX3READ*,A,B,CPRINT*,AVER3(A,B,C),MAX3(A,B,C)END PROGRAM数据传递:由虚实按数据传递:由虚实按顺序共享存储单元顺序共享存储单元各单位共有的信息各单位共有的信息Fortran 90MODULE EXAM_MODULEIMPLICIT NONEREAL:A,B,CEND MODULE EXAM_MIDULEFUNCTION AVER3()RESULT(AVER
8、_VALUE)USE EXAM_MODULEUSE EXAM_MODULEREAL:AVER_VALUEAVER_VALUE=(A+B+C)/3.0END FUNCTIONFUNCTION MAX3()RESULT(MAX_VALUE)USE EXAM_MODULEUSE EXAM_MODULEREAL:AVER_VALUEMAX_VALUE=AIF(BMAX_VALUE)MAX_VALUE=BIF(CMAX_VALUE)MAX_VALUE=CEND FUNCTION利用模块实现数据的共享:利用模块实现数据的共享:共享信息共享信息先定义先定义USE语句引语句引用用USE语句引语句引用用Fort
9、ran 90!主程序PROGRAM AVER_MAX_1USE EXAM_MODULEUSE EXAM_MODULEIMPLICIT NONEIMPLICIT NONEREAL AVER,MAX3READ*,A,B,CPRINT*,AVER3(),MAX3()END PROGRAMUSE语句语句引用、引用、位置:第位置:第二句二句数据传递:由模块数据传递:由模块按名共享存储单元按名共享存储单元Fortran 90模块的内部过程也可供引用模块的各程序单元使用。模块的内部过程也可供引用模块的各程序单元使用。MODULE EXAM_MODULEIMPLICIT NONE;REAL:A,B,CCONT
10、AINSFUNCTION AVER3()RESULT(AVER_VALUE)REAL:AVER_VALUEAVER_VALUE=(A+B+C)/3.0END FUNCTIONFUNCTION MAX3()RESULT(MAX_VALUE)REAL:AVER_VALUEMAX_VALUE=AIF(BMAX_VALUE)MAX_VALUE=BIF(CMAX_VALUE)MAX_VALUE=CEND FUNCTIONEND MODULE EXAM_MIDULEPROGRAM AVER_MAX3USE EXAM_MODULEREAD*,A,B,CPEINT*,AVER(),MAX3()ENDPROGR
11、AM!定义模块!定义模块!定义主程序定义主程序共享的内部过程共享的内部过程共享的变量共享的变量引用模块引用模块内部过程优先,内部过程优先,调用模块过程调用模块过程Fortran 90程序阅读:先读模块单位及各单位的程序阅读:先读模块单位及各单位的USE,画共享表画共享表(按名结合按名结合),再读主程序再读主程序.MODULE A1COMPLEX:X,YENDMODULESUBROUTINE COMP(A,B)USE A1COMPLEX A,BA=X+YB=X-YEND SUBROUTINEPROGRAM MAINUSE A1X=(3.0,4.0)Y=(4.0,3.0)CALL COMP(X,Y
12、)CALL COMP(X,X)CALL COMP(Y,X)PRINT*,X,YEND(-3.000000,-4.000000)(10.00000,11.00000)编译时完成编译时完成两种数据传两种数据传递方式可混递方式可混合使用合使用Fortran 90使使主调程序编译时能通过接口块了解到主调程序编译时能通过接口块了解到被调被调外部外部过程的名字、虚元名字及它们过程的名字、虚元名字及它们的类型等信息的类型等信息简单接口块的作用简单接口块的作用10.3 接口接口(Interface Block)各独立程序单位分开各独立程序单位分开编译编译内部子程序无接口内部子程序无接口Fortran 90最简
13、接口块结构形式最简接口块结构形式INTERFACEINTERFACE 被调程序的单位定义语句被调程序的单位定义语句 说明语句说明语句 单位结束语句单位结束语句END INTERFACEEND INTERFACE写在主调程序的类型说明语句之前,写在主调程序的类型说明语句之前,IMPLICIT语句语句之后之后接口块的位置接口块的位置Fortran 901 1、功能简单的程序,不必写接口块。功能简单的程序,不必写接口块。2、如有接口,主调程序不必再说明外部、如有接口,主调程序不必再说明外部函数名的类型。函数名的类型。有关接口块的说明有关接口块的说明Fortran 90例如:利用外部函数完成例如:利用
14、外部函数完成X3的计算。的计算。FUNCTION Func(X)Result(F)REAL:X,FF=X*3END FUNCTIONPROGRAM TESTIMPLICIT NONEREAL:X,FuncPRINT*,ENTER x:READ*,xWRITE(*,*)Func(x)END PROGRAM TEST可不写接口块,可不写接口块,但主调程序需说明但主调程序需说明函数名类型函数名类型Fortran 90例如:利用外部函数完成例如:利用外部函数完成X3的计算的计算FUNCTION Func(X)Result(F)REAL:X,FF=X*3END FUNCTIONPROGRAM TESTI
15、MPLICIT NONEINTERFACEFUNCTION Func(X)Result(F)REAL:X,FEND FUNCTION END INTERFACEREAL:XPRINT*,ENTER x:READ*,xWRITE(*,*)Func(x)END PROGRAM TEST有接口块无需说明函有接口块无需说明函数名类型,否则错误数名类型,否则错误1 1、接口块的位置、接口块的位置2 2、接口块的组成、接口块的组成Fortran 90补充:下例情形必须使用接口块补充:下例情形必须使用接口块1、实元用关键字变元实元用关键字变元2 2、实元对应缺省的可选变元。、实元对应缺省的可选变元。3 3、
16、用一个类属名调用过程。、用一个类属名调用过程。4 4、外部过程扩展了赋值号的使用范围(超载赋值)。、外部过程扩展了赋值号的使用范围(超载赋值)。5 5、一个外部函数使系统中的内在操作符扩展了原有的、一个外部函数使系统中的内在操作符扩展了原有的功能(超载运算)。功能(超载运算)。6 6、一个外部函数使系统中的内在函数扩展了原有的功、一个外部函数使系统中的内在函数扩展了原有的功能(超载函数)。能(超载函数)。7 7、调用的外部过程是一个函数,且函数结果是一个数、调用的外部过程是一个函数,且函数结果是一个数组;或被调用过程中的虚元是一个假定形状数组、一组;或被调用过程中的虚元是一个假定形状数组、一个
17、指针变量、一个目标变量。个指针变量、一个目标变量。Fortran 90补充:实元用关键字变元INTERFACE FUNCTION F(X,Y,Z)RESULT(F_RESULT)INTEGER:F_RESULT,X,Y,Z ENDENDINTERFACE READ*,M,NK=F(X=M,Z=L,Y=N)PRINT*,K,LEND FUNCTION F(X,Y,Z)RESULT(F_RESULT)INTEGER:F_RESULT,X,Y,ZF_RESULT=X+Y;Z=X-YEND 调用形式为关键字变元调用形式为关键字变元 虚元名虚元名=实元表达式实元表达式优点:优点:不需考虑虚元的次序不需考
18、虑虚元的次序 Fortran 90INTERFACE FUNCTION F(X,Y,Z)RESULT(F_RESULT)INTEGER:F_RESULT,X,Y,Z ENDENDINTERFACE READ*,M,NK=F(M,N,Z=L)K=F(M,Z=L,Y=N)PRINT*,K,LEND FUNCTION F(X,Y,Z)RESULT(F_RESULT)INTEGER:F_RESULT,X,Y,ZF_RESULT=X+Y;Z=X-YEND 混合使用:关键字变元混合使用:关键字变元前面的所有实元都必须前面的所有实元都必须与相应的虚元一一对应与相应的虚元一一对应一旦使用一个关键字变一旦使用一
19、个关键字变元,其后面的变元也必元,其后面的变元也必须使用关键字变元须使用关键字变元Fortran 90补充:通过接口块更改虚元名称PROGRAN MAININTERFACESUBROUTINT S(XX,YY,ZZ)INTEGER:XX,YY,ZZENDENDINTERFACEREAD*,M,NPRINT*,S(XX=M,YY=N,ZZ=L)ENDSUBROUTINR S(X,Y,Z)INTEGER:X,Y,ZZ=X+YEND用用接口块改变虚元的名接口块改变虚元的名称。必须保持新、旧虚称。必须保持新、旧虚元名的对应位置不变。元名的对应位置不变。Fortran 90补充:可选择变元可选择变元:可
20、选择变元:虚元有虚元有OPTIONAL属性,便是可选属性,便是可选变元变元,虚元没有虚元没有OPTIONAL属性,是必选变元。属性,是必选变元。可选可选变元作用:调用时可选变元变元作用:调用时可选变元可以有可以有对应的实元,对应的实元,也也可以无可以无对应的实元。对应的实元。PRESENT(虚元名):用来检查虚元是否结合到虚元名):用来检查虚元是否结合到对应的实元,对应的实元,结合到结合到则返回则返回为为“真真”。Fortran 90PROGRAM MAININTERFACESUBROUTINE S(Y,X)INTEGER:XINTEGER,OPTIONAL:YENDENDINTERFACEI
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fortran 10
限制150内