ELAN

A Programozás Wiki wikiből

Az ELAN nyelvet kifejezetten a struktúrált programozás alapjainak elsajátítására fejlesztették ki a Nyugat-Berlini Műszaki Egyetemen az 1970-es évek végén. A nyelvi eszközeivel segít, hogy a struktúrált programozás alapfogalmait és a felülről lefelé, ill. az alulról fölfelé programozást megértsük és megtanulhassuk.

Az ELAN nyelv tervezői nagy gondot fordítottak az absztakciós eszközök kidolgozására. A legfontosabb nyelvi elem az u.n. finomítás, ami nem más mint egy absztrakt algoritmus. Finomítást definiálhatunk úgy, hogy még nem használjuk, illetve használhatunk úgy finomítást, hogy még nem definiáltuk. Minden program valójában finomítások gyűjteménye. A finomítások logikailag hasonlítanak az eljárásokra, de nem lehetnek paramétereik, és lokális változóik (pontosabban objektumaik). A finomítás függvényhez hasonló, ha értéket ad eredményül. Ha használunk egy finomítást, akkor a fordító dönt arról, hogy azt makrószerűen beilleszti, vagy pedig szubrutinszerűen meghívja-e.

Az ELAN változóit ill. konstansait a nyelv objektumoknak nevezi, amelynek semmi köze nincs az OOP-ban használt objektumokhoz. Az objektumok között csak háromféle típus létezik: INT (egész -10000..10000), BOOL (igaz v. hamis) és TEXT (karkterlánc). Összetett objektumok a sorok, amelyek meghatározott számú azonos típusú objektumból állnak, tehát a szokásos tömböknek felelnek meg.

Az ELAN-ban mind a finomításoknak mind az objektumoknak a neve kisbetűket, számokat és szóközt tartalmazhatnak, de kisbetűvel kell kezdődniük. A szóköznek jelentésmegkülönböztető szerepe van, tehát ugyanúgy az azonosító része, mint a többi karakter! Ez olvashatóbbá teszi a programot.

Az alábbi példa elválasztóvonalak között kiírja 1-től 10-ig a számokat és a négyzetüket:

mintaprogram:
  húzz elválasztóvonalat ;
  írd ki a listát ;
  húzz elválasztóvonalat .

húzz elválasztóvonalat:
  put ( "--------------------" ) ;
  line .

írd ki a listát:
  INT VAR i ;
  FOR i FROM 1 UPTO 10
  REP
    put ( i ) ;
    put ( i * i ) ;
    line
  ENDREP .