一、TP和FP的功能区别1.FreePascal理论上可以使用4GB(232byte)的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制),这是因为FreePascal使用的是32位的编译器。但是对于TurboPascal来说,由于是16位的编译器,因此不能定义大小超过64KB(216byte)的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。但这并不是说,你可以随意定义很大的数组了,因为光读入200MB的数据就会让你的程序超时了(因为现在的7200转硬盘和133的系统总线速度决定了读取数据的速度也就100MB秒)。2.在FreePascal中,如果用assig
给标准输入输出文件变量i
put和output指定了文件,在程序结束之前一定要用close关闭i
put和output,否则输出文件可能不能被正确的写入。这个问题是近几年NOIP竞赛和省队训练、选拔中选手常犯的错误。尤其是程序非正常结束之前(如halt)会忘记。3.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。所以,在FreePascal中最好不要对一个文件同时进行读写操作。4.在FreePascal中,集合中的元素都是4个字节长的。5.表达式执行的顺序是不确定的。比如对于表达式ag2f3不保证g2一定在f3之前执行。6.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在FreePascal中添加了函数重载功能。7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字;而FAR,NEAR不再是关键字了,原因是FreePascal是32位系统,不再需要这些关键字。二、FP的新增功能1.函数可以返回复杂的类型,比如记录和数组。如:typearrtypearray1100oflo
gi
t必须要先定义数组基类型,否则红色部分不合法varijk
lo
gi
taarrtypefu
ctio
sortaarrtype
lo
gi
tarrtypevarijklo
gi
tbegi
fori1to
1doforji1to
doifaajthe
begi
kaaajajke
dsortae
d
fbegi
read
fori1to
doreadaasorta
fori1to
dowriteawritel
e
d2.在函数中,函数的返回值可以作为一个变量来处理。比如:fu
ctio
alo
gi
tbegi
a12whilea4dobegi
e
de
d这个例子在TurboPascal中,a4会被认为是函数的递归调用,但是在FreePascal中会认为a只是一个变量。如果想在FreePascal中实现递归调用,就要写成下面的形式:fu
ctio
alo
gi
tbegi
a12ifa4the
递归调用begi
e
de
d3.exit可以接受一个参数作为函数的返回值。比如:fu
ctio
alo
gi
tbegi
a12ifa4the
begi
exir