Egy program felépítése Free Pascalban
A Free Pascal programok elején a programfej állhat, mely a Program kulcsszóval kezdődik és a programnév követi, ami egy azonosító. A programok elejéről ez a rész elhagyható. Ez után állhat a Uses kulcsszó, amit a programban alkalmazni kívánt unit-ok felsorolása követ ;-vel lezárva, de ez a rész szintén elmaradhat.
Ezt követi a program törzse, a blokk. A blokk két részből áll és nem hagyható el. Az első a blokk deklarációs része (elhagyható), melyben a változókat, konstansokat, a programban használt saját típusainkat stb. adhatjuk meg. Ezután következik az utasításrész, melyben a végrehajtható utasításokat írjuk le. Ez a rész a Begin kulcsszóval kezdődik és az End kulcsszóval ér véget. A program végén kötelezően egy . (pont) karakter áll. A . utáni részt a fordítóprogram figyelmen kívül hagyja.
A fentebb felsorolt programozási eszközök szerepét és használatát a következő foglalkozásokban részletesen fogjuk ismertetni. A Pascal nyelvet szabványosították, a szabványok (ISO 7185, szabvány az eredeti Pascal nyelvről, illetve ISO 10206, szabvány a Pascal kibővített változatához) angol nyelven elérhetők:
Karakterkészlet
A Free Pascal 8 bites jelkódolást használ, ami azt jelenti, hogy az ASCII-kódrendszer az adott operációs rendszerhez igazított változatát használhatjuk a programok készítésekor. Például Windows XP alatt az ISO-8859-2 (Latin-2) kódrendszer áll rendelkezésünkre jelkészletként.
A forráskód elkészítésekor mindemellett csak az angol ábécé kis- és nagybetűit, a decimális számjegyeket (0..9) és az _ (aláhúzás) jelet írhatjuk az utasításokba és az azonosítókba. A sztringliterálok (karakterlánc-konstansok) azonban bármilyen ASCII-karaktert (illetve az operációs rendszertől függő jelkódolásban szereplő karaktert) tartalmazhatnak, kivéve a vezérlőkaraktereket [#0..#31] illetve az ’ (aposztróf, #39) karaktert duplázva lehet megjeleníteni. pl. '5 o''clock'
Fontos megjegyezni, hogy a forráskód szövegében a Free Pascal nem tesz különbséget a kis- és nagybetűk között, sztringliterálokban azonban igen!
Lexikai elemek
Lexikális egységnek nevezzük a program azon elemeit, melyeket a fordítóprogram fordításkor felismer. Free Pascalban ezek az alábbiak lehetnek:
• Egy- vagy többkarakteres szimbólumok, pl. a műveleti jelek, mint +, -, *, / stb. Továbbá zárójelek, pl. (, ), [, ] stb. elhatárolójelek, illetve a :=, <=, >= stb. jelsorozatok.
• Szimbolikus nevek. Ezeknek három fajtájuk van:
- azonosítók.
- kulcsszavak, pl. Begin, Do stb., ezeket a Free Pascal fenntartja, vagyis a programozó nem definiálhatja őket azonosítóként, jelentésüket a nyelv határozza meg,
- olyan szavak, melyek a program bizonyos részein kulcsszóként viselkednek, de a programozó használhatja őket azonosítóként, pl. alias, assembler. Az előre definiált típusok (pl. Byte, Boolean) nevei nem kulcsszavak, hanem azonosítók, őket a System unit definiálja, így más unitokban a programozó saját névként újradefiniálhatja őket, ez azonban erősen ellenjavallt, mivel a programokban kavarodást okozhat.
• Címkék: segítségükkel a program egy-egy utasítását tudjuk megjelölni, azért hogy oda egy másik utasítástól átadhassuk a vezérlést. A vezérlésátadás a Goto paranccsal történhet, melynek használatát a szakirodalmak egyöntetűen nem tanácsolják.
• Megjegyzések: speciális karaktersorozattal bevezetett, vagy speciális karaktersorozatok közé zárt szövegrészek, melyeket a fordítóprogram figyelmen kívül hagy. A megjegyzéseket (kommenteket) a programozó saját magának, vagy más programozóknak írja, hogy javítsa a forráskód olvashatóságát. Free Pascalban a // karakterpár után lévő, sor végéig tartó rész, illetve a { és } kapcsos zárójelpár vagy a (* és *) karaktersorozatok közé tett részek a megjegyzések. Ez utóbbi kettő célszerű használata akár egymásba skatulyázott megjegyzéseket is lehetővé tesan
• Literálok, konstansok: a forráskódban megjelenő konkrét adatok. Többféle változatuk létezik: vannak szám- és szöveg adattípusú literálok, szám típuson belül egészek, valósak, stb
Adattípusok
A programban használt adatokat különböző adattípusokba sorolhatjuk. Egy adat típusa három dolgot határoz meg:
- az adat milyen értéktartományból vehet fel értékeket,
- az adat milyen reprezentációban jelenik meg a memóriában,
- milyen műveletek hajthatók végre az adott típusú adaton.
Típus komponenssel a literálok, a nevesített konstansok és a változók is rendelkeznek.
Egyszerű adattípusok
Egyszerű adattípusok a sorszámozott adattípusok, és a valós típusok Free Pascalban. A sorszámozott típusok jellemzője, hogy megszámlálhatók és értékeik sorba rendezettek, azaz bármely elemhez meghatározható annak rákövetkezője és az azt megelőző elem, kivéve a legkisebb és legnagyobb elemeket, mivel ezek megelőzőjének és rákövetkezőjének meghatározásakor hibát kapunk, de mindenképpen logikai hibát vétünk.
Előre definiált sorszámozott típusok a következők:Integer, Shortint, SmallInt, Longint, Longword, Int64, Byte, Word, Cardinal, QWord, Boolean, ByteBool, WordBool, LongBool, Char.
Felsorolt típusokat a programozó is létrehozhat, ekkor a típus definíciójakor meg kell adnia a típusba tartozó elemeket, vagy az elemet tartományát.
A fenti felsorolásban többféle logikai típust is találunk, ezek között a különbség a belső adatábrázolásban van.
Valós típusok a következők: Real, Single, Double, Extended, Comp, Currency.
Az elemi adattípusokhoz sorolhatjuk még szövegtípusokat, mint a karakter típus, és a különböző sztring-típusokat, bár ezekről tudnunk kell, hogy a Free Pascal lehetőséget biztosít ezek összetett adattípusú adatként való kezelésére is.
Léteznek ezen kívül mutató típusok, ezek külön csoportba sorolhatók, de tekinthetjük őket elemi adattípusoknak is.
Összetett adattípusok, adatszerkezetek
A különböző adatszerkezetek implementáláshoz összetett adattípusokat használhatunk Free Pascalban. Az adatszerkezetek vizsgálatakor meg kell állapítanunk, hogy az adott adatszerkezet elemeinek száma a program futása alatt megváltozhat-e, illetve hogy az elemek típusa milyen lehet. Az elemszám tekintetében beszélhetünk statikus és dinamikus adatszerkezetekről, az elemek típusát figyelembe véve pedig homogén és inhomogén adatszerkezetekről. Statikus, homogén adatszerkezet pl. a tömb. Dinamikus, homogén adatszerkezetek a halmaz, fájl stb., míg inhomogén adatszerkezet a rekord.
A Free Pascal összetett adattípusainak nevei: Array, Record, Object, Class, Interface, Set, File.
Megjegyzés: a Free Pascal kezel statikus és dinamikus tömböket is.
Kulcsszavak
Lefoglalt kulcsszavak az alábbiak: Absolute, And, Array, Asm, Begin, Case, Const, Constructor, Continue, Destructor, Div, Do, DownTo, Else, End, File, For, Function, Goto, If, Implementation, In, Inherited, Inline, Interface, Label, Mod, Nil, Not, Object, Of, On, Operator, Or, Packed, Procedure, Program, Record, ReIntroduce, Repeat, Self, Set, Shl, Shr, String, Then, To, Type, Unit, Until, Uses, Var, While, With, Xor, As, Class, Except, Exports, Finalization, Finally, Initialization, Is, Library, On, Property, Raise, ThreadVar, Try, Dispose, Exit, False, New és True.
Free Pascalban a kulcsszavakat változtatás nélkül kell alkalmazni.
Olyan programozási eszköz, amely meghatározza a program valamely objektuma (pl. egy változó) által felvehető értékeket, annak memóriabeli reprezentációjának módját, és a rajta végezhető műveletek körét.
A Free Pascalban a pointer típusok értékei memóriacímek. Minden típushoz megadható egy pointer típus, mely a memóriában egy az adott típusú adatot tároló területre mutat. Deklarációkor a típus neve elé ^ (kalap) jelet kell tenni, pl. a var mutato : ^Integer; deklaráció egy integer típusú adatot tároló memóriaterületre mutató, mutato nevű pointert hoz létre.