1、西安科技大学计算机学院,1. 接口2. 模块3. 重载4. 习题十三,第十三章 接口与模块,4,FORTRAN90程序设计课,西安科技大学计算机学院,13.1 接口/概述,接口界面功能类似EXTERNAL语句,为主调程序提供外部子程序有关接口信息,接口界面可看作是EXTERNAL语句的扩充,提供的信息比EXTERNAL丰富。 使用接口界面块可提高程序可读性。 接口界面块可用在主程序单元、模块单元、外部子程序单元中,以指明主调程序与被调用外部子程序之间的接口信息,以便保证外部子程序的正确使用。,13.1 接口,第十三章 接口与模块,概述格式说明示例,西安科技大学计算机学院,13.1 接口/格式,
2、13.1 接口,第十三章 接口与模块,INTERFACEEND INTERFACE FUNCTION ()END FUNCTION SUBROUTINE ()END SUBROUTINE,概述格式说明示例,西安科技大学计算机学院,13.1 接口/说明,13.1 接口,第十三章 接口与模块,对于一些常规函数和子例行程序,使用时不需要用INTERFACE接口声明它们的接口信息,但遇到以下情况必须在主调程序中使用接口界面块: 外部函数返回结果是一个数组,即外部函数名类型为数组。 外部函数返回结果是一个字符串,且长度不是常数,也不是假定长度(*)。 外部函数返回结果是一个指针。 外部子程序形式参数(哑
3、元)是一个数组片段。 外部子程序实在参数是关键字变元或是缺省的可选变元。 外部子程序扩展了赋值号的使用范围。 外部子程序参数个数不确定。 外部子程序改变参数传递位置。,概述格式说明示例,西安科技大学计算机学院,13.1 接口/示例,13.1 接口,第十三章 接口与模块,PROGRAM main !主程序单元,求三个数最大值IMPLICIT NONEINTERFACEFUNCTION max3(a,b,c)IMPLICIT NONEINTEGER max3,a,b,cEND FUNCTIONEND INTERFACEINTEGER x,y,zREAD*,x,y,zWRITE(*,“(1X,三个数
4、的最大值为:,I4)“) max3(x,y,z) END FUNCTION max3(a,b,c) !求三个数最大值外部函数子程序INTEGER max3,a,b,c,maxmax=aIF (Bmax) max=BIF (Cmax) max=Cmax3=max END FUNCTION,概述格式说明示例,西安科技大学计算机学院,13.2 模块/概述,面向对象程序设计重要概念:数据封装、处理封装、特性继承、操作重载、公私属性等。如储蓄所存取款业务。 模块功能用于实现面向对象程序设计的一些重要概念。 使用模块可设计安全、可靠、高效的程序。 模块中可声明常量、变量、数组、数据块、派生类型、结构体、接
5、口、模块函数、模块子例行程序。 示例:计算半径为10的圆面积和周长。 示例:参见教材p367示例程序,计算某班平均成绩。,13.2 模块,第十三章 接口与模块,概述定义属性使用,西安科技大学计算机学院,13.2 模块/概述/示例,面向对象程序设计重要概念:数据封装、处理封装、特性继承、操作重载、公私属性等。如储蓄所存取款业务。 模块功能用于实现面向对象程序设计的一些重要概念。 使用模块可设计安全、可靠、高效的程序。 模块中可声明常量、变量、数组、数据块、派生类型、结构体、接口、模块函数、模块子例行程序。 示例:计算半径为10的圆面积和周长。 示例:参见教材p367示例程序,计算某班平均成绩。,
6、13.2 模块,第十三章 接口与模块,概述定义属性使用,西安科技大学计算机学院,13.2 模块/定义,模块定义一般格式:MODULE CONTAINSEND MODULE 示例:module paiparameter(pi=3.14159)end module,13.2 模块,第十三章 接口与模块,概述定义属性使用,西安科技大学计算机学院,13.2 模块/属性,公有属性(public):允许在该模块外使用。可缺省。PUBLIC 私有属性(private):允许在该模块外使用。不可缺省。PRIVATE MODULE mod1PRIVATE !指定所有变量n1、n2、n3为私有变量PUBLIC n
7、3 !指定变量n3为公有变量,n1和n2为私有变量INTEGER n1,n2,n3END MODULE mod1 MODULE mod2PUBLIC !指定所有变量n1、n2、n3为公有变量PRIVATE n3 !指定变量n3为私有变量,n1和n2为公有变量INTEGER n1,n2,n3END MODULE mod2,13.2 模块,第十三章 接口与模块,概述定义属性使用,西安科技大学计算机学院,13.2 模块/使用,13.2 模块,第十三章 接口与模块,概述定义属性使用,西安科技大学计算机学院,13.3 重载/概述,重载概述子程序操作符赋值号,13.3 重载,第十三章 接口与模块,西安科技
8、大学计算机学院,13.3 重载/子程序,13.3 重载,子程序重载:一个子程序名实现多个子程序功能。 示例:用一个put子程序名实现不同类型数据输出。参见教材p373示例程序MODULE outputINTERFACE putMODULE PROCEDURE put_integerMODULE PROCEDURE put_realEND INTERFACECONTAINSFUNCTION put_integer(i)INTEGER,INTENT(IN) : IPRINT “(1X,i=,I4)”,iEND FUNCTIONEND MODULE output,第十三章 接口与模块,重载概述子程序操作符赋值号,西安科技大学计算机学院,13.3 重载/操作符,13.3 重载,操作符重载:可对算术运算符、关系运算符、逻辑运算符进行重载,扩充其功能。 示例:表示时间的结构体向加。参见教材p375示例程序,第十三章 接口与模块,重载概述子程序操作符赋值号,西安科技大学计算机学院,13.3 重载/赋值号,13.3 重载,赋值号重载:可对赋值号进行重载,扩充其功能。 示例:字符串给整型变量赋值。参见教材p379示例程序,第十三章 接口与模块,重载概述子程序操作符赋值号,