Makrózás gyakorlat (GYAKORLAT)

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Máté: Assembly programozás

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Szövegszerkesztés Word XP-vel. Tanmenet

Szövegszerkesztés Word XP-vel. Tanmenet

JCL eljárások Tanfolyami jegyzet. ICSS Kft 2012

Formális nyelvek és automaták

Programozási tételek és C++

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

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

Az MS Word szövegszerkesztés modul részletes tematika listája

TÍPUSDOKUMENTUMOK KÉSZÍTÉSE

Szövegszerkesztés haladó MS word

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

Java II. I A Java programozási nyelv alapelemei

Programozás C és C++ -ban

Máté: Assembly programozás

Programozási nyelvek (ADA)

5. KOMBINÁCIÓS HÁLÓZATOK LEÍRÁSÁNAK SZABÁLYAI

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

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

1.eredeti elképzelés 1.1

A programozás alapjai 1 Rekurzió

NAGYPONTOSSÁGÚ EGÉSZ-ARITMETIKA TARTALOM

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

SZÁMÍTÓGÉPI GRAFIKA VÁGÁS

Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék

3 A C programozási nyelv szintaktikai egységei

Programozás alapjai. 5. előadás

C programozási nyelv

Programozási nyelvek Java

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 alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Elsőrendű logika szintaktikája és szemantikája. Logika (3. gyakorlat) 0-adrendű szemantika 2009/10 II. félév 1 / 1

A PROGRAMOZÁS ALAPJAI 3. Készítette: Vénné Meskó Katalin

Bonyolultsági. mértékek erlang programokhoz. Király Roland

C programozás. 1 óra Bevezetés

Programozási nyelvek Java

1. A Horner-elrendezés

OKTATÁSI MINISZTÉRIUM. SZÓBELI VIZSGATÉTELEK A többször módosított 100/1997. (VI. 13.) Korm. rendelet alapján szervezett OKJ szakmai vizsgához

Paraméter átadás regisztereken keresztül

Haladó irodai számítógépes képzés tematika

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} };

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

AZ ALGORITMUSRÓL. (bevezetés a programozáshoz)

PDF. Tartalomjegyzék 1/21

OOP. Alapelvek Elek Tibor

Blonde. Szépségszalon, Szolárium, Spa, Fitness. Ügyviteli Rendszer. Funkcionális Specifikáció. Verzió 1.1

Informatika terméktervezőknek

... 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.

S0-02 Típusmodellek (Programozás elmélet)

Java II. I A Java programozási nyelv alapelemei

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Logika es sz am ıt aselm elet I. r esz Logika Harmadik el oad as 1/33

Programozás alapjai. 7. előadás

és az instanceof operátor

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

Sarokba a bástyát! = nim

Egyenes és sík. Wettl Ferenc szeptember 29. Wettl Ferenc () Egyenes és sík szeptember / 15

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

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

2 Word 2016 zsebkönyv

4. Programozási nyelvek osztályozása. Amatőr és professzionális

INFORMATIKA javítókulcs 2016

Bevezetés a C++ programozási nyelvbe

C programozás. { Márton Gyöngyvér, 2009 } { Sapientia, Erdélyi Magyar Tudományegyetem }

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

Programozási nyelvek Java

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

BUJDOSO GYÖNGYI FAZEKAS ATTILA // / / KEZDOLEPESEK TERTIA KIADÓ

Programozás alapjai. 2. előadás

Programozás II. 2. Dr. Iványi Péter

Abacom CRM rendszer használati utasítás

Eljárások és függvények

Formális szemantika. Kifejezések szemantikája. Horpácsi Dániel ELTE Informatikai Kar

Gy ur uk aprilis 11.

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

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

S&T CAD/PLM SuperUser Akadémia 2016

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

SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1

Iman 3.0 szoftverdokumentáció

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

Tartalomjegyzék

Demográfiai modellek (folytatás)

Gyakran ismételt kérdések

Számítógépes adatrögzítő

Kutatói tájékoztató Útmutató a KSH kutatószobai környezetében folyó kutatómunkához

11. Körlevél készítése

Szövegszerkesztés alapok

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

Rekurzió. Dr. Iványi Péter

ORACLE. SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Egyes esetekben e fejezet keretében készítjük el a Tartalomjegyzéket is, melynek technikai megvalósításáról majd az fejezetben olvashat.

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

Átírás:

MAKRÓZÁS (GYAKORLAT) 0 MI A MAKRÓ? A makró egy tevékenység mintája, sablonja. 0.1 Egy kőkorszaki példa Makró-assembler Gyakori volt, hogy sokszor ismétlődő kóddarabokat kellett a programba beilleszteni. Például két 2-byte-os érték összeadása úgy, hogy a processzornak csak 1-byte-os összeadó művelete van. Nagyjából ez az ismétlődő kód: LD A,XX LD B,YY ADD A,B ST A,ZZ LD A,XX+1 LD B,YY+1 ADC A,B ST A,ZZ+1 Az ismétlődő kódban legfeljebb az XX, az YY és a ZZ cserélődik ki másra. Ez adta az ötletet, hogy legyen mód az assemblerben arra, hogy lehessen definiálni és felhasználni ilyen paraméteres sablonokat. Valahogy így: ADD2 XX,YY,ZZ Az assembler felismerve, hogy nem processzorutasításról van szó, és korábban definiálva lett az ADD2 nevű makró, akkor ezen a helyen a fenti kóddal (pontosabban azzal, ami a makró törzsében szerepelt) helyettesíti. 0.2 Egy frissebb példa Word-ös körlevél Az Office-on belüli szövegszerkesztő lehetőséget biztosít arra, hogy egy ún. törzs-, valamint egy adatdokumentumot megszerkesztve összefuttassuk egyetlen dokumentummá, amelyben egy-egy jól elkülönített rész tartalmazza a körlevél egy-egy paraméterhez tartozó elemét. A törzsdokumentum egy sablon, amely szabad szöveget és az adatdokumentum által konkretizált paramétereket tartalmaz a szöveg tetszőleges pontján, tetszőleges számúszor. 0.3. Egy Turbo Pascal-os példa feltételes fordítás A TP-ben mód van arra, hogy bizonyos feltételek teljesüléséhez rendeljünk egy-egy programdarabot, amelyet figyelembe vesz a fordításnál. A feltétel igen egyszerű: egy azonosító definiáltsága. Erre szolgál az alábbi direktíva: {$DEFINE név} 1

Az azonosító-függő kód elhelyezését így oldhatjuk meg: {$IF név} kóddarab 1 {$ENDIF név} és a nem definiáltság esetén érvényes kód: {$IFNOT név} kóddarab 2 {$ENDNOTIF név} A kóddarab 1 a név definiáltsága esetén fordítódik a kódba, amíg a kóddarab 2 éppen ellenkezőleg. 0.4 A makrófunkció egy szövegtranszformáció A makrózás mint tevékenység tehát egy leképezés két szöveg között. Az input makródefiníciókat, makróhívásokat és egyéb, szabad (makrómentes) szöveget tartalmaz. Az output makrótlanított szöveg, amelyben a makróhívások helyén az adott makró törzsében lévő szöveg található, természetesen az aktuális paraméterekkel behelyettesítve. 1. A MAKRÓ SZINTAXISA ÉS SZEMANTIKÁJA 1.1 Elvárások 1. a makróval kapcsolatos szövegrészek elkülönüljenek az egyéb szövegtől 2. a makródefiníció és -hívás egyértelműen összekapcsolható legyen 3. a makródefiníciókban az azonosító, a paraméterek és a törzs felismerhető legyen 4. a makró azonosítójául és formális paraméteréül (majdnem) tetszőleges név legyen adható; majdnem = a hosszára korlát adható 5. nem feltétlenül kell megengedni a makrótörzsben más makró hívását; saját hívása azonban tilos 6. a makró paramétereinek száma korlátozható 7. bármely azonosító legyen szó, azaz alfanumerikus karaktersorozat, amely speciális (pl. elválasztó) jeleket nem tartalmaz 1.2 A makródefiníció szintaxisa Az alábbi egy lehetséges elképzelés csupán.!!def!! makróazonosító #paraméterazonosító 1 Makródefiníció-mentes szövegsorok!!enddef!! Megjegyzések: o Mint látható a makródefiníció sorai nem keveredik a szabad szöveggel, sőt a fej-, a törzs- és a lábrész önálló sorokat alkot. 2

o Speciális, az adott szintaktikai környezetben nem szerepelhető jelkombinációkkal érjük el az egyértelmű azonosíthatóság. (!!DEF!!,!!ENDDEF!!, # ) o Az azonosítók természetesen!!-jelpárt és #-jelet sem tartalmazhatnak, sőt nem lehet sem DEF, sem ENDDEF (ahogy hamarosan a hívás szintaxisából kiderül). Megengedhető, hogy aláhúzás-jelet tartalmazzanak. Hosszukra épeszű korlátozás adható. 1.3 A makróhívás szintaxisa Az egységesség a könnyű alkalmazhatóság záloga. Ennek fényében logikus a makróhívás alábbi szintaxisa:!!makróazonosító!! paraméter 1 A jelentése: a hívás tetszőleges szövegkörnyezetben megengedhető, azaz soron belül, akár többször is. 1.4 A makrókifejtés szemantikája 1. a makróhívást meg kell előzze a definíciója (vagy nem! És mi következik ebből?) 2. a mekródefiníciók egyértelműek, azaz nem lehet azonos névvel több makrót definiálni (vagy mégsem! És mi következik ebből?) 3. a sikeres makróhívás után a definiált törzs kerül a szöveg adott pontján behelyettesítésre, de a hívási paraméterekkel aktualizálva. 2 A MAKRÓPROCESSZOR Adatok leírása: MDefTab = MDef * MDef = MNév PDb MTörzs MNév = Szó PDb = Egész MTörzs = Szöveg [Típusinvariáns: paraméterek gyanánt ##i## szerepel, ahol i a paraméterlistabeli sorszáma] és egy másik lehetséges változat: MDef = MNév PDb MPar * MTörzs MPar = Karakter * [Típusinvariáns: p:mpar p= # +sz sz:szó] MTörzs = Szöveg [Típusinvariáns: paraméterek gyanánt az MPar-beliek szerepelnek] 3

Konfliktusok: Összefonódási Input = Makródefiníciók Makróhívások Egyebek MDefTab O O Tagolási Input = Makródefiníciók / Makróhívások / Egyebek más-más tagolásúak 3 EGY MINTAALKALMAZÁS Alábbiakban néhány jellegzetes képpel mutatunk be egy lehetséges implementációt. 1. ábra. A mintaalkalmazás egy fázisa. 4

2. ábra. A mintaalkalmazás következő fázisa. 3. ábra. A mintaalkalmazás következő fázisa. Próbálja ki: MakroFeldMO.exe! A keretprogramot letöltheti: makrogyak.zip. 5