- 1、本文档共63页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Visual Fortran90 第9章 节 派生类型和指针 FORTRAN90程序设计 .ppt
FORTRAN90程序设计;9.1 数据结构与派生类型; 在现实世界中遇到的问题种类繁多,涉及的数据千变万化,不但涉及5种内部数据类型和数组类型这样的预定义类型,而且会涉及由多个不同数据成分组成的复杂数据。如:
学生学籍管理中要处理每个学生学籍数据,学生学籍数据由学号、姓名、性别、年龄、家庭住址、平均成绩、是否党员等数据成分组成。
商品销售管理中要处理每种商品购销数据,商品购销数据由编号、品名、类别、单价、库存、购入日期、售出总量、利润等项组成。; FORTRAN90引入派生类型和结构体可方便实现这类问题。派生类型和结构体是现代程序设计语言普遍采用的描述复杂数据的重要手段;;TYPE STU_TYPE
CHARACTER*8::NAME
INTEGER::NO
REAL::SCORE
ENDTYPE [STU_TYPE];例:定义一个具有STU_TYPE类型的结构体变量STUDENT;(1) 派生类型名的命名规则同简单变量
(2) 存取方式描述是属性PRIVATE,只在模块说明部分时才选用。表示此派生类型不能被模块以外的其他模块或子程序单位使用。
(3) TYPE和ENDTYPE之间只能有关于结构成员的类型说明语句,不允许有可执行的动作语句
(4)派生类型成员为字符型时,其长度必须确定,不可用*
(5)为了便于记忆,派生类型名往往用_TYPE作为后缀。
(6)?派生类型又可称为导出类型
(7)?派生类型的成员可以是内部类型、较低层次的派生类型、数组或以后将要介绍的指针等;MODULE SS
TYPE ,PRIVATE COORDINATE
REAL::X,Y
ENDTYPE COORDINATE
TYPE(COORDINATE)::COOR
……
ENDMODULE
; ;
;
;表控输入/输出
read/print *,Student.name, Student.no, Student.score
或
read/ print *, student
有格式输入/输出
read/ write(*,’(A8,I3,F5.1)’) STUDENT
;(1)、用结构构造函数整体赋初值或直接赋值
结构构造函数:FORTRAN90中,每定义一个派生类型,就建立一个以该类型为名的结构构造函数。
例,以前边定义的学生类型STU_TYPE为例,系统会自动生成一个名叫STU_TYPE的结构构造函数,它有三个虚元NAME、NO和SCORE。可以利用该函数给结构变量赋值:;Type(person)::p(5)=(/person(‘asd’,180.0,75.0),person(……),……/);TYPE(STU_TYPE)::X,Y
READ*,X
Y=X;;;练习:下列程序执行时,需要输入类型为STUDENT的数据个数是?? )个。READ语句中写有?处的内容应该是什么?;练习:输出第一行是?第二行是? ;;例9.2: 假设有6个学生,每个学生的信息包括姓名学号和一门课程的考试成绩.请将学生的信息按学习成绩从大至小排序.;PROGRAM SCORE_SORT
IMPLICIT NONE
INTEGER,PARAMETER::N=6,LENGTH=10
TYPE SCORE_TYPE
CHARACTER(LENGTH)::NAME
INTEGER::NUMBER ; REAL::SCORE
END TYPE
TYPE(SCORE_TYPE),DIMENSION(N)::STU_SCORE
TYPE(SCORE_TYPE)::T_STU
INTEGER::I,J
DO I=1,N
READ (A,I4,F5.1),STU_SCORE(I)
ENDDO;DO I=1,N-1
DO J=I+1,N IF(STU_SCORE(I)%SCORESTU_SCORE(J)%SCORE)THEN
T_STU= STU_SCORE(I)
STU_SCORE(I)= STU_SCORE(J)
STU_SCORE(J)= T_STU
ENDIF
ENDDO
ENDDO
DO I=1,N
WRITE(*,(A,I5,F6.1))STU_SCORE(I)
ENDDO
END;练习1:关于FORTRAN90的派生类型定义,以下说法错误的是 。
A、派生类型定义由TYPE语句、成员声明序列和ENDTYPE三部分组成
B、派生类型的名字必须给出,而且惟一
C、派生类型定义后,系统即为它分配存储空间
D、派生类型的成员还可以包含派生类型;练习2:设有结构体定义:
TYPE student
您可能关注的文档
最近下载
- 基于SpringBoot的在线学习系统的设计与开发.doc
- 毕业设计(论文)-小型水稻联合收割机设计.doc
- 房地产 -22G101-1混凝土结构施工图平面整体表示方法制图规(现浇混凝土框架、剪力墙、梁、板).docx VIP
- 四方股份合作协议书(标准版).docx VIP
- ASME B16.9-2012_工厂制造的锻钢对焊管件(中文版).pdf
- 2025年汽车维修工技师(二级)职业技能鉴定考试题库资料(含答案).pdf
- 变压器油色谱、局放在线监测系统设计实施方案.docx VIP
- 饲料厂安全操作规程.pdf VIP
- 交通标识汇总(全).doc VIP
- 2025届湖北省建设投资集团有限公司校园招聘124人笔试参考题库附带答案详解.pdf
文档评论(0)