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,因此要求程序中的文件名和系統中的文件名壹樣。
參考文獻:
[1] Users’ manual for Free Pascal, version 1.9.6, Document version 2.0, December 2004
Micha?l Van Canneyt, Florian Kl?mpfl