A Free Pascal (régebben FPK Pascal) egy nyílt forráskódú Pascal fordító és fejlesztőkörnyezet, amelynek célja a Turbo Pascal kiváltása.
A Free Pascal lehetőségei ma már több szempontból túlmutatnak a példakép Turbo Pascal lehetőségein, követve az Turbo Pascal fejlesztésének leállítása után keletkezett elvárásokat.
A következő operációs rendszerek alá lehet vele programot fejleszteni:
- Linux
- FreeBSD
- NetBSD
- Haiku
- Mac OS X/iOS/Darwin
- DOS
- Windows 32 és 64 bites verzió
- WinCE
- OS/2
- Solaris
- Symbian
- MorphOS
- Nintendo GBA
- Nintendo DS
- Nintendo Wii
- Android
A következő processzorokat támogatja:
- Intel x86
- AMD64/x86-64
- PowerPC
- PowerPC64
- SPARC
- ARM
- m68K (csak a régebbi verziók támogatják)
Támogatott adatbázis formátumok:
- Advantage
- Microsoft SQL Server
- Interbase
- MySql
- Postgresql
- Oracle Database
- Firebird
- SQLite
- Sybase Adaptive Server Enterprise
- ODBC
- FoxPro
- DBase
- Paradox
- Text fájl alapú adatbázis
A fenti hosszú felsorolásokat röviden összefoglalva a Free Pascal segítségével szinte bármely operációs rendszer és eszköz számára lehet programot fejleszteni, illetve az egyszer elkészült program az itt felsorolt rendszerek bármelyikére lefordítható.
Természetesen nem minden processzor-operációs rendszer-adatbázis kezelő hármasra lehet fejleszteni, de a gyakorlatban előforduló kombinációk támogatottak.
A free Pascal oldalon terminal módban (szöveges módban) működő programok fejlesztéséhez egy FPC nevű , a windows jellegű „ablakos” programok készítéséhez Lazarus néven ajánlanak kezelőfelületet. Harmadik gyártótól is szerezhető be kezelőfelület, ilyen például az MSEide+MSEgui.
A Pascal egyszerűen tanulható, jól használható eszköz egyszerű programok készítésére. Az elkészült kód gyakorlatlan szemnek olvashatóbb, mint a C vagy C++ programok, ugyanakkor a kész program sokkal gyorsabban fut mint az interpreteres nyelveken (például BASIC, PERL) készült társaik.
Az elkészült program minőségét nagyban meghatározzák a kiválasztott beállítások. Minden ellenőrzés javítja a kész program üzembiztosságát,
azonban a futásidejét és a kész program méretét növeli, és nem pótolja a gondos programozói munkát, de nagy mértékben segíti azt. Különösen a tanulási időszakban az ellenőrzések kikapcsolása nem célszerű, mivel a programhibák felderítést nehezíti, illetve a program üzembiztonságát rontja.
A különböző ellenőrzéseket ki/be kapcsolni az Options/Compiler.. menüben, vagy a programkódban elhelyezett direktívákkal lehet.
Range checking
A range checking jó példa arra, hogy a be és kikapcsolt állapotának is van létjogosultsága, attól függően, hogy az adott programrészletnek mi a célja, és azt hogyan szeretné elérni.
Megszámlálható típusoknál, illetve tömb indexeknél ellenőrzi, hogy a program futása során a változók értéke a megengedett értéktartományon belül marad-e, amennyiben nem, 201 számú hibával a program megáll. A Free Pascal esetén kifejezésenként, a Delphi esetén eljárásonként az itt beállított értéket a {$R+} illetve a {$R-} direktívákkal felül lehet írni a programban.
Egy példa:
Program Range;
Var
I:integer;
Begin
I:=maxint;
I:=I+1;
Writeln(I);
end.
A program kikapcsolt Range checking opcióval lefut és -32768 értéket ír ki. Bekapcsolt range checking esetén 201 hibával (range check errorr) a program végrehajtása megszakad.
Stack checking
A program által használt stack (verem) túlcsordulását figyeli. A program futása közben a {$S+} illetve a {$S-} direktívákkal lehet be- illetve kikapcsolni. A stack túlcsordulása olyan súlyos hiba, hogy a program üzemszerű működését minden körülmények között megakasztja, a rendszer biztonságát veszélyeztető mellékhatásai miatt mindig bekapcsolva tartjuk . Ha a stack túlcsordul, ismeretlen rendeltetésű memóriaterületet ír felül, ami rendszerösszeomláshoz vezethet, ritkán előforduló, azonban nehezen hibakereshető probléma.
I/O checking
I/O műveletnél végez alapvető ellenőrzéseket. Futásidőben a {$I+} és {$I-} direktívákkal lehet ki- és bekapcsolni, akár I/O műveletenként. Bekapcsolt állapotban nyilvánvalóan hibás bemeneti adatok esetén (szám helyett szöveg, az olvasandó fájl nem létezik) a program végrehajtása megszakad, kikapcsolt állapotban magunknak kell az ellenőrzéseket elvégezni. Mivel a legtöbb esetben a beérkező adatok ellenőrzése egyébként is szükséges, nem szoktuk bekapcsolni, illetve csak indokolt esetben.
Példa az I/O hibák kezelésére:
assign (f,’file.txt’);
{$I-}
rewrite (f);
{$I+}
if IOResult<>0 then
begin
Writeln (’Nem tudom megnyitni a file.txt-t’);
exit
end;
A következő részben az optimalizációs lehetőségeket mutatom be egy egyszerű példaprogramon keresztül.
Az elsősorban a Pascal szintaxisának leírására használt szintaxisgráfokról Segesdy Gábor barátunk írt egy szép cikket.
Kapcsolódó cikkek
A Pascal nyelv leírására használt szintaxisgráfokról írt egy szép cikket Segesdy Gábor.