欢迎来到天天文库
浏览记录
ID:45848427
大小:132.50 KB
页数:64页
时间:2019-11-18
《FORTRAN90程序设计教程 第9章 派生类数据类型与结构体》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第九章派生类数据类型与结构体本章主要介绍派生类数据类型和结构体,这部分是FORTRAN90以上版本新增加的内容,它使FORTRAN语言功能得到进一步的加强,使用更加方便。9.1派生类数据类型FORTRAN90以前的FORTRAN版本,没有用户自定义的数据类型。这样给用户带来的不便,例如,我们要比较完整的表达多个学生的信息,假设学生包含的信息有:学生所在院系、学生班级、姓名、学号、年龄、性别、家庭住址、各科考试成绩等等,同时要对这些数据进行相应的处理,如查找、插入、删除、计算、排序等。以前FORTRAN所用的方法是:将学生的每一项放
2、在一个数组中,如:所有学生的姓名可以放在一个字符数组中,学号可以存放在一个整型数组中,成绩可以存放在一个实型数组中等等,这样,要解决这个问题,需要对多个不同数组进行处理,编写程序必须注意各个学生所对应的数据项在数组中不能错位,否则将会张冠李戴。FORTRAN90在这方面有较大的改进,主要是允许字定义派生类数据类型(简称派生类型),有了它,就能较容易地描述上述问题。派生数据类型定义的一般格式为:TYPE[,ACCESS[::]]派生类名字分量表ENDTYPE派生类名说明1.TYPE为关键字,是每定义一个派生类型的起点。2.ACCES
3、S是可供选择的访问方式说明,分PRIVATE(私有的)和PUBLIC(公共的)两种,例如:REAL,PRIVATE::X1,X2该语句定义了两个实型的私有派生类变量X1、X2。注意声明为PRIVATE时,外部模块不能访问它;声明为PUBLIC属性的实体,在其程序单位中用了USE语句就可以使用;默认方式为公共访问方式。“::”为作用域符。3.派生类名为一个标识符,用户可以用任意标示符命名。4.分量表可以是各种类型的数据,并且可以是多项,每项前面必须加上类型说明。5.ENDTYPE派生类名为派生类定义结束的标志。下面看一个具体实例:T
4、YPESTUDENTCHARACTER(15)NAMEINTEGERNUMLOGICALSEXCHARACTER(30)ADDRESSENDTYPE其中STUDENT为派生类名。该派生类包含一个最多可存放15个字符的字符数组NAME、一个整型的变量NUM、一个逻辑类型变量SEX、一个最多可存放30个字符的字符数组ADDRESS,由于该派生类访问方式已经省略,因此,按照默认访问方式:公共访问方式对其进行访问。9.2结构体的定义与引用有时我们需要将不同类型的数据结合成一个统一的整体,以便于引用。本节介绍派生类型中一种较简单的数据类型:
5、结构体,它是由若干个相互之间有联系的数据项构成的。结构体类型定义的一般形式为:TYPE(派生类型名)::结构体名。例如第一节,定义学生派生类后,就可以用它来定义结构体变量TYPE(STUDENT)::S1,S2该语句定义了两个结构体变量S1和S2,它们都包含STUDENT的所有成员:NAME、NUM、SEX、ADDRESS等5项。9.2.1结构体类型定义结构体既可以在程序中定义,也可以和其他内部数据类型一样放在另一个派生类型的定义中定义,即所谓嵌套定义。例如TYPESTUDENTRECORDCHARACTER(15)NAMEINT
6、EGERNUMLOGICALSEXCHARACTER(30)ADDRESSENDTYPETYPESTUDENTTOGETHERTYPE(STUDENTRECORD)::STUDENTREALMATHREALENGLISHREALCHINESEENDTYPE其中,先定义STUDENTRECORD结构体,再把TYPE(STUDENTRECORD)::STUDENT语句放在结构体定义语句TYPESTUDENTTOGETHER之内,这样构成嵌套定义,即用一个结构体作为另外一个结构体的成员。这时,如果定义如下结构体:TYPE(STUDENT
7、TOGETHER)::S这样,结构体变量S包含:三个实型变量MATH、ENGLISH、CHINESE和一个结构体变量STUDENT,而STUDENT又包含NAME、NUM、SEX、ADDRESS四个成员。9.2.2结构体成员的引用结构体成员的引用有两种方式:1.结构体名%成员表2.结构体名.成员表例如对上面定义个S1,S2两个结构体变量,成员的引用如下:S1.NAME、S1.NUM、S1.SEX、S1.ADDRESSS2%NAME、S2%NUM、S2%SEX、S2%ADDRESS。注意:(1)两种引用方式可以交叉使用,但为了清晰起
8、见,在一个程序中最好使用一种。(2)在含嵌套定义的结构体中,成员引用应当嵌套使用“%”或“.”,例如,对上面结构体S中成员NUM的引用方式为S%STUDENT%NUM。9.3结构体的初始化9.3.1利用赋值语句给结构体成员赋值下面看一个完整的例子:
此文档下载收益归作者所有