ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:102.45KB ,
资源ID:7207919      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7207919.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(FREE PASCAL入门文件输入与输出.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

FREE PASCAL入门文件输入与输出.docx

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

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

3、domize; 设置随机种子 s:=0; 统计变量清零 for i:=1 to n do begin a:=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个步骤,即:定义文件变量、关联、写准备、

4、写数据、关闭文件变量。 定义:在变量说明部分定义文件变量,变量名自己取,类型定义为text型。 关联:将一外部磁盘文件名赋于文本文件变量,使该文本文件与一相应外部磁盘文件相关联。命令格式为: assign(f,name)其中f为定义的文本文件变量,name为实际磁盘上文件的文件名如:assign(file1, fileout.dat ) 或:assign(f1,e:aq2006a1.out )磁盘文件如包含路径,如e:aq2006a1.out ,则表示将文件存放到e:aq2006文件夹中,文件名为a1.out,如果不加路径,则存放在pascal工作目录中,如果工作目录没有更改,Free Pas

5、cal默认的工作目录一般为“C:”。经过关联后,在程序中,如果对文本文件变量file1或f1的操作,也就是对外部实际磁盘文件fileout.dat或e:aq2006a1.out的操作。 写准备:如果要向文件中写入数据,则在写入数据之前应先以写入方式打开。具体的写打开方式有两种:命令格式:rewrite(f)功能:创建并打开新文件准备写,若已有同名文件则删除再创建命令格式:append(f)功能:打开已存在的文件并追加 写数据:写入数据时,就使用输出语句write和writeln语句,写入的效果就如同将屏幕上的数据原样写入文件中。只是在使用这两条语句时,必须先使用文件变量指明写入对象。如:Wri

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

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

8、自动生成随机数随机数是计算机程序中方便获得大量模拟数据的一个重要手段。在pascal中,可以利用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,编写程序求此数列的

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

10、变量。 用rewrite或者用append命令以新建或追加方式打开文件,准备存放数据。 用assigh命令设定要操作的磁盘文件。正确的步骤是:_第2节 对文件中的数据进行排序【问题描述】在上一课由程序生成的文件data.out中,读入500个随机数,将它们排序后存放到datasort.out中。【问题分析】本例中先要打开data.out文件,将其中的数据读入到一个数组中,然后进行排序,最后将排序的结果输出到文件datasort.out 中。只要认真仔细的按照文件数据的读取和写入的步骤来编程,程序的实现应该是不成问题的。【程序实现】Program p4_2(input,output); cons

11、t n=500; n为控制随机数个数的变量 var i,j,p,t:integer; f1,f2:text; 定义f1、f2为文本文件变量 a:array1.n of integer; 定义数组a begin assign(f1,data.out); 关联文件变量f1到外部文件data.out reset(f1); 复位文件指针,以读方式打开文件 for i:=1 to n do read(f1,ai); 读入数据存放到数组a中 close(f1); for i:=1 to n-1 do 选择法排序 begin p:=i; for j:=i+1 to n do if ajap then p:=

12、j; t:=ai;ai:=ap;ap:=t; end; assign(f2,datasort.out); 关联文件变量f2到输出文件datasort.out rewrite(f2); 以新建写文件的方式打开文件f2 for i:=1 to n do begin write(f2,ai:5); 将数组中的数依次写到文件里 if i mod 10 =0 then writeln(f2); 每写10个数换一行 end; close(f2); 关闭文件 end.程序运行后,用记事本程序打开datasort.out文件,可以看到排列好的数据如图4.2所示。图4.2 排序后的数据文件内容【相关知识】1pa

13、scal程序中读文件的5个步骤在Pascal程序中读入也要经历5个步骤,即:定义文件变量、关联磁盘文件、读准备、读数据、关闭文件变量。定义文件变量、关联磁盘文件、关闭文件变量等几步和写文件操作类似,这里就不再赘述了。读准备是在读数据之前,先以读方式,复位文件指针,命令格式是reset(文件变量)。读数据时,就使用读语句read和readln语句。和写文件数据一样,读数据时也要指定从那个文件变量中读入数据。如:read(f,s) 或 readln(file1,a(5),a(6)即从文件f中读入数据,赋值给变量s;从文件file1中读入两个数据,赋值给数组变量a(5)、a(6)。以读文件方式时打开

14、文件时,实际上有一个文件指针指向第1个数据,读完一个数据后,指针自动指向下一个数据,当程序中再有读数据操作时,将读入指针所指的数据。碰到readln语句时,读完readln语句所需数据后,文件指针自动换行,指向下一行的第1个数据。2与文本文件相关的函数:与文本文件相关的函数有两个,即eof(f)和eoln(f),它们的含义是:(1)eof(f) 布尔函数,用于判断文件结束否。其中f是文件变量,函数的返回结果为true时,表示到达文件尾,反之则未到文件尾。eof是end of file的缩写。(2)eoln(f) 布尔函数,用于判断行结束否。其中f是文件变量,函数的返回结果为true时,表示到达

15、本行结尾,反之则未到行尾。eoln是end of line的缩写。【同步练习】 1现有两个已经按从小到大排好序的整数文件f1和f2,请编写程序将f1和f2合并成一个文件f12,使得合并后的文件也是按从小到大排好序的。问题分析:解决本题需要处理好以下几个方面的问题。 本文题涉及到同时对三个文件的操作,同时从f1和f2中读取数据,再向f3中写数据。只要思路清晰,文件的读写部分难度不大。 由于数据量不定,读取数据用while循环,循环的条件由eof(f)函数来控制。 合并的算法可以采用如下思路:先从f1和f2各读一个数a1、a2,比较大小,将小的(假如a2小)写入f3;接着再在f2中读一个数,跟a1

16、比,小的写入f3,依此类推,直到某个文件中的数读完,再将另外一个文件中剩下的数依次写入f3。这个算法就好像两个已经按高矮排好队的队列合并成一个新队列一样。请你想象一下就会明白这个算法的思路了。2编写一程序,计算英文文章文本文件中,字母e出现了多少次。3编写一程序,统计一个文本文件f中共有多少行和多少字符。4编写程序从磁盘上读取一个由100个实数组成的实型数据文件(indata.dat),以此文件中所有大于平均值的实数建立一个名为“above.dat”的文件,其余的建立一个名为“rest.dat”的文件。 第3节 利用文件测试程序【问题描述】某学习小组有10人,参加某次测验,考核6门功课, 统计

17、每人的总分及各门的平均分,将原始数据及结果数据放入文本文件中。【问题分析】本文题的程序设计部分所涉及的知识都是前面学习过的文件知识,这里主要是讨论如何编写制作测试数据来检验程序的正确性。利用Windows的“记事本”程序建立原始数据文件textin.dat存贮在磁盘中,其内容如下:10 6 1 78 89 67 90 98 67 2 90 93 86 84 86 933 93 85 78 89 78 984 67 89 76 67 98 745 83 75 92 78 89 746 76 57 89 84 73 717 81 93 74 76 78 868 68 83 91 83 78 899

18、 63 71 83 94 78 9510 78 99 90 80 86 70程序读入原始数据文件,求每人的总分及各门的平均分;同时建立结果数据文件,文件名为textout.dat。【程序实现】program p4_3(input,output); var f:text; i,j,n,m,s:integer; data:array 1.11,0.7 of integer; p:array 1.6 of integer;begin assign(f,textin.dat); 从文本文件中读取数据 reset(f); read(f,n);readln(f,m); for i:=1 to n do f

19、or j:=0 to m do read(f,datai,j); close(f); fillchar(p,sizeof(p),0); 将数组p中元素全部赋值为0 for i:=1 to n do begin s:=0; for j:=1 to m do 求每人总分,各科总分 begin s:=s+datai,j; pj:=pj+datai,j; end; datai,m+1:=s; end; for i:=1 to n do 显示输出数据 begin for j:=0 to m+1 do write(datai,j:4); writeln; end; write( ); for j:=1 t

20、o m do 求各科平均分 begin pj:=pj div n; write(pj:4); end; writeln; assign(f,textout.dat); 将数据写入文件 rewrite(f); for i:=1 to n do begin for j:=0 to m+1 do write(f,datai,j:4); writeln(f); end; write(f, ); for j:=1 to m do write(f,pj:4); writeln(f); close(f);end.【相关知识】1手工测试的问题实际上,我们在未使用文件来编写程序时,通过read语句输入数据时,可

21、以在运行过程中换用不同的数据来测试程序,但是有些程序往往无法手工进行测试,这是由于有时数据量较大时,手工输入测试费时费力,而且容易出错,像本例中要测试一组数据要输入60个数据,非常麻烦;还有的时候,由于数据量太大,根本无法手工完成测试数据,比如,本章第1课中测试一组数据要500个数据,手工测试几乎不可能。因此,必须使用文件来测试程序2测试文件的制作程序所需测试数据文件的制作一般采用两种方法,一是利用“记事本”程序手工编写的方法,另一种是利用程序来自动生成。本章第2课问题中测试一组数据要500个随机数,这种情况往往需要另外编写一段程序来自动生成。这里我们重点讨论第1种方法。“记事本”程序是Win

22、dows自带的文本文件编辑程序,利用它可以快速的编写我们想要的数据文件。具体的操作步骤是: 按键盘上空格键两边的“Windows”键,切换回桌面。 进入需要建立测试数据的文件夹,如“2005pas”,按如错误!未找到引用源。所示操作,使Windows显示文件的扩展名。 图4.3 显示文件的扩展名 在“2005pas”文件夹中,按如图4.4所示操作,建立文本文件,并改名为“textin.dat”。图4.4 建立文本文件 新建的文件默认文件名为“新建 文本文档.txt”,右击该文件,选择“重命名”菜单,按如所示操作,将文件改名为程序所需的测试文件名,如“textin.dat”。在出现“可能会导致文

23、件不可用”提示时,确认更改。图4.5 修改文件扩展名 按住键盘上的Shift(上档)键不放,右击该文件,选择“打开方式”菜单命令,在弹出的“打开方式”对话框中按如图4.6A所示操作,将该文件关联到“记事本”程序。A 调整打开方式 B 输入数据图4.6 制作测试文本文件 双击该文件,在打开的记事本界面中输入测试数据,最后选择“文件”“保存”菜单命令保存。 单击桌面底端任务栏上的freepascal程序,修改好程序中调用测试文件的路径和文件名,运行程序,测试程序的正确性。【同步练习】 1有两个文本文件name.in和age.in,两个文件的行数相同,其中第1个文件中每行是人名,第2个文件中每行是年龄。编写一程序生成一个新的文件info.out,它的每一行由name.in人名和age.in年龄的对应行数据组成。 利用记事本事先制作好name.in和age.in这两个测试文件

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2