Programozási nyelvek (ADA)

Hasonló dokumentumok
Programozási nyelvek (ADA)

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Alprogramok, paraméterátadás

2. előadás Programegység, fordítási egység, könyvtári egység, beágyazás, blokkszerkezet, alprogramok, csomagok

Programozási nyelvek Java

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Programozási nyelvek Java

Haladó DBMS ismeretek 1

Adatbázis Rendszerek II. 5. PLSQL Csomagok 16/1B IT MAN

A fordítóprogramok szerkezete. Kódoptimalizálás. A kódoptimalizálás célja. A szintézis menete valójában. Kódoptimalizálási lépések osztályozása

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Informatika szigorlat. A lexikális elemző feladatai közé tartozik a whitespace karakterek (a

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozási nyelvek I. (Az Ada) Kozsik Tamás

Fordítóprogramok. Aszalós László szeptember 7.

Bisonc++ tutorial. Dévai Gergely. A szabály bal- és jobboldalát : választja el egymástól. A szabályalternatívák sorozatát ; zárja le.

Programozási nyelvek Java

Programozási nyelvek a közoktatásban alapfogalmak II. előadás

Kifejezések. Kozsik Tamás. December 11, 2016

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Egy Erlang refaktor lépés: Függvényparaméterek összevonása tuple-ba

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

GPU Lab. 4. fejezet. Fordítók felépítése. Grafikus Processzorok Tudományos Célú Programozása. Berényi Dániel Nagy-Egri Máté Ferenc

7. fejezet: Mutatók és tömbök

Feldspar: Nyelv digitális jelfeldolgozáshoz

Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Kifejezések. Kozsik Tamás. December 11, 2016

Programozási alapismeretek 1. előadás

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Maximum kiválasztás tömbben

SZÁMÍTÓGÉP ARCHITEKTÚRÁK

A programozás alapjai

Java II. I A Java programozási nyelv alapelemei

A C programozási nyelv III. Pointerek és tömbök.

... S n. A párhuzamos programszerkezet két vagy több folyamatot tartalmaz, melyek egymással közös változó segítségével kommunikálnak.

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat

Programozási alapismeretek 3. előadás

Algoritmizálás és adatmodellezés tanítása 1. előadás

Java II. I A Java programozási nyelv alapelemei

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

S z á m í t ó g é p e s a l a p i s m e r e t e k

A C programozási nyelv III. Pointerek és tömbök.

Gregorics Tibor Tanácsok modularizált programok készítéséhez 1

Algoritmizálás és adatmodellezés tanítása beadandó feladat: Algtan1 tanári beadandó /99 1

Szemantikai elemzés. konzisztenciájának vizsgálata a szemantikai elemzés feladata lesz.

PL/SQL blokk. [címke] [DECLARE deklarációs utasítás(ok)] BEGIN végrehajtható utasítás(ok) [EXCEPTION kivételkezelő] END [név];

és az instanceof operátor

Haladó Fordítóprogramok

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK

C++ programok fordítása

C++ programozási nyelv

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

AWK programozás, minták, vezérlési szerkezetek

C programozási nyelv

Bevezetés a C++ programozási nyelvbe

Bevezetés a programozásba

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Bevezetés a programozásba I.

Fordító részei. Fordító részei. Kód visszafejtés. Izsó Tamás szeptember 29. Izsó Tamás Fordító részei / 1

Programozás C++ -ban 2007/1

A programozás alapjai 1 Rekurzió

Gregorics Tibor Modularizált programok C++ nyelvi elemei 1

Programozás I. 5. Előadás: Függvények

Programtervezés. Dr. Iványi Péter

Programozási nyelvek Java

3. Osztályok II. Programozás II

Formális módszerek GM_IN003_1 Program verifikálás, formalizmusok

A C programozási nyelv II. Utasítások. A függvény.

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Objektum orientált kiterjesztés A+ programozási nyelvhez

Eljárások, függvények

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Webprogramozás szakkör

Programok értelmezése

Mintavételes szabályozás mikrovezérlő segítségével

Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.

Occam 1. Készítette: Szabó Éva

Pénzügyi algoritmusok

Programozási nyelvek JAVA EA+GY 1. gyakolat

Dr. Schuster György október 14.

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Informatika terméktervezőknek

Java programozási nyelv

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Programozási alapismeretek. 1. előadás. A problémamegoldás lépései. A programkészítés folyamata. Az algoritmus fogalma. Nyelvi szintek.

AWK programozás, minták, vezérlési szerkezetek

Átírás:

Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás Programozási nyelv felépítése szabályok megadása Lexika Milyen egységek építik fel? Szintaktikus szabályok Szemantikus szabályok Hogyan kell felépíteni? Értelmes-e amit csinálok? Lexika Formális nyelvek és automatákból tanult hármas típusú nyelvtan jellemző rá. ( ) Szintaktikus szabályok Formális nyelvek és automatákból tanult környezetfüggetlen nyelvtan jellemző rá. ( ) Szemantikus szabályok Formális nyelvek és automatákból tanult környezetfüggő nyelvtan jellemző rá. ( ) lexer parser lexikális egységekre bontja a forrás kódot. Tokeneket csinál. tokenekből struktúrát készít. Általában szintaxisfa segítségével írja le Program szemantikája (jelentése) szemantikai szabályok statikus fordítási időben ellenörzés Például: Változó, amit használunk deklarált-e? dinamikus futási időben ellenörzés Például: tömbök indexelésének helyessége

A Halting probléma alapján probálja szétválasztani a szemantikai szabályokat, hogy fordítási vagy futási időben történjen az ellenörzés. (http://en.wikipedia.org/wiki/halting_problem) Lexikális és szintaktikus szabályok Csellengő else probléma. Elsősorban C típusú nyelvekben fordulhat elő: if (a>0) if(b>0) c = 1; else c = 0; Ebben az esetben bármennyire is helyesnek látjuk a fentebbi leírást nem az, mivel az else mindig a hozzá legközelebb levő if-hez tapad. Így nem lesz külső else-ág. Nem azt fogja csinálni a program amit szerettünk volna, hogy csináljon. Ada-ban nincs ilyen probléma, mivel minden if-et end if-fel kell lezárnunk. Ellentétben ugye C++-al, ahol megtehetjük azt is, hogy ha egy utasítást szeretnénk adni az adott if ágban nem tesszük { }-et. Így előfordulhat ez a hiba is Vegyük az alábbi Java-s for ciklust: for (byte b = -128; b<=127; ++b) (byte -128-tól 127,ig tartalmaz értékeket) Ez például egy végtelen ciklus, mert +127-re is lefutott. Struktúrálatlan utasítások loop. exit; (vagy exit when (feltétel); ) end loop; Ha ilyet, használunk sokan csúnyának fogják találni, de van olyan kivételes eset, amikor elegáns és szép megoldás lehet. Például előreolvasás. (Goto-ra is volt egy példa. Ez megtalálható szintén az előadás diában. Mivel a félév során gyakorlatokon nem használjuk, így nem teszek ide minta kódot )

Karbantartás vs. optimalizáció Általában, amely program jobban karbantartható az kevésbé optimalizált, de ez így van fordítva is. Inkább legyen karbantartható egy kód, mint optimalizált. (Ez a tendencia nagy programok esetén) Interpreter és fordító program Az interpreter egy utasítás lefordítása után azonnal végrehajtja azt A fordítóprogram átalakítja a programot egy vele ekvivalens formára a számítógép által közvetlenül végrehajtható forma egy másik programozási nyelv Fordítás Szerkesztés

Csomag programegység Egy specifikációs részből és egy törzsből áll. Ezek elkülönülnek egymástól. 2 fordítási egységet tesznek ki. Program egység Beágyazva Könyvtári egységként Külön fordítható Fordítási egység 1 2 Alprogram Csomag Specifikációs részbe csak specifikációkat lehet beágyazni! Alprogramok deklarációja Alprogramok definíciója (http://pnyf.inf.elte.hu/kto/teaching/ada/pnydef.html) Alprogramok Eljárás Az állapottér egy alterét odaadjuk. Hagyjuk, hogy tegye amit kell. Mellékhatásokat itt se szeretjük nagyon, de a megadott paraméterekkel játszhadozhat. input (in),output (out), információáramlás (in out) paramétereket kaphat Függvény Csak input paramétereket kap 1 paramétert visszaad Nem szeretjük a mellékhatásokat csak input (in) paramétereket kaphat

Aktuális és formális paraméterek Alprogramok hívásakor a formális paramétereknek aktuális paramétereket feleltetünk meg. Végezetül: in,out, in out (paraméterek módja)