Fortran第12章

上传人:痛*** 文档编号:244374951 上传时间:2024-10-04 格式:PPT 页数:33 大小:266KB
返回 下载 相关 举报
Fortran第12章_第1页
第1页 / 共33页
Fortran第12章_第2页
第2页 / 共33页
Fortran第12章_第3页
第3页 / 共33页
点击查看更多>>
资源描述
,返回目录,上一页,下一页,结束,Visual Fortran 90,程序设计,12.1,文件的基本概念,12.4,文件的应用举例,12.2,文件操作语句,12.3,文件的操作,一、引入文件的目的:,便于输入、输出,数据的保存与维护,二、程序结构的变化:文件要先打开,再输入、输出,主程序:,单位定义,说明,打开用于输入、输出的文件,从输入文件中,读数据,调用子程序处理,将结果,写到输出文件中,关闭用于输入、输出的文件,END,子程序:不变,12.1.1,记录,1,、记录:一行称为一个记录(记录是字符或数值的序列),以回车作为标记。,记录是输入、输出的基本单位。,2,、记录的三种格式:,(,1,)有格式记录,输入输出数据要经过编辑转换,以,ASCII,码或其他信息交换码的方式进行传输。数据格式由用户指定,(,如,I3,,,F4.1,格式等,),或由编译系统规定,(,如*格式),(,2,)无格式记录,由二进制代码直接传输,输入输出无需做格式转换。,仅适合与磁盘操作,(,3,)文件结束记录,是文件的结束标记,文件结束记录不作为数据的内容处理,12.1,文件基本概念,12.1.2,文件,文件是相关记录的有序集合。文件都有,文件名,文件的分类,1,、按存储位置:外部文件、内部文件,外部文件:存放在外部存储介质上的文件,或外部设备本身(显示器、打印机等)。,内部文件:存放在内存中的一个字符变量、字符数组或字符数组元素。如果内部文件是一个字符变量或字符数组元素,则它只有一个记录。,2,、按存取方式:顺序存取文件,由记录指针控制,顺序存取文件存取操作必须,从头到尾顺序进行,直接存取文件,由记录号控制,可以在程序的执行中对,任意一个指定的记录,进行读写。,3,、按格式:随记录分为有格式文件、无格式文件,重点掌握有格式顺序存储的外部文件的应用,4,、打开文件时的状态,分类,:老文件、新文件,老文件:打开文件时,文件已存在,新文件:打开文件时,文件不存在,注意:文件应先连接(即打开)或预连接,(显示器、打印机等),,再读写,12.1.3,逻辑设备,1.,特殊设备号:由系统预先定义,用设备号,5,定义键盘,设备号,6,定义显示器,*即可定义键盘又可定义显示器,注意:这些设备是预连接的,,不需要打开就可以直接使用,2.,内部文件的设备号:不需要打开就可以直接使用,字符型变量或字符型数组,用来指定一个内部文件。,3.,外部文件的设备号,数值型的常量或变量,用来指定一个外部文件。,一个设备号只能与一个文件相连接,而一个文件一次也只能与一个设备号连接。,12.2,文件的操作语句,对文件的,基本操作,包括,打开、关闭及读、写文件,。,通常有,四种类型,的文件:有格式顺序存取文件、无格式顺序存取文件、有格式直接存取文件、无格式直接存取文件。,12.2.1,、文件的打开,一般形式如下:,OPEN,(,连接信息表),连接信息表所包含的说明符如下:,1,、,UNIT=,ut,ut,是设备号,为整型常数或表达式,值必须是无符号整数,0-99,,当设备号为第一个说明符时,,UNIT=,可省略,2,、,FILE=,fe,fe,字符型常量或表达式,代表文件名,例如:,OPEN,(,3,,,FILE=DATA.DAT,),3,、,STATUS=,ss,。,ss,用户给出的字符串,表示文件的状态。,有五种值可选:,NEW,,,OLD,,,REPLACE,,,SCRATCH,,,UNKNOWN,默认,为,UNKNOWN,(状态未知,由系统自动处理),其中,SCRATCH,表示打开临时文件,关闭文件时自动删除。,4,、,ACCESS=as,。,as,是字符串,表示存取方式,其值可为,Sequential,(,顺序的)或,DIRECT,(,直接的)。,缺省,为顺序,SEQUENTIAL,5,、,FORM=fm,。,fm,是字符串,其值为,Formated,或,Unformated,,,表明文件是有格式的还是无格式的。,对,顺序文件的缺省值,为有格式,Formated,对,直接文件的缺省值,为无格式,Unformated,。,6,、,RECL=,rl,。,rl,是正整数的整型表达式,用来指定文件中记录的长度。,直接文件中每个记录必须相等,必须选择,RECL,项,顺序文件不需要使用该项。,7,、,ACTION=an,。,为一字符串,可取,READ,、,WRITE,、,Readwrite,(,默认值,)。为,可选项,8,、,BLANK=,bk,。,为一字符串,可取为,NULL,(,默认值)或,ZERO,。,控制文件中的,空格是忽略不计还是当零处理。,为可选项,9,、,IOSTAT=IS,。,IS,整型变量。,OPEN,语句,执行时,获得数值。执行成功则为零,,否则为一正整数。为可选项,10,、,ERR=label,。,若打开文件出错,则转向标号语句。为可选项,说明:,1,、,OPEN,语句中各说明符的,次序可以任意,2,、文件与设备号在某一程序单元中连接成功,就在该程序的所有单元中都保持这种连接关系。直到程序结束,除非使用,CLOSE,或新的,OPEN,语句。,例:有格式顺序文件,OPEN,语句的最简形式,OPEN,(,2,,,FILE=A.DAT,),例:有格式直接文件,OPEN,语句的最简形式,OPEN,(,2,,,FILE=A.DAT,,,ACCESS=DIRECT,,,FORM=FORMATTED,,,RECL=12,),RECL,:,规定记录的统一长度,例:无格式顺序文件,OPEN,语句的最简形式,OPEN,(,2,,,FILE=A.DAT,FORM=UNFORMATTED,),例:无格式直接文件,OPEN,语句的最简形式,OPEN(2,FILE=A.DAT,ACCESS=DIRECT,RECL=16),12.2.2,、文件关闭,CLOSE,语句,解除文件与设备号的连接关系,并关闭该文件。,写法:,CLOSE,(,关闭信息表),关闭信息表主要有下列说明符:,UNIT=,ut,当设备号为第一个说明符时,,UNIT=,可省略,STATUS=SS,为可选项,IOSTAT=IS,指定文件关闭后是否保留,。为可选项,IS,可为,KEEP(,默认值)或,DELETE,。,最简写法:,CLOSE,(,2,),12.2.4,、文件的输入输出语句,1,、从文件中读数据的语句:,写法:,READ,(,控制信息表)输入表,2,、将数据写到输出文件中,写法:,WRITE(,控制信息表,),输出表,控制信息表:,设备说明符:,UNIT=UT,设备号,格式说明符:,FMT=FT(,无格式不写),记录说明符:,REC=,记录号(仅用于直接文件),状态说明符:,IOSATA=IS,(可选),例:,READ,的选项,IOSTST=IT IT,为整型变量执,执行此语句时获得数值,,0,此操作发生错误,=0,执行成功,无此项,读写发生错误将报错,并停止运行,ADVANCE=YES,(,默认值):遇下一个输入语句换行读取,=NO,:,遇下一个输入语句不换行读取,WRITE,的选项,IOSTST=IT IT,为整型变量执,执行此语句时获得数值,,0,此操作发生错误,=0,执行成功,无此项,读写发生错误将报错,并停止运行,ADVANCE=YES,(,默认值):遇下一个输出语句换行输出,=NO,:,遇下一个输出语句不换行输出,12.3,文件的操作,12.3.1,有格式顺序文件的操作:打开时设置指针,1,、,OPEN,语句的,最简形式,例:,OPEN,(,2,,,FILE=A.DAT,),功能:把文件与设备号,2,连接起来且文件指针指向第一个记录。(文件指针指向的记录称为,当前记录,)。,2,、,READ,语句,最简写法,:,READ,(设备号,格式说明)输入表,例:,READ,(,2,,*),A,,,B,,,C,READ,(,2,,,FMT=,(,3F4.1,),A,,,B,,,C,注意点:,(,1,),对顺序存储文件总是读,当前记录,(,2,)读完后指针下移一个记录,(,3,)如无输入表,仅指针下移一个记录,3,、,WRITE,语句最简写法:,WRITE,(,设备号,格式说明)输出表,例:,WRITE,(,2,,*),A,,,B,,,C,WRITE,(,2,,,(,3F4.1,),A,,,B,,,C,注意点,(,1,),对顺序存储文件总是写在文件指针指向的记录处。,(,2,)写完后指针下移一个记录,(,3,)总是改写,(,4,)总是写最后一个记录,例,1,、从键盘输入,N,个学生的姓名和考试成绩,把它写入到一个顺序文件中。,Program,creat_file,Implicit none,Character(len,=10):name,Real:score,Integer:n,I,Open,(1,file=,student.dat,),Read*,n,Do I=1,n,Read(*,(a10,f6.1)name,score,Write(1,(a10,f6.1)name,score,Enddo,Close,(1),endprogram,例,2,、把例,1,建立的文件中的数据显示到终端显示器上。,Program read_file,Implicit none,Character(len,=10):name,Real:score,Integer:is,Open,(1,file=,student.dat,),Read(1,(a10,f6.1),iostat=is)name,score,Do while(is=0),Write(*,(a10,f6.1)name,score,Read(1,(a10,f6.1),iostat=is)name,score,Enddo,Close,(1),endprogram,4,、顺序文件的存取,有关,顺序文件的文件指针,操作语句,:,OPEN:,文件指针指向第一条记录,READ:,文件指针下移一个记录,WRITE:,文件指针下移一个记录,REWIND,语句,:,文件指针指向第一条记录,BACKSPACES,语句,:,文件指针上移一个记录,REWIND,语句(反绕语句),不论当前文件的指针在何处,如果想把文件定位到文件初始点,都可以通过反绕语句实现。,反绕语句有两种形式:,REWIND,设备号,REWIND,(,定位说明符表),UNIT=,设备号,必选项,IOSTAT=,整型变量,可选项,用法同,OPEN,语句,例如:,REWIND 2,REWIND,(,2,),REWIND,(,IOSTAT=I,,,UNIT=12,),Backspace,语句(回退一个记录语句),Backspace,语句使指定设备号连接的文件在当前位置上,回退一个记录,。,当前文件定位到第,N,个记录之后,执行一次,backspace,语句,就定位在第(,N-1,),个记录之后。,该语句有两种形式:,BACKSPACE,设备号,BACKSPACE,(,定位说明符表),阅读程序,:,OPEN(1,FILE=ABC),DO I=1,3,WRITE(1,(2I3)I,I*I,ENDDO,BACKSPACE(1),READ(1,(2I3)K1,PRINT*,K1,REWIND(1),DO WHILE(IS=0),READ(1,(2I3),IOSTAT=IS)K2,ENDDO,PRINT*,K2,END,例,3,通过例,2,检查文件,STUDENT.DAT,中学生的数据后发现第,K1,个记录的学生姓名有错,第,K2,个句路的学生的成绩有误。编写程序修改原来的文件。,思路:,由于不能对顺序文件同时读和写,因此修改顺序文件时,必须从文件头开始依次读入每个记录,把正确的记录写到另一个临时文件中;读到有错的记录时,则把修改后的内容写到临时文件中。全部修改完后,把临时文件中的内容按次序传送回原文件。,Program update_sequential_file,Implicit none,Character(len,=10):name,n
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!