FP和TP的主要区别

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end; 3. exit 可以接受一个参数作为函数的返回值。比如: function a : longint; begin
a:=12; if a>4 then
begin exit(a*67); {函数的返回值就是 a*67 }
end; end; 4. Free Pascal 支持函数重载。可以用相同的名字定义不同的函数,只要这些函数的参数不
性: 1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在 Free Pascal
中添加了函数重载功能。 2. PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE 成为了关键字,
因此不能作为函数和过程的名字。 3. FAR,NEAR 不再是关键字了。原因是 Free Pascal 是 32 位系统,不再需要这些关键
下面是 Free Pascal 相对于 Turbo Pascal 扩充的一些功能:
1. 函数可以返回复杂的类型,比如记录和数组。 2. 在函数中,函数的返回值可以作为一个变量来处理。比如: function a : longint; begin
a:=12; while a>4 do
begin {...}
Free Pascal 和 Turbo Pascal 的主要区别
虽然 Free Pascal 尽量设计得和 Turbo Pascal 接近,但是由于以下的两个原因,两者之间
还是有一些区别的:
1.
Free Pascal 是一个 32 位的编译器,而 Turbo Pascal 只是 16 位编译器;
2.
procedure x;{ 这里定义的过程 x 重载了前面声明的过程 x。因此这里的两个 x 是不同的} begin {...} end; 5. Free Pascal 容许运算符重载。比如,可以自己为矩阵运算定义一个“+”运算。 6. Free Pascal 在 windows 95 及其以上的 windows 版本上支持长文件名。对于文件名,由于
windows 系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大
小写敏感的系统,比如 linux,程序中用到的文件名必须和系统中的文件名完全一致。但是 由于信息学竞赛的评测系统一般是 linux,因此要求程序中的文件名和系统中的文件名一样。
字。 4. 布尔表达式不一定要全部进行计算。只要最终结果已经能够确定,就不再计算其它
还没有计算的部分了。比如布尔表达式 exp1 AND exp2 AND exp3,如果已知 exp1 的结果是 false, 那么怎么表达式的结果肯定是 false,exp2 和 exp3 就不用进行计算了。
5. 在 Free Pascal 中,集合中的元素都是 4 个字节长的。 6. 表达式执行的顺序是不确定的。比如对于表达式 a:=g(2)+f(3); 不保证 g(2)一定在 f(3)之前执行。 7. 如果用 Rewrite 打开文件,那么文件就只能被写入了。如果需要读取这个文件,要 对文件执行 Reset。 8. Free Pascal 在程序结束之前一定要关闭输出文件,否则输出文件可能不能被正确 的写入。 9. Free Pascal 理论上可以使用 4GB 的内存,因此实际上几乎可以使用系统中的所有 剩余内存(除非赛题中有内存限制)。这是 Free Pascal 由于 32 位的编译器。但是对于 Turbo Pascal 来说,由于是 16 位的编译器,因此不能定义大小超过 64KB 的数据类型和变量,并且在 DOS 实模式下可以使用的内存总数只有 640KB。
Free Pascal 是一个跨平台的编译器,而 Turbo PBiblioteka Baiduscal 只在 windows 上使用。
如果你的代码是遵守 ANSI Pascal 的,那么代码从 Turbo Pascal 移植到 Free Pascal 是没
有问题的。
下面是在 Turbo Pascal 上可以使用,但是在 Free Pascal 就不能使用的一些语言特
end; end;
这个例子在 Turbo Pascal 中,a>4 会被认为是函数的递归调用,但是在 Free Pascal 中会认为 a 只是一个变量。如果想在 Free Pascal 中实现递归调用,就要写成下面的形式: function a : longint;
begin a:=12; { this is the recursive call } if a()>4 then begin {...} end;
同,就是不同的函数。比如: procedure DoSomething (a : longint); begin {...} end;
procedure DoSomething (a : real); begin {...} end; 可以使用不同的参数类型 longint 或者 real 来调用不同的 DoSomething 过程。 由于这个功能,函数的提前声明必须有完整的参数声明: procedure x (v : longint); forward; {...}
相关文档
最新文档