FREE PASCAL入门文件输入与输出.docx
- 文档编号:11908063
- 上传时间:2023-04-08
- 格式:DOCX
- 页数:12
- 大小:102.45KB
FREE PASCAL入门文件输入与输出.docx
《FREE PASCAL入门文件输入与输出.docx》由会员分享,可在线阅读,更多相关《FREE PASCAL入门文件输入与输出.docx(12页珍藏版)》请在冰豆网上搜索。
FREEPASCAL入门文件输入与输出
使用文件输入输出数据
任何程序都需要产生一些输出,有时也需要接受若干个输入。
这些输入、输出实际上是可以用文件的方式来实现的,在Pascal中可以用标准文件“input”和“output”来实现,它们分别对应标准的输入设备和标准输出设备(可省略不写),这也就是一些程序的首部如下书写的原因:
programex(input,output);
……
或:
programex;
对于大量数据的输入和输出都是用文件来实现的,因此,这就要求我们必须熟练掌握在程序中实现对文件的操作。
第1节产生随机数文件
【问题描述】
编写一个程序,产生500个1000以内的随机正整数,存放在data.out文件中,并同时统计从其中大于等于500的数据个数。
【问题分析】
本题有两个问题需要解决,一要掌握随机数的生成原理,让计算机自动生成随机数;二是将计算机产生的随机数据存入文件中。
【程序实现】
Programp4_1(input,output);
constn=500;{n为控制随机数个数的变量}
var
i,a,s:
integer;{i为循环变量、a为暂时存放随机数的变量、s为>=500的数的个数}
f:
text;{定义f为文本文件变量}
begin
assign(f,'data.out');{关联文件变量f到一个外部文件data.out}
rewrite(f);{以新建写文件的方式打开文件}
randomize;{设置随机种子}
s:
=0;{统计变量清零}
fori:
=1tondo
begin
a:
=random(1001);{产生随机数}
write(f,a:
5);{将随机数写到文件里}
ifimod10=0thenwriteln(f);{每写10个数换一行}
ifa>=500thens:
=s+1;{统计>=500的数的个数}
end;
close(f);{关闭文件}
write('>=500:
',s);{在屏幕上打印>=500的数的个数s}
end.
【相关知识】
1.pascal程序中写文件的5个步骤
在Pascal程序重创建文件并写入数据要经历5个步骤,即:
定义文件变量、关联、写准备、写数据、关闭文件变量。
①定义:
在变量说明部分定义文件变量,变量名自己取,类型定义为text型。
②关联:
将一外部磁盘文件名赋于文本文件变量,使该文本文件与一相应外部磁盘文件相关联。
命令格式为:
assign(f,name)
其中f为定义的文本文件变量,name为实际磁盘上文件的文件名
如:
assign(file1,'fileout.dat')
或:
assign(f1,'e:
\aq2006\a1.out')
磁盘文件如包含路径,如'e:
\aq2006\a1.out',则表示将文件存放到e:
\aq2006文件夹中,文件名为a1.out,如果不加路径,则存放在pascal工作目录中,如果工作目录没有更改,FreePascal默认的工作目录一般为“C:
\”。
经过关联后,在程序中,如果对文本文件变量file1或f1的操作,也就是对外部实际磁盘文件fileout.dat或e:
\aq2006\a1.out的操作。
③写准备:
如果要向文件中写入数据,则在写入数据之前应先以写入方式打开。
具体的写打开方式有两种:
命令格式1:
rewrite(f)
功能:
创建并打开新文件准备写,若已有同名文件则删除再创建
命令格式2:
append(f)
功能:
打开已存在的文件并追加
④写数据:
写入数据时,就使用输出语句write和writeln语句,写入的效果就如同将屏幕上的数据原样写入文件中。
只是在使用这两条语句时,必须先使用文件变量指明写入对象。
如:
Write(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键,切换到桌面,再找到刚才程序生成的数据文件,用记事本查看该数据文件的内容,如图1.1图4.1所示的就是用记事本打开示例数据文件的效果。
图4.1 用记事本打开数据
3.文本文件的特点
①行结构
文本文件由若干行组成,行与行之间用行结束标记隔开,文件末尾有一个文件结束标记。
由于各行长度可能不同,所以无法计算出给定行在文本文件中的确定位置,从而只能顺序地处理文本文件,而且不能对一文本文件同时进行输入和输出。
②自动转换功能
文本文件的每一个元素均为字符型,在将一个变量写入文本文件时,也会自动转移为字符型。
与此相反,在将文件元素读入到一个变量(整型,实型或字符串型)中时,FreePascal会自动将其转换为与变量相同的数据类型。
4.计算机自动生成随机数
随机数是计算机程序中方便获得大量模拟数据的一个重要手段。
在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……,编写程序求此数列的前100项,并将前100项输出到一个文件中。
问题分析:
此问题的解决利用以前章节所学的知识完全可以解决,只要掌握斐波那契数列从第3项开始,任意一项的值等于前两项值的和,即:
F(n)=F(n-1)+F(n-2)
需要注意的是循环的次数要控制准确,因为第1项是从0开始的,而不想通常的题目是从1开始的。
本题中练习的重点是如何将这些数输入到文件中,只要掌握的血文件的基本要领,本题是不难完成的。
程序设计:
略
2.照使用pascal语言程序写文件的步骤有如下5步,请将它们正确排序:
①用write或writeln向文件中写入数据。
②用close命令关闭文件。
③在程序说明的var区用text类型标志定义一个文件变量。
④用rewrite或者用append命令以新建或追加方式打开文件,准备存放数据。
⑤用assigh命令设定要操作的磁盘文件。
正确的步骤是:
__________________________________
第2节对文件中的数据进行排序
【问题描述】
在上一课由程序生成的文件data.out中,读入500个随机数,将它们排序后存放到datasort.out中。
【问题分析】
本例中先要打开data.out文件,将其中的数据读入到一个数组中,然后进行排序,最后将排序的结果输出到文件datasort.out中。
只要认真仔细的按照文件数据的读取和写入的步骤来编程,程序的实现应该是不成问题的。
【程序实现】
Programp4_2(input,output);
constn=500;{n为控制随机数个数的变量}
var
i,j,p,t:
integer;
f1,f2:
text;{定义f1、f2为文本文件变量}
a:
array[1..n]ofinteger;{定义数组a}
begin
assign(f1,'data.out');{关联文件变量f1到外部文件data.out}
reset(f1);{复位文件指针,以读方式打开文件}
fori:
=1tondoread(f1,a[i]);{读入数据存放到数组a中}
close(f1);
fori:
=1ton-1do{选择法排序}
begin
p:
=i;
forj:
=i+1tondo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- FREE PASCAL入门文件输入与输出 PASCAL 入门 文件 输入 输出
![提示](https://static.bdocx.com/images/bang_tan.gif)