FPC

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ú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:

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.

FPC
FPC pillanatkép

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,

Beállítások
Beállítások

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. Míg 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 . Mivel 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