八文件八文件♦物理设备与逻辑设备物理设备与逻辑设备♦文件的概念文件的概念♦外部文件分类外部文件分类♦文件基本操作文件基本操作((OPEN,WRITE/READ...OPEN,WRITE/READ...))♦文件记录的存取文件记录的存取•程序离不开数据,有效组织数据输入是设计和编写程序的基本要求。•从键盘输入数据和向屏幕输出数据,适用于数据量比较小的情况,不能与其它软件或程序交换数据信息。•从文件输入、向文件输出数据,适用于数据量比较大的情况,便于同其它软件或程序交换数据信息。•物理设备:计算机外部硬件设备,如:磁盘、磁带、键盘、显示器等。文件中数据被存储在某个外部设备上。•逻辑设备:在程序中使用的设备描述符号。•物理设备与逻辑设备之关系:一个物理设备可定义多个逻辑设备,一个逻辑设备可与多个不同物理设备连接。•外部文件:在物理设备上建立的文件。设备描述符为一个整数,称为设备号,通过OPEN语句指定。*、0、5、6为标准设备号。•内部文件:在内存上建立的文件。设备描述符为字符型变量名、字符型数组名、字符数组元素名、子串名。♦物理设备与逻辑设备内部文件名,逻辑设备名CHARACTER*40str1,str2str1='125,250,375'READ(str1,*)i,j,kWRITE(str2,100)i,j,k,i+j+k……内部文件名,逻辑设备名str1='125,250,375'str2='i=125j=250k=375i+j+k=750'物理设备:内存储器······PARAMETER(max=100)REAL::score(max),N,sum=0.0,aveOPEN(1,FILE='exam2.in')OPEN(2,FILE='exam2.out')READ(1,*)NREAD(1,*)(score(I),I=1,N)WRITE(2,*)'学生成绩有:'WRITE(2,100)(score(I),I=1,N)WRITE(2,200)avePRINT*,’程序运行正常结束。’END外部文件名,逻辑设备号外部文件名,逻辑设备号物理设备:磁盘外部输入文件:'exam2.in'578.5,55.0,85.5,90.0,68.5外部输出文件:'exam2.out'学生成绩有:78.5,55.0,85.5,90.0,68.5平均分数:75.5·········♦文件的概念•文件:存放在某种存储设备上的一组数据集合,由文件名唯一标识。在FORTRAN的I/O系统中,数据以文件的形式进行存储和交换,操作系统以文件为单位对数据进行管理。•文件由若干记录组成。没有记录的文件为空文件。•文件操作(读、写)以记录为单位。从文件中一次输入一个记录,向文件中一次输出一个记录。•通过READ和WRITE语句从文件中输出、输入数据。•文件分内部文件和外部文件两种文件。内部文件:存放在内存储器上的文件。内部文件特点:保存小批量数据,不能长期保存。内部文件作用:一般用于少量二进制数据与字符型数据相互转换,以及字符串和合并或截取。如:PROGRAMexamCHARACTER*40str1,str2str1='125,250,375'READ(str1,*)i,j,kWRITE(str2,100)i,j,k,i+j+k100FORMAT('i=',I3,'j=',I3,'k=',I3,'i+j+k=',I3)PRINT*,i,j,kPRINT*,str2END外部文件:连接在计算机主机上的一类设备(如:键盘、显示器、打印机等)或存放在外部存储器上的文件。外部文件特点:能长期保存大批量数据。在程序中使用外部文件,必须先用OPEN语句为外部文件指定设备号,建立外部文件与设备号之间的联系。如:OPEN(1,FILE='exam2.in')OPEN(2,FILE='exam2.out')READ(1,*)(score(I),I=1,N)WRITE(2,*)‘学生成绩有:’在Fortran中有4个预定义的外部文件(设备):设备号设备号连接的设备连接的设备星号星号(*)(*)总是键盘和显示器总是键盘和显示器00缺省状态下是键盘和显示器缺省状态下是键盘和显示器55缺省状态下是键盘缺省状态下是键盘66缺省状态下是显示器缺省状态下是显示器1、顺序存取,从文件的开头一步步向下存取2、直接存取,可以任意跳到文件的任何一个位置来读写两种文件的结构(存储格式):1、文本文件字符符号保存,直观;读取时需要转换,占存储空间大2、二进制文件以二进制代码保存;读取速度快,节省空间Fortran支持两种文件的存取方式(访问方式):外部文件分类:♦文件的基本操作OPEN语句——文件的打开例:open(10,file=‘d:\data\2006\feb\uwnd.dat’,&form=‘unformatted’,status=‘unknown’,&access=‘direct’,recl=144*73*4,&err=100,iostat=iovar,position=‘asis’)WRITE/READ语句——文件的输入输出例:test01-2CLOS...