freepascal入门文件输入及输出

上传人:第*** 文档编号:61906846 上传时间:2018-12-14 格式:DOC 页数:15 大小:173.51KB
返回 下载 相关 举报
freepascal入门文件输入及输出_第1页
第1页 / 共15页
freepascal入门文件输入及输出_第2页
第2页 / 共15页
freepascal入门文件输入及输出_第3页
第3页 / 共15页
freepascal入门文件输入及输出_第4页
第4页 / 共15页
freepascal入门文件输入及输出_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《freepascal入门文件输入及输出》由会员分享,可在线阅读,更多相关《freepascal入门文件输入及输出(15页珍藏版)》请在金锄头文库上搜索。

1、使用文件输入输出数据任何程序都需要产生一些输出,有时也需要接受若干个输入。这些输入、输出实际上是可以用文件的方式来实现的,在Pascal中可以用标准文件“input”和“output”来实现,它们分别对应标准的输入设备和标准输出设备(可省略不写),这也就是一些程序的首部如下书写的原因:program ex(input,output);或:program ex;对于大量数据的输入和输出都是用文件来实现的,因此,这就要求我们必须熟练掌握在程序中实现对文件的操作。第1节 产生随机数文件【问题描述】编写一个程序,产生500个1000以内的随机正整数,存放在data.out文件中,并同时统计从其中大于等

2、于500的数据个数。【问题分析】本题有两个问题需要解决,一要掌握随机数的生成原理,让计算机自动生成随机数;二是将计算机产生的随机数据存入文件中。【程序实现】Program p4_1(input,output);const n=500; n为控制随机数个数的变量vari,a,s:integer; i为循环变量、a为暂时存放随机数的变量、s为=500的数的个数f:text;定义f为文本文件变量beginassign(f,data.out);关联文件变量f到一个外部文件data.outrewrite(f);以新建写文件的方式打开文件randomize;设置随机种子s:=0;统计变量清零for i:=

3、1 to n dobegina:=random(1001);产生随机数write(f,a:5);将随机数写到文件里if i mod 10 =0 then writeln(f); 每写10个数换一行if a=500 then s:=s+1; 统计=500的数的个数end;close(f);关闭文件write(=500 :, s); 在屏幕上打印=500的数的个数s end.【相关知识】1pascal程序中写文件的5个步骤在Pascal程序重创建文件并写入数据要经历5个步骤,即:定义文件变量、关联、写准备、写数据、关闭文件变量。 定义:在变量说明部分定义文件变量,变量名自己取,类型定义为text型

4、。 关联:将一外部磁盘文件名赋于文本文件变量,使该文本文件与一相应外部磁盘文件相关联。命令格式为:assign(f,name)其中f为定义的文本文件变量,name为实际磁盘上文件的文件名如:assign(file1, fileout.dat ) 或:assign(f1,e:aq2006a1.out )磁盘文件如包含路径,如e:aq2006a1.out ,则表示将文件存放到e:aq2006文件夹中,文件名为a1.out,如果不加路径,则存放在pascal工作目录中,如果工作目录没有更改,Free Pascal默认的工作目录一般为“C:”。经过关联后,在程序中,如果对文本文件变量file1或f1的

5、操作,也就是对外部实际磁盘文件fileout.dat或e:aq2006a1.out的操作。 写准备:如果要向文件中写入数据,则在写入数据之前应先以写入方式打开。具体的写打开方式有两种:命令格式:rewrite(f)功能:创建并打开新文件准备写,若已有同名文件则删除再创建命令格式:append(f)功能:打开已存在的文件并追加 写数据:写入数据时,就使用输出语句write和writeln语句,写入的效果就如同将屏幕上的数据原样写入文件中。只是在使用这两条语句时,必须先使用文件变量指明写入对象。如:Write(f,s) 或 writeln(file1,a(5),a(6)前者含义为向文件f中写入变量

6、s的值,后者的含义为向文件file1写入数组变量a(5)、a(6)的值。注意,这些数据实际上是写入这些文件变量所关联的磁盘文件中。 关闭:文件写完后,必须关闭,关闭的格式为:Close(f),即关闭文件变量f。2查看文本文件由于文本文件是以ASCII码的方式存储,故查看文本文件的内容是极为方便,在DOS状态可使用 DOS中TYPE等命令进行查看,在Pascal中可以象取程序一样取出文件进行查看。而在windows操作系统中,最方便的方法是按下键盘上空格键两边的windows键,切换到桌面,再找到刚才程序生成的数据文件,用记事本查看该数据文件的内容,如图1.1图4.1所示的就是用记事本打开示例数

7、据文件的效果。图4.1 用记事本打开数据3文本文件的特点 行结构文本文件由若干行组成,行与行之间用行结束标记隔开,文件末尾有一个文件结束标记。由于各行长度可能不同,所以无法计算出给定行在文本文件中的确定位置,从而只能顺序地处理文本文件,而且不能对一文本文件同时进行输入和输出。 自动转换功能文本文件的每一个元素均为字符型,在将一个变量写入文本文件时,也会自动转移为字符型。与此相反,在将文件元素读入到一个变量(整型,实型或字符串型)中时,Free Pascal会自动将其转换为与变量相同的数据类型。4计算机自动生成随机数随机数是计算机程序中方便获得大量模拟数据的一个重要手段。在pascal中,可以利

8、用random 函数自动生成随机数,其格式为:random(range)不指定range时,结果是0,1之间的随机实数(0,1表示0并且1)。如果指定了range,range必须是整型表达式,结果为0,range之间的随机正整数,如果range为0则,返回0。随机数产生程序由randomize命令初始化,因此在使用random函数之前,应先使用randomize命令进行随机种子的初始化。【同步练习】1已知斐波那契(faibonacci)数列的前几个数分别是0、1、1、2、3、5、8,编写程序求此数列的前100项,并将前100项输出到一个文件中。问题分析:此问题的解决利用以前章节所学的知识完全可

9、以解决,只要掌握斐波那契数列从第3项开始,任意一项的值等于前两项值的和,即:F(n)= F(n-1)+ F(n-2)需要注意的是循环的次数要控制准确,因为第1项是从0开始的,而不想通常的题目是从1开始的。本题中练习的重点是如何将这些数输入到文件中,只要掌握的血文件的基本要领,本题是不难完成的。程序设计:略2照使用pascal语言程序写文件的步骤有如下5步,请将它们正确排序: 用write或writeln向文件中写入数据。 用close命令关闭文件。 在程序说明的var区用text类型标志定义一个文件变量。 用rewrite或者用append命令以新建或追加方式打开文件,准备存放数据。 用ass

10、igh命令设定要操作的磁盘文件。正确的步骤是:_第2节 对文件中的数据进行排序【问题描述】在上一课由程序生成的文件data.out中,读入500个随机数,将它们排序后存放到datasort.out中。【问题分析】本例中先要打开data.out文件,将其中的数据读入到一个数组中,然后进行排序,最后将排序的结果输出到文件datasort.out 中。只要认真仔细的按照文件数据的读取和写入的步骤来编程,程序的实现应该是不成问题的。【程序实现】Program p4_2(input,output);const n=500; n为控制随机数个数的变量vari,j,p,t:integer;f1,f2:tex

11、t;定义f1、f2为文本文件变量a:array1.n of integer;定义数组abeginassign(f1,data.out);关联文件变量f1到外部文件data.outreset(f1);复位文件指针,以读方式打开文件for i:=1 to n do read(f1,ai);读入数据存放到数组a中close(f1);for i:=1 to n-1 do选择法排序beginp:=i;for j:=i+1 to n doif ajap then p:=j;t:=ai;ai:=ap;ap:=t;end;assign(f2,datasort.out);关联文件变量f2到输出文件datasor

12、t.outrewrite(f2);以新建写文件的方式打开文件f2for i:=1 to n dobeginwrite(f2,ai:5);将数组中的数依次写到文件里if i mod 10 =0 then writeln(f2); 每写10个数换一行end;close(f2);关闭文件end.程序运行后,用记事本程序打开datasort.out文件,可以看到排列好的数据如图4.2所示。图4.2 排序后的数据文件内容【相关知识】1pascal程序中读文件的5个步骤在Pascal程序中读入也要经历5个步骤,即:定义文件变量、关联磁盘文件、读准备、读数据、关闭文件变量。定义文件变量、关联磁盘文件、关闭文

13、件变量等几步和写文件操作类似,这里就不再赘述了。读准备是在读数据之前,先以读方式,复位文件指针,命令格式是reset(文件变量)。读数据时,就使用读语句read和readln语句。和写文件数据一样,读数据时也要指定从那个文件变量中读入数据。如:read(f,s) 或 readln(file1,a(5),a(6)即从文件f中读入数据,赋值给变量s;从文件file1中读入两个数据,赋值给数组变量a(5)、a(6)。以读文件方式时打开文件时,实际上有一个文件指针指向第1个数据,读完一个数据后,指针自动指向下一个数据,当程序中再有读数据操作时,将读入指针所指的数据。碰到readln语句时,读完read

14、ln语句所需数据后,文件指针自动换行,指向下一行的第1个数据。2与文本文件相关的函数:与文本文件相关的函数有两个,即eof(f)和eoln(f),它们的含义是:(1)eof(f) 布尔函数,用于判断文件结束否。其中f是文件变量,函数的返回结果为true时,表示到达文件尾,反之则未到文件尾。eof是end of file的缩写。(2)eoln(f) 布尔函数,用于判断行结束否。其中f是文件变量,函数的返回结果为true时,表示到达本行结尾,反之则未到行尾。eoln是end of line的缩写。【同步练习】 1现有两个已经按从小到大排好序的整数文件f1和f2,请编写程序将f1和f2合并成一个文件f12,使得合并后的文件也是按从小到大排好序的。问题分析:解决本题需要处理好以下几个方面的问题。 本文题涉及到同时对三个文件的操作,同时从f1和f2中读取数据,再向f3中写数据。只要思路清晰,文件的读写部分难度不大。 由于数据量不定,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号