- 14
- 0
- 约2.01千字
- 约 19页
- 2022-05-07 发布于北京
- 举报
第九章 派生类数据类型与结构体 派生数据类型能较容易地描述复杂异质性数据格式问题。派生数据类型定义的一般格式为:TYPE[,ACCESS[::] ]派生类名字分量表END TYPE 派生类名说明1.TYPE为关键字,是每定义一个派生类型的起点。2.ACCESS是可供选择的访问方式说明,分PRIVATE(私有的)和PUBLIC(公共的)两种。 例如:REAL,PRIVATE::X1,X2该语句定义了两个实型的私有派生类变量X1、X2。 声明为PRIVATE时,外部模块不能访问它;为PUBLIC属性的实体,在其程序单位中用了USE语句就可以使用;默认方式为公共访问方式。“::”为作用域符。 3.派生类名为一个标识符,用户可以用任意标示符命名。4.分量表可以是各种类型的数据,并且可以是多项,每项前面必须加上类型说明。5.END TYPE 派生类名为派生类定义结束的标志。 下面看一个具体实例:TYPE STUDENTCHARACTER (15)NAMEINTEGER NUMLOGICAL SEXCHARACTER (30)ADDRESSEND TYPE 派生类访问方式已经省略,按照默认访问方式:公共访问方式对其进行访问。 9.2 结构体的定义与引用 结构体可将不同类型、相互联系的数据项组合而成一个统一的整体,以便于引用。9.2.1结构体类型定义 结构体类型定义的一般形式为: TYPE(派生类型名)::结构体名。例如第一节,定义学生派生类后,就可以用它来定义结构体变量TYPE (STUDENT)::S1,S2 结构体嵌套定义例如TYPE STUDENTRECORDCHARACTER (15)NAMEINTEGER NUMLOGICAL SEXCHARACTER (30)ADDRESSEND TYPETYPE STUDENTTOGETHERTYPE (STUDENTRECORD)::STUDENTREAL MATHREAL ENGLISHREAL CHINESEEND TYPE 9.2.2结构体成员的引用 结构体成员的引用有两种方式: 1.结构体名 % 成员表 2.结构体名 . 成员表例如对上面定义个S1,S2两个结构体变量,成员的引用如下:S1. NAME、S1.NUM、S1. SEX、S1.ADDRESSS2%NAME、S2%NUM、S2% SEX、S2%ADDRESS。 注意: (1)两种引用方式可以交叉使用,但为了清晰起见,在一个程序中最好使用一种。 (2)在含嵌套定义的结构体中,成员引用应当嵌套使用“%”或“.”,例如,对上面结构体S中成员NUM的引用方式为S%STUDENT% NUM。9.3结构体的初始化9.3.1 利用赋值语句给结构体成员赋值例9.1 某单位职工工资表包含的记录有:姓名、性别、家庭住址、工资等项,现计算三个职工工资的平均值。程序如下: TYPE CLERK CHARACTER (15)NAME LOGICAL SEX CHARACTER (30)ADDRESS INTEGER SAL END TYPE TYPE (CLERK)::S1,S2,S3 S1.SAL=800 S2%SAL=900 S3.SAL=700 AVER=(S1%SAL+S2.SAL+S3.SAL)/3 PRINT*,三个职工的平均工资为:,AVER END9.3.2 定义的同时赋值 其格式为:TYPE (派生数据类名)::结构体变量名=派生数据类名(成员初值表) 其中,=后面的派生类名即为TYPE后面的派生类名;成员之间的值用“,”隔开。例如结构体如下: TYPE TEACHER CHARACTER (12)NAME LOGICAL SEX CHARACTER(15)POSIT CHARACTER (30)ADDRESS INTEGER SALEND TYPE TYPE(TEACHER)::S1=TEACHER (ZHANG,.TRUE.,PROFESSOR,”CHANGSHANG”,2000)这种赋值方式应当注意: (1)赋值时,所给的值类型和个数应与结构体变量定义中各成员的类型与个数保持一致。(2)可以将一个结构体变量的值直接赋给另外一个结构体变量, INTEGER S TYPE STUDENTRECORD CHARACTER (15)NAME INTEGER NUM LOGICAL SEX CHARACTER (30)ADDRESS END TYPE TYPE (STUDENTRECORD)::S1,S2 S1=STUDENTRECORD(ABCD,20,.TRUE.,CHANGSHA) S2=S1 S=S2%NUM+S1%NUM PRINT*,S END9.5 综合实
原创力文档

文档评论(0)