词条 | FreePascal |
释义 | Free Pascal (又名 FPK Pascal)是一个32位和64位的专业级的Pascal 编译器.它可以在多种不同架构的处理器上运行: Intel x86, Amd64/x86_64, PowerPC, PowerPC64, Sparc, ARM. 曾经发行的1.0版本还支持摩托罗拉680x0. Free Pascal可以在以下系统上运行: Linux, FreeBSD, Haiku, Mac OS X/Darwin, DOS, Win32, Win64, WinCE, OS/2, Netware (libc和classic版本) 以及MorphOS. 简介Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器,类似delphi,可编写windows程序。 更改语言当free pascal 此时的语言并不是你所希望的时,若需要更改语言可以在fp窗口最上面的标题栏上右键单击,在弹出的快捷菜单中选择“默认值”,接着会弹出属性窗口,在最下面的“默认代码页”的下拉菜单中选择“437(OEM-美国 )”或其它语言。 原因虽然Free Pascal尽量设计得和Turbo Pascal接近,但是由于以下的两个原因,两者之间还是有一些区别的: 1. Free Pascal是一个32位的编译器,而Turbo Pascal只是16位编译器; 2. Free Pascal是一个跨平台的编译器,可在linux系统应用,而Turbo Pascal只在windows上使用,信息竞赛中多用linux评测。 如果你的代码是遵守ANSI Pascal的,那么代码从Turbo Pascal移植到Free Pascal是没有问题的。 在Turbo Pascal上可以使用下面是在Turbo Pascal上可以使用,但是在Free Pascal就不能使用的一些语言特性: 1. 函数和过程在使用时,参数的类型必须和定义时完全一致。原因是在Free Pascal中添加了函数重载功能。 2. PROTECTED,PUBLIC,PUBLISHED,TRY,FINALLY,EXCEPT,RAISE成为了关键字,因此不能作为函数和过程的名字。 3. FAR,NEAR不再是关键字了。原因是Free Pascal是32位系统,不再需要这些关键字。 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 Pascal扩充的一些功能: 1. 函数可以返回复杂的类型,比如记录和数组。 2. 在函数中,函数的返回值可以作为一个变量来处理。比如: function a : longint; begin a:=12; while a>4 do begin {...} 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; end; 3. exit可以接受一个参数作为函数的返回值。比如: function a : longint; begin a:=12; if a>4 then begin exit(a*67); {函数的返回值就是a*67 } end; end; 4. Free Pascal支持函数重载。可以用相同的名字定义不同的函数,只要这些函数的参数不同,就是不同的函数。比如: procedure DoSomething (a : longint); begin {...} end; procedure DoSomething (a : real); begin {...} end; 可以使用不同的参数类型longint或者real来调用不同的DoSomething过程。 由于这个功能,函数的提前声明必须有完整的参数声明: procedure x (v : longint); forward; {...} procedure x;{ 这里定义的过程x重载了前面声明的过程x。因此这里的两个x是不同的} begin {...} end; 5. Free Pascal容许运算符重载。比如,可以自己为矩阵运算定义一个“+”运算。 6. Free Pascal在windows 95及其以上的windows版本上支持长文件名。对于文件名,由于windows系统对大小写不敏感,因此在程序中,文件名的大小写是无关的。但是对于其它大小写敏感的系统,比如linux,程序中用到的文件名必须和系统中的文件名完全一致。但是由于信息学竞赛的评测系统一般是linux,因此要求程序中的文件名和系统中的文件名一样。 Free Pascal 的常见保留字and array begin case const div do downto else end file for function goto if in label mod nil not of or packed procedure program record repeat set then to type until var while with 以上36个保留字是指被Pascal语言所使用,而且有专门的用途,不允许用于其它的用途(如定义标识符)。 Free Pascal 的标准数据类型整数类型名称 标识符 大小 表示范围 短整型 shortint 1字节 -128~127 整型 integer 2字节 -32768~32767(-2^15~2^15-1) 长整型 longint 4字节 -2147483648~2147483647(-2^31~2^31-1) 64位长整形 int64 8字节 -2^63~2^63-1 字节型 byte 1字节 0~255 字型 word 2字节 0~65536 双字型 dword 4字节 0~4294967295 四字型 qword 8字节 0~2^64-1允许的计算符是+(加) -(减) *(乘) div(整除) mod(求余)and (与)or (或)xor(异或) 实数类型名称 标识符 表示范围 单精度型 single 在内存中占4个字节, 7到8位有效数字 双精度型 double 在内存中占8个字节, 15到16位有效数字 扩展精度型 extended 在内存中占10个字节, 19到20位有效数字 *装配十进制型 comp 在内存中占8个字节, 19到20位有效数字允许的计算符是+(加) -(减) *(乘) /(除) 字符类型字符类型即为在两个单引号之间的PASCAL字符集(' ')。字符类型在PASCAL语言中使用类型标识符char来表示,它是有序的。 还有类型标识符string来表示字符串。 布尔类型布尔类型的数据只有2个:TRUE 和 FALSE。布尔类型在PASCAL语言中使用类型标识符boolean来表示,它是序列的,并且规定FALSE<TRUE。 布尔类型的运算符是not、and、or、xor,其运算规则如下表: p q p and q p or q p xor q true true true true false true false false true true false true false true true false false false false false |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。