好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

fortran-90-文件(文件的操作语句).ppt

46页
  • 卖家[上传人]:油条
  • 文档编号:101604926
  • 上传时间:2019-09-29
  • 文档格式:PPT
  • 文档大小:1.05MB
  • / 46 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 土木学院,1/46,第 十 三 章 文 件 (FORTRAN的文件操作),土木学院,2/46,说明:,在实际应用中,往往大量需要处理的数据是由专门人员来采集,并构成以文件名来具体代表的数据文件(比如大型有限元软件的数据采集也是这样的); 文件名通常由三部分组成:存放的设备、文件名本身、文件类别; 如何从各种设备上获取和保存不同类型的数据文件就是我们在进行科学计算时常常遇到的问题; 我们现在主要以磁盘设备为例来介绍FORTRAN对文件操作的语句(打开、关闭、定位、输入和输出),土木学院,3/46,FORTRAN的数据文件由记录组成,也就是对文件的存取是以记录为单位进行的; 记录:长度不超过规定范围的数字或文本的集合; Fortran的数据文件按存取方式可划分为: 1. 顺序存取文件(顺序文件) 其存取操作必须从头到尾顺序进行; 2. 直接存取文件(直接文件或随机文件) 在程序的执行过程中对任意一个指定的 记录进行操作(读和写)记 录,文 件,土木学院,4/46,FORTRAN中数据文件的存储形式: 1. 字符形式(ASCII) ——称之为“有格式存放” FORMATTED 2. 二进制数代码形式 ——称之为“无格式存放” UNFORMATTED,土木学院,5/46,本章主要内容:,有格式顺序存取文件; 有格式直接存取文件; 无格式文件的存取; 文件操作语句; 有关文件操作的程序举例。

      土木学院,6/46,13.1有格式顺序存取文件,我们已经知道:READ语句是完成数据输入任务的 从键盘输入一行数据(以Enter键作为确认),这就形成了一个“记录” 从键盘输入一行数据时,必须与指定的格式对应(格式编辑符与输入的数据类型以及宽度),否则就会出错(或报错)土木学院,7/46,13.1有格式顺序存取文件,Read(*,100) A,B C=A+B Write(*,200) ‘A= ‘,A, ‘B= ‘,B Write(*,200) ‘C= ‘,C 100 Format(2F6.1) 200 Format(1X,2(A,F7.2)) End,输入: __10.1__20.4,输出: A=__10.10_B=__20.40 C=__30.50,从键盘接收数据,经过处理,然后输出显示.,,土木学院,8/46,,Read(*,100) A,B C=A+B Write(*,200) 'A= ',A, 'B= ',B Write(*,200) 'C= ',C 100Format(2F6.1) 200Format(1X,2(A,F7.2)) End,土木学院,9/46,,土木学院,10/46,13.1有格式顺序存取文件,下面我们就介绍如何从文件中获得数据: (例如:从文件F1.DAT中读取数据,经过处理后,将结果保存在F2.DAT中) 1. 准备数据文件(可以在各种编辑器中完成,输入格式及宽度与程序要求的一致),数据文件名的后缀为 *.DAT(也可以是*.txt); 2. 编写数据输入和数据处理文件,最后将结果输出到F2.DAT中.,土木学院,11/46,,土木学院,12/46,character*8 Fname1 Integer U1 U1=3 Fname1='F1.DAT' Open(Unit=U1,File=Fname1,Status='OLD', $ Access='Sequential',Form='Formatted') Read(U1,100) A,B C=A+B Open(Unit=2,File='F2.DAT',Status='New', $ Access='Sequential',Form='Formatted') Write(2,200) 'A=',A, 'B=', B Write(2,200) 'C=',C Close (U1) Close(2) 100 Format(2F6.1) 200 Format(2(A,F7.2)) End,,_123.1_123.2 F1.DAT的内容 A=_123.10 B=_123.20 C=_246.30 F2.DAT的内容,,数据输出,数据输入和数据处理,注:该源文件与数据文件放在同一目录中,土木学院,13/46,,土木学院,14/46,,土木学院,15/46,U1=2 Open(Unit=2,File='F2.DAT',Status='New', $ Access='Sequential',Form='Formatted') do 10 I=1,30 write(*,*) “请输入学号、两门成绩“ Read(*,*) N,A,B C=A+B Write(2,202) '学号:', N,'总成绩',C 10 continue Close(2) 100 Format(I2,F5.1,F5.1) 202 Format(A,I2,A,F7.1) End,输入30个学生的学号和两门成绩,最后将总成绩与学号输出来.,土木学院,16/46,土木学院,17/46,13.1有格式顺序存取文件,打开文件(Open):是把一个设备号和一个文件名关联起来,这样在程序中将由设备号代替指定的文件; Unit=ie 代表设备号(0~99) File=ce 代表文件名; Status=se 代表文件状态:已经存在-Old; 新建-New Access=SD 代表文件的存取方式: Direct:以直接方式存取;Sequential: 以顺序方式存取; Form=fe 代表文件存放格式:Formatted-字符形式 在Open中省略Access和Form,则表示打开文件为有格式顺序存取文件.,Open(Unit=2,File='F2.DAT',Status='New', Access='Sequential',Form='Formatted'),土木学院,18/46,13.1有格式顺序存取文件,关闭文件(Close):解除设备号和一个文件名的关联. CLOSE (设备号) 一次只关闭一个设备号; 在程序中的STOP\END语句都具有Close的功能 顺序文件的输入操作: READ(设备号,格式说明,END=语句标号) 变量表 顺序文件的输出操作: Write(设备号,格式说明) 输出项表,与OPEN中指定的设备号相同,一般不写,土木学院,19/46,举例:读出一个数据文件记录,并把它显示在屏幕上,Open (Unit=2,File=‘TAB.DAT’,Status=‘NEW’ $ Access=‘Sequential’ ,Form=‘Formatted’) Do 10 X=1,10 Write(2,100) X, X*X, X*X*X 10 Continue Rewind(2) Write(*,*) ‘ X X*X X*X*X’ 20 Read(2,100, End=30) A,B,C Write(*,200) A,B,C Goto 20 30 Close(2) 100 Format(3F7.1) 200 Format(1X,3F9.2) End,将文件指针重新设置在文件开头(与设备号2连接的文件的开头),End=30表示一旦读到文件结束标志就不再进行读操作而转到标号为30的语句继续执行。

      土木学院,20/46,,土木学院,21/46,,土木学院,22/46,Integer N(30) Real A(30), B(30), C(30) Write(*,*) “请从键盘上输入学号、两门成绩“ Do 300 i=1,30 Read(*,101) N(I), A(I), B(I) 300 Continue Write(*,*) N,A,B U1=2 Open(Unit=2,File='F2.DAT',Status='New', $ Access='Sequential',Form='Formatted') Do 10 I=1,30 C(I)=A(I)+B(I) write(2,150) N(I),c(I) 10 continue close(2) 101 format(I3,F5.1,F5.1) 150 format(I2,3x,F5.1) End,使用数组:输入30个学生的学号和两门成绩,最后将总成绩与学号输出来.,土木学院,23/46,,土木学院,24/46,13.1有格式顺序存取文件 --顺序文件输入输出的基本规则,Read语句中各输入项在类型上、格式说明上必须与输出语句的输出项按位置一一对应; Open或Rewind是从文件的第一个记录开始输入,每执行一次Read语句,总是从一个新的记录开始读入; 在Read语句读文件记录时,输入项少于记录中的数据项,则剩余数据被忽略.输入项多于记录中的数据项,它将接着去读下一个记录,直到所有项都获得数据或者遇上文件结束标志为止; 在程序设计中对一个顺序文件不可能做到“重写前半部分而保留后半部分”这样的操作。

      土木学院,25/46,13.1有格式顺序存取文件 --顺序文件输入输出的基本规则,一个WRITE语句总是开始一个新的记录; 一般来说,对同一个文件在进行写操作之后要进行读操作时,必须先使用文件定位语句,重新设置指针位置 (Open语句、 Rewind语句以及Backspace语句等); 也可以使用表控输入输出语句对文件进行格式输入输出,如:WRITE(3,*) N,MNext,土木学院,26/46,13.2 有格式直接存取文件,直接存取可以任意确定需要读写记录的位置; 直接存取只适用于磁盘文件; 其基本的操作与顺序存取大致相同,主要不同的是:Open的说明、Read和Write的控制项不同 下面以例说明,土木学院,27/46,13.2有格式直接存取文件,主要语句: Open(12,File=‘Datb.Dat’,Status=‘New’, Access=‘Direct’,Form=‘Formatted’, Recl=16 ?),记录的长度,以字节为单位在直接存取文件中每个记录的长度是相等的,但真正写到文件中的实际字节的个数可以比说明的长度短下面举例: 1)建立一个直接存取文件; 2)根据用户输入记录号,输 出该记录。

      土木学院,28/46,Parameter(N=10) Open(12,File=‘Datb.Dat’,Status=‘New’, $ Access=‘Direct’,Form=‘Formatted’,Recl=16 ) Do 10 I=1,N Write(12,100,Rec=I) I,Sqrt(Real(I)) Continue Format(I3, E13.6) Close (12) Open(10,File=‘Datb.Dat’,Status=‘old’, $ Access=‘Direct’,Form=‘Formatted’,Recl=16 ) Call Fromkey(k) Do 20 While(k .GE. 0) IF (k .LE.N .AND. K .GE. 1) THEN Read(10,100,Rec=K) IS, S Write(*,200) IS,S ELSE Write(*,*) ‘Input Error!’ Endif Call Fromkey(K) Continue Close (10) 200 Format(1x,Sqrt of ‘,I2,’IS:’,F10.6) End,Subroutine Fromkey(K) Write(*,*) ‘Enter 0 to end:’ Write(*,*) ‘Enter a Number’ Read(*,*) K End,,1-10的开方值,读出该记录后再用 Wr。

      点击阅读更多内容
      相关文档
      礼仪讲授教案.docx 高考语文一轮复习讲义 第5部分 传统文化阅读·名句名篇默写.docx 高考语文一轮复习讲义 第11部分 写作 任务组五 微任务 作文书写——比天还大的事儿.docx 高考语文一轮复习讲义 第4部分 传统文化阅读 古诗词 任务组二 真题研练.docx 高考语文一轮复习讲义 第3部分 传统文化阅读 文言文(考点部分) 任务组三 任务四 仔细比对准确提取概括分析文意.docx 高考语文一轮复习讲义 第1部分 语言策略与技能 任务组二 任务五 看准对象因境设辞做到语言得体.docx 高考化学 1.传统文化与STSE 答案解析.docx 高考语文一轮复习讲义现代文阅读 专题16 Ⅱ 真题研练.docx 高考化学 专项拔高抢分练 9.反应热与反应历程.docx 高考化学 专项拔高抢分练 1.传统文化与STSE.docx 高考物理 板块三  气体实验定律和热力学定律的综合应用.docx 高考化学 二题型3 无机化工生产流程题.docx 高考语文一轮复习讲义 第4部分 写作 专题17 Ⅲ 突破二 绘声绘色巧用细节描写生动丰满.docx 高考数学 中档大题练1.docx 高考语文一轮复习讲义 第5部分 教材文言文点线面教材文言文复习综合试卷.docx 高考语文一轮复习讲义 第4部分 传统文化阅读 古诗词 任务组三 微任务一 聚焦诗意准确选择.docx 高考数学 创新融合4 数列与导数.docx 高考语文一轮复习讲义 第5部分 教材文言文点线面 教材文言文点线面 必修5课文1 归去来兮辞 并序.docx 高考语文一轮复习讲义 第11部分 写作 任务组五 任务二 “三管”齐下美“言”有术文采抢眼养颜.docx 高考数学 满分案例三 立体几何.docx
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.