1个回答
展开全部
3月16日 14:56 一、FP与TP的本质区别
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
1.Free Pascal是一个32位的编译器,而Turbo Pascal只是16位的编译器;
2.Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows上使用。
如果你的程序代码是完全遵守ANSI Pascal的,那么你的程序代码从Turbo Pascal移植到Free Pascal上是没有问题的。
二、TP和 FP的功能区别
1.Free Pascal理论上可以使用4GB(2^32byte)的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制),这是因为Free Pascal使用的是32位的编译器。
但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB(2^16byte)的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
但这并不是说,你可以随意定义很大的数组了,因为光读入200MB的数据就会让你的程序超时了(因为现在的7200转硬盘和133的系统总线速度决定了读取数据的速度也就100MB/秒)。
2.在Free Pascal中,如果用assign给标准输入输出文件变量input和output指定了文件,在程序结束之前一定要用close关闭input和output,否则输出文件可能不能被正确的写入。
这个问题是近几年NOIP竞赛和省队训练、选拔中选手常犯的错误。尤其是程序非正常结束之前(如halt)会忘记。
3.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。所以,在Free Pascal中最好不要对一个文件同时进行读写操作。
4.在Free Pascal中,集合中的元素都是4个字节长的。
5.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
6.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。
7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字;而FAR,NEAR不再是关键字了,原因是Free Pascal是32位系统,不再需要这些关键字。
三、FP的新增功能
函数可以返回复杂的类型,比如记录和数组。如:
type arrtype=array[1..100] of longint;{必须要先定义数组基类型,否则红色部分不合法}
详细区别可以参见附件文件
附件:FP与TP详细比较整理.doc
虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的:
1.Free Pascal是一个32位的编译器,而Turbo Pascal只是16位的编译器;
2.Free Pascal是一个跨平台的编译器,而Turbo Pascal只在windows上使用。
如果你的程序代码是完全遵守ANSI Pascal的,那么你的程序代码从Turbo Pascal移植到Free Pascal上是没有问题的。
二、TP和 FP的功能区别
1.Free Pascal理论上可以使用4GB(2^32byte)的内存,因此实际上几乎可以使用系统中的所有剩余内存(除非赛题中有内存限制),这是因为Free Pascal使用的是32位的编译器。
但是对于Turbo Pascal来说,由于是16位的编译器,因此不能定义大小超过64KB(2^16byte)的数据类型和变量,并且在DOS实模式下可以使用的内存总数只有640KB。
但这并不是说,你可以随意定义很大的数组了,因为光读入200MB的数据就会让你的程序超时了(因为现在的7200转硬盘和133的系统总线速度决定了读取数据的速度也就100MB/秒)。
2.在Free Pascal中,如果用assign给标准输入输出文件变量input和output指定了文件,在程序结束之前一定要用close关闭input和output,否则输出文件可能不能被正确的写入。
这个问题是近几年NOIP竞赛和省队训练、选拔中选手常犯的错误。尤其是程序非正常结束之前(如halt)会忘记。
3.如果用Rewrite打开文件,那么文件就只能被写入了。如果需要读取这个文件,要对文件执行Reset。所以,在Free Pascal中最好不要对一个文件同时进行读写操作。
4.在Free Pascal中,集合中的元素都是4个字节长的。
5.表达式执行的顺序是不确定的。比如对于表达式a:=g(2)+f(3); 不保证g(2)一定在f(3)之前执行。
6.函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。
7.PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字;而FAR,NEAR不再是关键字了,原因是Free Pascal是32位系统,不再需要这些关键字。
三、FP的新增功能
函数可以返回复杂的类型,比如记录和数组。如:
type arrtype=array[1..100] of longint;{必须要先定义数组基类型,否则红色部分不合法}
详细区别可以参见附件文件
附件:FP与TP详细比较整理.doc
力控科技
2024-12-02 广告
2024-12-02 广告
作为北京力控元通科技有限公司的工作人员,对于公司研发的ForceSCADA有着深入的了解。ForceSCADA适配性强,支持电商平台86、LoongArch、ARM等硬件架构的服务器,同时兼容银河麒麟、中标麒麟、UOS统信、Centos、U...
点击进入详情页
本回答由力控科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询