Az ELAN programozási nyelv

Nyelvi elemek

2. Nyelvi elemek

Ez a fejezet az alábbi című alfejezeteket tartalmazza:
2.1. Az ELAN programozási nyelv jellemzői
2.2. Alapfogalmak

2.1. Az ELAN programozási nyelv jellemzői

Az ELAN egy Neumann-elvű - s már célkitűzése miatt is - amatőr programozási nyelv.

Jellemzőinek e rövid ismertetése során feltételezzük, hogy az Olvasók már tisztában vannak a programozási nyelvek ismertetése során használt programozási alapfogalmakkal és legalább egy Neumann-elvű magasszintű programozási nyelvet már ismernek.

Az ELAN program egy finomítás, amely más finomításokra, programegységekre, fordítási egységekre hivatkozhat:


program
utasítások
.
... finomítások ...
... programegységek ...
... fordítási egységek ...



Az ELAN fordítási egységei, moduljai (az úgynevezett pakkok) programegységeket és finomításokat tartalmazhatnak. A fordítási egység elején egy exportleíró rész található, ahol fel kell sorolni a modul által definiált, a modulon kívül használható konstansokat, változókat, típusokat, eljárásokat, függvényeket, valamint operátorokat.


PACKET modulnév
DEFINES egységnév, egységnév, ...;
... a modul törzse ...
ENDPACKET modulnév



Az ELAN nyelv négyféle programegységet használ: a szokásos eljárást, függvényt és operátort, valamint egyedi "specialitásként" a típust. A programegységekben a deklarációs rész és a törzs egymástól nem különül el, csupán annyi szabályt kell betartanunk, hogy a deklarációknak mindig meg kell előzniük a használatot.

Az ELAN nyelv nem tartalmaz blokkstruktúrát, a programegységei egymás után, tetszőleges sorrendben elhelyezhetők.

Tartalmaz egy speciális fogalmat, a finomítást, amely tetszőleges programegység belsejében vagy azoktól függetlenül, önállóan is elhelyezhető. (Maga a főprogram is egy finomítás.)

A finomítás egy névvel ellátott utasításcsoport:


név:
utasítások
.



Az ELAN nyelv azonosítói - a típusnév kivételével - kisbetűkből, számjegyekből, valamint szóközökből állhatnak, illetve tetszőleges műveleti jelet tartalmazhatnak. A típusnevek kötelezően nagybetűsek.

Általános szabály: az azonosító betűkből és számjegyekből állhat (kiegészítve esetleg az aláhúzás karakterrel). Néhány nyelv megengedi az azonosítókban a szóköz használatát, illetve tetszőleges jelekét. Így például az ELAN-ban írhatunk "teljes mondatos" eljárásneveket, sőt használhatjuk műveleti jelként a + operátor jelét (természetesen nemcsak a "hagyományos" számtípusú operandusok között).

E nyelv nem ismeri a védett azonosító fogalmát, az alapszavak kötelezően nagybetűsek, az azonosítók pedig kötelezően kisbetűsek. Így az IF egy utasítás, az if pedig egy azonosító.

A programegységek azonosítói átlapolhatók, ugyanaz a név sokféle célra is szolgálhat, feltéve, hogy használatának környezetéből egyértelműen kiderül, hogy közülük melyikről is van szó. Például a put eljárás vonatkozik az ELAN nyelvnek mind az egész, mind a valós stb. alaptípusaira, sőt az alaptípusokból általunk kreált tetszőleges típusra is.

Az objektumok hatásköre az a programegység - beleértve az általa tartalmazott finomításokat is -, amelyben az objektumot definiáltuk, kiterjesztve minden általa hívott programegységre. Ezen belül az objektumra másféle deklaráció nem lehetséges. ELAN-ban tehát a hatáskör kijelölése dinamikus.

Az ELAN - sok más nyelvhez hasonlóan - használ fordítási konstansokat, érdekesség, hogy nemcsak konstansokra, hanem típusnevekre is.

Erősen típusos nyelv, vagyis minden objektuma típusának fordítási időben ki kell derülnie.

Névszerinti típuskompatibilitást alkalmaz, azzal az "enyhítéssel", hogy az azonos szerkezetű névtelen típusok egymással mindig kompatibilisek. Kifejezéseiben nem fordulhatnak elő különböző típusú operandusok, minden esetben nekünk kell gondoskodni a típuskonverziós függvények alkalmazásáról.

Az ELAN dinamikus típusként megengedi rekurzív típusok használatát, valamint a típussal paraméterezett ún. paraméteres típusokat is.

A nyelv memóriakezelése dinamikus, a programegységek futásuk közben létrehozhatnak újabb változókat, amelyek futásuk végén automatikusan megszűnnek. A deklarációkiértékelés is dinamikus, de ez nem abban mutatkozik meg, hogy a tömbök indexhatárai változók is lehetnek, hanem abban, hogy bármely változó kezdőértékét egy kifejezéssel is meghatározhatjuk. Ugyanarra a változóra vagy konstansra csak egyetlen helyen szerepelhet deklarációs utasítás a programban, de ez a deklaráció többször is végrehajtható.

A memórialefoglalás mindig automatikusan, a deklaráció kiértékelésekor, illetve dinamikus változók értékadásakor megtörténik, mutató típusú változókat e nyelv nem használ.

Az adatok élettartama a deklaráció kiértékelésétől az adott programegység futásának végéig tart. Kezdőérték minden típusú változónak adható. Kezdőérték nélküli változó első felhasználását meg kell hogy előzze egy rá vonatkozó értékadás.

A formális és az aktuális paramétereket felsorolásuk sorrendjében feleltetjük meg egymásnak. A formális paramétereket a deklarációs részhez hasonlóan kell definiálni, csupán kezdőérték nem adható. Paraméter konstansokon, változókon és kifejezéseken kívül még eljárás, függvény vagy operátor is lehet.

A paraméterátadás érték-, illetve eredményszerinti, azaz a változóparamétereket híváskor lemásolja, visszatéréskor pedig visszamásolja az ELAN.

Utasítás-elválasztójelnek a ;-t használjuk, a beírás formátuma tetszőleges, a nyelvi szerkesztő automatikusan "szépre" tördeli a programot. Struktúrák befejező, illetve elhatároló alapszavai már elválasztójelnek számítanak, így eléjük nem kell kitennünk a pontosvesszőt.

2.2. Alapfogalmak

Az ELAN programegységei szerkezeti elemek gyűjteményéből állnak. A Szerkezeti elemeknek három osztálya van: algoritmusok, objektumok, típusok. Ezek közös tulajdonsága, hogy névvel jelölhetők. (A nevek kisbetűvel kezdődnek, és kisbetűkből és számjegyekből állnak. Tartalmazhatnak szóközt is, így egy szerkezeti elemet akár egy mondattal is körülírhatunk.) A program ilyen programegységekből épül fel, melyeket vezérlési szerkezetek (azaz: felsorolás, elágazás, ismétlés), adatszerkezetek (azaz: tömb, struktúra) és kompozíciós mechanizmusok (azaz: kifejezések, függvényhívások) kötnek össze.

Az ELAN nyelv a programok fejlesztésének alapjává az absztrakt algoritmusokat, finomításokat teszi.

A nyelvhez tartozó elemi (azaz: a nyelvben eleve meglévő) programegységeket konkrétnak, minden ezekből készítettet pedig absztraktnak nevezünk. Az ELAN kulcsszavait, a típusok és operátorok neveit mindig nagybetűvel, a finomítások, eljárások és objektumok neveit és az ELAN programozási környezet parancsainak rövidítéseit mindig kisbetűvel kell írni!

Az ELAN program három fő részből áll. Ezek sorban: Bottom-up rész, Gyökér rész, Top-down rész.

1.) A Bottom-up részben az eljárások, operátorok, típusok és szinomímák deklarációi szerepelnek. Az alulról felfelé építkezésben az elemi lépésekből, adattípusokból egyre magasabb szintű szerkezeteket építhetünk fel. Ekkor előre kell tudnunk, milyen összetett szerkezetekre lesz szükségünk a program során.

2.) A Gyökér rész egy szakasz lehet (lásd később), melyet a programozási környezet mint egy Program nevű finomítást kezel.

3.) A Top-down részben a Gyökér részből hívott finomítások találhatók. Itt felülről lefelé haladunk, és a feladatot egyre kisebb részekre bontjuk, míg el nem érjük az elemi utasítások vagy az alulról felfelé épített típusok, operátorok, eljárások szintjét.

Az ELAN program végrehajtásakor először a Gyökér rész végrehajtására kerül sor. A Gyökér rész utasításai válthatják ki a Top-down rész valamelyik finomításának a végrehajtását.