古詩詞大全網 - 成語解釋 - free pascal 是什麽

free pascal 是什麽

Free Pascal是個由國際組織開發的完全的win32的pascal語言編譯器,類似delphi,可編寫windows程序。

目前,該項目的網站為www.freepascal.org,最新版本為2系列。

此前被廣泛使用的PASCAL編譯器普遍為Turbo Pascal & Borland pascal。但是它們可用的空間十分有限。而Free Pascal理論上可以使用4GB內存。所以在利用Free Pascal編程的時候,可以改變原有思路,將大量時間轉嫁給空間,提高效率。

雖然Free Pascal盡量設計得和Turbo Pascal接近,但是由於以下的兩個原因,兩者之間還是有壹些區別的:

1. Free Pascal是壹個32位的編譯器,而Turbo Pascal只是16位編譯器;

2. Free Pascal是壹個跨平臺的編譯器,而Turbo Pascal只在windows上使用。

如果妳的代碼是遵守ANSI Pascal的,那麽代碼從Turbo Pascal移植到Free 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,因此要求程序中的文件名和系統中的文件名壹樣。