Fordító Optimalizálás

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "Fordító Optimalizálás"

Átírás

1 Fordító Optimalizálás Kód visszafejtés. Izsó Tamás október 9. Izsó Tamás Fordítás Optimalizálás / 1

2 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2

3 Irodalom Fordító részei Optimalizálás Izsó Tamás Fordítás Optimalizálás / 3

4 Fordító részei Optimalizálás Irodalom Izsó Tamás Fordítás Optimalizálás / 4

5 Irodalom Fordító részei Optimalizálás 01-fm-i-viii /1/13 15:54 page ii #2 Izsó Tamás Fordítás Optimalizálás / 5

6 Miért kell ismerni a fordítót? általában a fordító által generált kódot kell visszafejteni; ha ismerjük a fordító által alkalmazott kódtranszformációt, hamarabb rájöhetünk az eredeti tartalomra; tesztelni kell a fordítót; mert a fordító is azokat az algoritmusokat használja a kód elemzéshez, melyeket a modern decompiler-ek. (Miért, amikor a fordító rendelkezésére áll az eredeti forrás?) Izsó Tamás Fordítás Optimalizálás / 6

7 Fordító részei karakter sorozat Lexikai elemző tokenek sorozata Szintaktikai analízis absztrakt szintaktikai fa Szemantikai ellenőrzés Közbenső kódgenerálás szimbólumtábla absztrakt szintaktikai fa közbenső ábrázolás Gépfüggetlen kódoptimalizáló közbenső ábrázolás hiba logolás Kódgenerátor processzor függő kód Gépi kód függő optimalizálás processzor függő kód Izsó Tamás Fordítás Optimalizálás / 7

8 Lexikai elemző Fordító részei Optimalizálás 1 double calc( double initial, double rate ) 2 { 3 double position; 4 position = initial+rate*100; 5 return position; 6 } Izsó Tamás Fordítás Optimalizálás / 8

9 Lexikai elemző double calc( double initial, double rate ) \n { \n double position; \n position = initial+ rate*100; \n return position; \n } \n DOUBLE ID calc "(" DOUBLE ID initial "," DOUBLE ID rate ")" "{" DOUBLE ID position ";" ID position "=" ID position "+" ID rate "*" NUMBER 100 ";" "RETURN" ID position ";" Izsó Tamás Fordítás Optimalizálás / 9

10 Token token szintaktikai kategória, csoport; élő nyelvben: ige, főnév, melléknév, tárgy; programozási nyelvekben: egész konstans, valós konstans, string, azonosító, operátor, kulcsszó, írásjelek; lexéma konkrét megvalósulása egy tokennek; attribútum tokenhez rendelt tulajdonság, érték elmaradhat (pl. T_FOR) típus egész konstans, valós konstans, sztring értéke; méret; élettartam; láthatóság stb. nem token: szóköz, megjegyzés Izsó Tamás Fordítás Optimalizálás / 10

11 Blokk struktúra Fordító részei Optimalizálás i n t main ( ) { i n t a=1; i n t b=1; { i n t a=3; p r i n t f ("%d %d \ n ", a, b ) ; } } { i n t b=4; p r i n t f ("%d %d \ n ", a, b ) ; } p r i n t f ("%d %d \ n ", a, b ) ; r e t u r n 0; Izsó Tamás Fordítás Optimalizálás / 11

12 Szimbólum tábla a tokenizálás során keletkezett azonosítókat, és az azokhoz kapcsolódó attribútumokat tárolja; megőrzi a blokkstruktúrát; OOP esetén a származtatást; gyorsan lehet benne keresni; sokszor a kulcsszavakat is tartalmazza (pl. for, while). Izsó Tamás Fordítás Optimalizálás / 12

13 Szintaktikia analízis lexikai elemzés után tokenek sorozatát kapjuk; cél a program szerkezetének az értelmezése a környezetfüggetlen nyelvtani szabályok (context-free grammar CFG) alapján (műveletek, precedencia); cél a hibák felderítése; absztrakt szintaxisfa (abstract syntax tree AST) elkészítése. Izsó Tamás Fordítás Optimalizálás / 13

14 Szintaktikia analízisre eredménye function ident calc paramlist body ident initial paramlist declist stmtlist ident rate end ident position end = stmtlist ident position + RETURN end ident initial * NUM 100 ident rate NUM 100 Izsó Tamás Fordítás Optimalizálás / 14

15 Szemantikai analízis célja Olyan hibák felderítése, amit a CFG-ben nehéz, vagy nem lehet megadni. További információk gyűjtése. 1 extern void f ( i n t n ) ; 2 double calc ( ) 3 { i n t p1, p2 ; 4 i n t i, j ; p1 = p1 + i ; / OK / 7 p1 = p1 + p2 ; / Hiba / 8 i f ( f ( p1 ) ) / Hiba f ( ) void / 9 { 10 i = j [ 2 ] ; / Hiba / 11 i = j [ p1 ] ; / OK / 12 } 13 / Nincs visszatérési érték / 14 } Izsó Tamás Fordítás Optimalizálás / 15

16 Miért használunk közbenső kódot (Intermediate reprezentáció) Assembly IR előny alkalmas az optimalizálásra; hátrány gépfüggő; hátrány minden egyes processzorra újra kellene írni az optimalizálót. előny alkalmas az optimalizálásra; előny gépfüggetlen. Izsó Tamás Fordítás Optimalizálás / 16

17 IR fajtái Forrás program és a gépi kód közötti átmenet. Magas szintű eredeti program visszaállítható (kivétel megjegyzések, tagolások). Felhasználják szintaxis vezérelt editorokban, pretty printing funkciókban. (pl. AST). A parser a fordításnál ezt állítja elő; Alacsony szintű minden sora majdnem egy gépi utasításra fordítható; Közepes szintű bizonyos struktúrákat megöriznek a jobb optimalizálás érdeképen. Például a magasszintű vezérlési szerkezeteket vagy index operátorokat tartalmaznak. Reprezentáció: gráf alapú (AST, vezérlés-áram gráf, adatáram gráf) ; lineáris; vegyes. Izsó Tamás Fordítás Optimalizálás / 17

18 Intermediate Language (IL) IL a közbenső ábrázolás (IR) nyelvtani szabályait tartalmazza minden fordító saját IL-t használ, akár többet is; IL = magasszintű assembly nyelv felhasználható regiszterek száma nincs korlátozva; assembly nyelv szintű vezérlési szerkezetek gépi utasításokat használnak, de egyes utasítások lehetnek magasszintűek is pl. call több assembly utasításra fordul legtöbb IL utasítás egy gépi utasításra fordítható Izsó Tamás Fordítás Optimalizálás / 18

19 Lineáris Intermediate Language típusai egy operandusú (stack szervezésű gépek pl. JVM); két operandusú x x < op > y ; három operandusú z x < op > y ; push 2 push y mul push x sub egy operandusú x 2 y t1 = 2 t2 = y t1 = t1 t2 t3 = x t3 = t3 t1 két operandusú t1 = 2 t2 = y t3 = t1 t2 t4 = x t5 = t4 t1 három operandusú Izsó Tamás Fordítás Optimalizálás / 19

20 Adatfüggőségi gráf 1. loadai r 0, 0 r 1 2. add r 1, r 1 r 1 3. loadai r 0, 8 r 2 4. mult r 1, r 2 r 1 5. loadai r 0, 16 r 2 6. mult r 1, r 2 r 1 7. loadai r 0, 24 r 2 8. mult r 1, r 2 r 1 9. storeai r 1 r 0, ILOC kód 9 Izsó Tamás Fordítás Optimalizálás / 20

21 Quadruples (négyes) Művelet Op1 Op2 Eredmény loadi 2 t 1 load y t 2 mult t 1 t 2 t 3 load x t 4 sub t 4 t 3 t 5 Izsó Tamás Fordítás Optimalizálás / 21

22 Triples (hármas) Fordító részei Optimalizálás A triples, indirekt triples ábrázolás csak ciklus és elágazásmentes, azaz alapblokkban alkalmazható. (Alapblokk definíciója később lesz.) Zárójelben írt érték az adott utasítás eredményére hivatkozik. (1) loadi 2 (2) load y (3) mult (1) (2) (4) load x (5) sub (4) (3) Hátránya, hogy a sorok átrendezése nehézkes. Izsó Tamás Fordítás Optimalizálás / 22

23 Indirekt triples Fordító részei Optimalizálás Zárójelbe írt érték az adott utasításhoz rendelt [j] indexen keresztül hivatkozik arra az utasításra, melynek az eredményét használja. Ha az utasítás sorrendje változik, akkor az index értéke is módosul. Index sorszám [1] (1) loadi 2 [2] (2) load y [3] (3) mult (1) (2) [4] (4) load x [5] (5) sub (4) (3) Izsó Tamás Fordítás Optimalizálás / 23

24 SSA static single assignment x... y... while ( x < k ) { x x + 1 ; y y + x ; } x 0... y 0... i f ( x 0 k ) goto next loop : x 1 φ(x 0, x 2 ) ; y 1 φ(y 0, y 2 ) ; x 2 x ; y 2 y 1 + x 2 ; i f ( x 2 < k ) goto loop next :.... Izsó Tamás Fordítás Optimalizálás / 24

25 SSA static single assignment Fordítókkal foglalkozó tudomány a változó definiciós pontjának (def) azt a helyet nevezi, ahol a változó értéket kap. Egy változóhoz több helyen is rendelhetünk új értéket. A kifejezések jobb oldalán meghivatkozott változó a változó használatát (use) jelenti. SSA esetén a többször definiált változókat a definiálás helyén egy egyedi indexszel különböztetjük meg. A változók használatakor megmondjuk, hogy a használt (use) változó melyik utasításban kapott értéket, azaz hol definiáltuk. Ha a használt változó definiciós pontja nem egyértelmű, mert a program különböző ágán eljutva, több ágon is definiáltuk a változót, akkor ennek leírására egy φ függvényt használunk. 1 A φ függvény megadja, hogy a változó értéke mely pontokban kaphatott értéket. 2 A φ függvény a fordítónak szól, belőle kód nem keletkezik. 3 A φ függvény paramétere minimum kettő, maximum akármennyi, de csak indexben eltérő változó lehet. Izsó Tamás Fordítás Optimalizálás / 25

26 Példa 3 operandusú IL-re int a; int b; t0 = b + c; int c; a = t0 + d; int d; t1 = a * a; a = b + c + d; t2 = b * b; b = a * a + b * b b = t1 + t2; temporális változók: t0, t1, t2 Izsó Tamás Fordítás Optimalizálás / 26

27 3 operandusú Intermediate Language egy utasításnak maximum 3 operandusa lehet; összetett kifejezésnél temporális változókat kell bevezetni; van két operandusú utasítás, pl. t1 = 5; Izsó Tamás Fordítás Optimalizálás / 27

28 Intermediate Language utasításkészlete Értékadás: var = constant; var = string ; var1 = var2; var = label ; Izsó Tamás Fordítás Optimalizálás / 28

29 Intermediate Language utasításkészlete Aritmetikai operátorok: var1 = var2 op var3; var1 = constant op var2; var1 = var2 op constant; var = constant1 op constant2; operátorok +.../,%,,& stb; Izsó Tamás Fordítás Optimalizálás / 29

30 Intermediate Language utasításkészlete Logikai értékek 0 hamis; nem 0 igaz. Logikai műveletek: var3 = var2 == var1; var3 = var2 < var1; var3 = var2 var1; var3 = var2 && var1; a többi logikai kifejezést ezek segítségével kell előállítani. Izsó Tamás Fordítás Optimalizálás / 30

31 Intermediate Language Vezérlésátadó utasítások: névvel rendelkező cimke L1: Goto label; IfZ value Goto label; IfZ csak a Goto utasítással együtt fordulhat elő; Izsó Tamás Fordítás Optimalizálás / 31

32 Intermediate Language Függvényhívó utasítás: LCall L1 esetén a hívott függvény címe fordítási időben ismert. ACall t1 t1 függvény címe futáskor áll elő (pl. virtuális függvénytábla). LCall L1; t1 = LCall L1; ACall t1; t0 = ACall t1; Izsó Tamás Fordítás Optimalizálás / 32

33 Intermediate Language Függvény definiálás: BeginFunc n; Függvény törzsének a kezdete, ahol n a lokális adatok számára szükséges hely bájtokan. EndFunc függvény vége; Return t1 visszatérés visszaadott értékkel; Return visszatérés a függvényből. Izsó Tamás Fordítás Optimalizálás / 33

34 Intermediate Language Memória címzés: t1 = t2 t1 = (t2+offset) t1 = t2 (t1 + offset ) = t2 offset negatív vagy pozitív egész érték. Tömb: t1[t2] = t3 t3 = t1[t2] az index operátor a C-ben megismert módon működik. Izsó Tamás Fordítás Optimalizálás / 34

35 Példa 3 operandusú IL-re int x; int y; L0: t0 = x < y; t1 = x == y; while(x<=y) { t2 = t0 t1; x = x + 2; IfZ t2 Goto L1; } x = x + 2; Goto L0 L1: y = x; y = x; Izsó Tamás Fordítás Optimalizálás / 35

36 Section 2 Optimalizálás Izsó Tamás Fordítás Optimalizálás / 36

37 Miért van szükség optimalizálásra AST-ből IR-re való egyszerű áttérés redundanciát okoz; egyes részszámításokat fel lehet gyorsítani; közös részeket össze lehet vonni; felesleges részeket ki lehet hagyni mert a programozók lusták for ciklusba, vagy a feltétel részbe írnak a ciklus végrehajtása során nem változó kifejezéseket; Izsó Tamás Fordítás Optimalizálás / 37

38 A kód optimalizálása kihívást jelent Cél: az eredményeket helyességét ne befolyásolja ; a lehető leghatékonyabb IR-t állítsa elő; ne tartson sok ideig. Valóság: néha hibát okoz a kód futásánál; sokáig tart a kódgenerálás. Legtöbb optimalizálási algoritmus NP-teljes, ha egyáltalán létezik megoldás. Izsó Tamás Fordítás Optimalizálás / 38

39 A program szemamtikáját nem befolyásoló optimalizálás felesleges temporális változók megszüntetése; fordítási időben ismert konstans kifejezések kiszámítása; ciklusban lévő invariáns részek kiemelése; ellenpéldaként meg lehet említeni (szemantikát befolyásoló optimalizálás) a buborékos rendezés kicserélése gyorsrendezésre. Izsó Tamás Fordítás Optimalizálás / 39

40 Példa IR optimalizálására t0 = x + x; int x; t1 = y; int y; b1 = t0 < t1; bool b1; bool b2; t2 = x + x; bool b3; t3 = y; b2 = t2 == t3; b1 = x + x < y; b2 = x + x == y; t4 = x + x; b3 = x + x > y; t5 = y; b3 = t5 < t4; Izsó Tamás Fordítás Optimalizálás / 40

41 Példa IR optimalizálására t0 = x + x; int x; t1 = y; int y; b1 = t0 < t1; bool b1; bool b2; t2 = x + x; bool b3; t3 = y; b2 = t2 == t3; b1 = x + x < y; b2 = x + x == y; t4 = x + x; b3 = x + x > y; t5 = y; b3 = t5 < t4; Izsó Tamás Fordítás Optimalizálás / 41

42 Példa IR optimalizálására t0 = x + x; int x; t1 = y; int y; b1 = t0 < t1; bool b1; bool b2; t2 = x + x; bool b3; t3 = y; b2 = t2 == t3; b1 = x + x < y; b2 = x + x == y; t4 = x + x; b3 = x + x > y; t5 = y; b3 = t5 < t4; Izsó Tamás Fordítás Optimalizálás / 42

43 Példa IR optimalizálására t0 = x + x; int x; t1 = y; int y; b1 = t0 < t1; bool b1; bool b2; t2 = x + x; bool b3; t3 = y; b2 = t0 == t1; b1 = x + x < y; b2 = x + x == y; t4 = x + x; b3 = x + x > y; t5 = y; b3 = t1 < t0; Izsó Tamás Fordítás Optimalizálás / 43

44 Példa IR optimalizálására t0 = x + x; int x; t1 = y; int y; b1 = t0 < t1; bool b1; bool b2; bool b3; b2 = t0 == t1; b1 = x + x < y; b2 = x + x == y; b3 = x + x > y; b3 = t1 < t0; Izsó Tamás Fordítás Optimalizálás / 44

45 Lusta programozó munkájának az optimalizálása L0: while( x < y+ z ) { t0 = y + z; x = x - y; t1 = x < t0; } IfZ t1 Goto L1 x = x - y; Goto L0; L1: Izsó Tamás Fordítás Optimalizálás / 45

46 Lusta programozó munkájának az optimalizálása L0: while( x < y+ z ) { t0 = y + z; x = x - y; t1 = x < t0; } IfZ t1 Goto L1 x = x - y; Goto L0; L1: Izsó Tamás Fordítás Optimalizálás / 46

47 Lusta programozó munkájának az optimalizálása t0 = y + z; while( x < y+ z ) { L0: x = x - y; t1 = x < t0; } IfZ t1 Goto L1 x = x - y; Goto L0; L1: Izsó Tamás Fordítás Optimalizálás / 47

48 Lusta programozó munkájának az optimalizálása t0 = y + z; while( x < y+ z ) { L0: x = x - y; t1 = x < t0; } IfZ t1 Goto L1 x = x - y; Goto L0; L1: Izsó Tamás Fordítás Optimalizálás / 48

49 IR megjelenítése Fordító részei Optimalizálás BeginFunc 40; t0 = LCall ReadInteger ; a = t0 ; t1 = LCall ReadInteger ; b = t1 ; L0 : t2 = 0; t3 = b == t2 ; t4 = 0; t5 = t3 == t4 ; I f Z t5 Goto L1 ; c = a ; a = b ; t6 = c % a ; b = t6 ; Goto L0 ; L1 : PushParam a ; LCall P r i n t I n t ; PopParams 4; EndFunc ; Izsó Tamás Fordítás Optimalizálás / 49

50 IR megjelenítése Fordító részei Optimalizálás BeginFunc 40; t0 = LCall ReadInteger ; a = t0 ; t1 = LCall ReadInteger ; b = t1 ; L0 : t2 = 0; t3 = b == t2 ; t4 = 0; t5 = t3 == t4 ; I f Z t5 Goto L1 ; c = a ; a = b ; t6 = c % a ; b = t6 ; Goto L0 ; L1 : PushParam a ; LCall P r i n t I n t ; PopParams 4; EndFunc ; Izsó Tamás Fordítás Optimalizálás / 50

51 IR megjelenítése Fordító részei Optimalizálás t0 = LCall ReadInteger ; a = t0 ; t1 = LCall ReadInteger ; b = t1 ; L0 t2 = 0; t3 = b == t2 ; t4 = 0; t5 = t3 == t4 ; I f Z t5 Goto L1 ; L1 c = a ; a = b ; t6 = c % a ; b = t6 ; Goto L0 ; PushParam a ; LCall P r i n t I n t ; PopParams 4; Izsó Tamás Fordítás Optimalizálás / 51

52 Alapblokk (Basic Block) az IR utasításainak a lineáris sorozata; egy belépési ponttal rendelkezik; egy kilépési pontja van, és ez a sorozat végén található; olyan utasítások sorozata, amelyek a blokk végrehajtása során biztosan végrehajtódnak. Alapblokkok kezdete és vége : a program első utasítása az első blokk kezdete; minden olyan hely, amelyre távolról át lehet adni a vezérlést (Goto, LCall, ACall ) egy új blokk kezdetét jelenti; ugró utasítás csak a blokk végén lehet; minden blokk vége után egy új blokk kezdődik (kivéve az utolsót). Izsó Tamás Fordítás Optimalizálás / 52

53 Vezérlési folyamatgráf Control Flow Gráf (CFG) irányított gráf csomópontjai az alapblokkok halmaza; az élek a blokkok végpontjából egy másik blokk belépési pontjára mutatnak; egy csomópontból több él léphet ki; egy csomópontba több alapblokkból is el lehet jutni. Izsó Tamás Fordítás Optimalizálás / 53

54 Optimalizálás fajtái lokális egy blokkon belül; globális teljes vezérlési folyamatgráfra. Izsó Tamás Fordítás Optimalizálás / 54

55 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = t1; t0 = 137; y = t0; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

56 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = t1; t0 = 137; y = t0; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

57 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = t1; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

58 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = t1; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

59 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

60 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = t2; Izsó Tamás Fordítás Optimalizálás / 55

61 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = y; Izsó Tamás Fordítás Optimalizálás / 55

62 Lokális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = y; Izsó Tamás Fordítás Optimalizálás / 55

63 Globális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = y; Izsó Tamás Fordítás Optimalizálás / 56

64 Globális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = y; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = y; Izsó Tamás Fordítás Optimalizálás / 56

65 Globális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = 137; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = 137; Izsó Tamás Fordítás Optimalizálás / 56

66 Globális optimalizálás i n t f ( i n t x ) { i n t y ; i n t z ; y = 137; i f ( x == 0) z = y ; else x = y ; } t1 = y; z = 137; t0 = 137; y = 137; IfZ x Goto L0; end t2 = y; x = 137; Izsó Tamás Fordítás Optimalizálás / 56

67 Ismétlődő kifejezések kiszűrése int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = Call Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4 ; a = t3 ; t4 = a + b ; c = t4 ; t5 = a + b ; PushParam t5 ; PushParam x ; Call set ; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 57

68 Ismétlődő kifejezések kiszűrése int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = Call Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4 ; a = t3 ; t4 = a + b ; c = t4 ; t5 = a + b ; PushParam t5 ; PushParam x ; Call set ; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 57

69 Ismétlődő kifejezések kiszűrése int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = Call Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4 ; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4 ; PushParam t5 ; PushParam x ; Call set ; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 57

70 Ismétlődő kifejezések kiszűrése int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = Call Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4 ; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4 ; PushParam t5 ; PushParam x ; Call set ; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 57

71 Ismétlődő kifejezések kiszűrése Ha van két értékadás v1 = a op b v2 = a op b és az a és b operandusok értéke közben nem változik, akkor a következő transzformációt hajthatjuk végre v1 = a op b v2 = v1 Ezzel elhagyjuk az ismétlődő számításokat. lehetőséget teremtünk egy későbbi optimalizáláshoz. Izsó Tamás Fordítás Optimalizálás / 58

72 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam x ; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

73 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam x ; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

74 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

75 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = a + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

76 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = t3 + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

77 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = t3 + b ; c = t4 ; t5 = t4; PushParam t5 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

78 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = t3 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

79 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = t3 ; t4 = t3 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

80 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

81 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = c; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

82 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

83 Másolat továbbterjedés int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 59

84 Másolat továbbterjedés angol szakirodalomban a Copy Propagation kifejezés él; ha lehet, akkor máshol is az eredeti példányra szeretnénk hivatkozni; Ha van egy értékadás v1 = v2 és a továbbiakban a v1 és v2 operandusok értéke nem változik, akkor a következő transzformációt hajthatjuk végre lecseréljük: a = v1 a = v2 Ez a transzformáció később a segítségünkre lesz. Izsó Tamás Fordítás Optimalizálás / 60

85 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

86 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; x = t1 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

87 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

88 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t3 = 4; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

89 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

90 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; a = 4 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

91 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

92 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t4 = 4 + b ; c = t4 ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

93 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t4 = 4 + b ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

94 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t4 = 4 + b ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

95 Felesleges utasítások törlése (Dead Code Elimination) int* x; int a; int b; int c; x = new int(2); a = 4; c = a + b; set(x,a + b); t0 = 4 ; PushParam t0 ; t1 = LCall Alloc ; PopParams 4 ; t2 = 2 ; *(t1) = t2 ; t4 = 4 + b ; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 61

96 Felesleges utasítások törlése Értékadás bal oldalán található változó akkor felesleges, ha az értékét a későbbiekben nem használjuk fel. Ha az értékadás bal oldalán található változó felesleges, akkor az egész utasítást el lehet hagyni. Izsó Tamás Fordítás Optimalizálás / 62

Fordító Optimalizálás

Fordító Optimalizálás Fordító Optimalizálás Kód visszafejtés. Izsó Tamás 2012. szeptember 27. Izsó Tamás Fordítás Optimalizálás / 1 Section 1 Fordító részei Izsó Tamás Fordítás Optimalizálás / 2 Irodalom Fordító részei Optimalizálás

Részletesebben

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

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 Fordító részei Kód visszafejtés. Izsó Tamás 2016. szeptember 29. Izsó Tamás Fordító részei / 1 Section 1 Fordító részei Izsó Tamás Fordító részei / 2 Irodalom Izsó Tamás Fordító részei / 3 Irodalom Izsó

Részletesebben

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

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 A fordítóprogramok szerkezete Forrásprogram Forrás-kezelő (source handler) Kódoptimalizálás Fordítóprogramok előadás (A,C,T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus

Részletesebben

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

sallang avagy Fordítótervezés dióhéjban Sallai Gyula sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak

Részletesebben

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX

Részletesebben

Java II. I A Java programozási nyelv alapelemei

Java II. I A Java programozási nyelv alapelemei Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve

Részletesebben

Programok értelmezése

Programok értelmezése Programok értelmezése Kód visszafejtés. Izsó Tamás 2016. szeptember 22. Izsó Tamás Programok értelmezése/ 1 Section 1 Programok értelmezése Izsó Tamás Programok értelmezése/ 2 programok szemantika értelmezése

Részletesebben

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

Fordítóprogramok. Aszalós László. 2009. szeptember 7. Fordítóprogramok Aszalós László 2009. szeptember 7. 1. Bemelegítés Honlap: www.inf.unideb.hu/ aszalos/diak.html (Fordítóprogramok, 2009) Jegymegajánló: utolsó hét előadásán. PótZH (csak gyakorlat) vizsgaidőszak

Részletesebben

Java programozási nyelv

Java programozási nyelv Java programozási nyelv 2. rész Vezérlő szerkezetek Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/23 Tartalomjegyzék

Részletesebben

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

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 A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)

Részletesebben

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

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},

Részletesebben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért

Részletesebben

Fordítás Kódoptimalizálás

Fordítás Kódoptimalizálás Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás 2016. október 20. Izsó Tamás Fordítás Kódoptimalizálás / 1 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó

Részletesebben

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban...

A kódgenerálás helye a fordítási folyamatban. Kódgenerálás I. (kifejezések és vezérlési szerkezetek) A kódgenerálás feladata. Ebben az előadásban... A kódgenerálás helye a fordítási folyamatban Forrásprogram Forrás-kezelő (source handler) Kódgenerálás I. (kifejezések és vezérlési szerkezetek) Fordítóprogramok előadás (A,C,T szakirány) 2008. őszi félév

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Tömbök (3. rész) Konstansok Kivételkezelés Tömbök 3. Többdimenziós tömbök Többdimenziós tömbök int a; Többdimenziós tömbök int a[5]; Többdimenziós tömbök

Részletesebben

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon 1. Template (sablon) 1.1. Függvénysablon Maximum függvény megvalósítása függvénynév túlterheléssel. i n l i n e f l o a t Max ( f l o a t a, f l o a t b ) { return a>b? a : b ; i n l i n e double Max (

Részletesebben

A C# programozási nyelv alapjai

A C# programozási nyelv alapjai A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet

Részletesebben

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

Programozási nyelvek a közoktatásban alapfogalmak II. előadás Programozási nyelvek a közoktatásban alapfogalmak II. előadás Szintaxis, szemantika BNF szintaxisgráf absztrakt értelmező axiomatikus (elő- és utófeltétel) Pap Gáborné. Szlávi Péter, Zsakó László: Programozási

Részletesebben

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.

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. Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző

Részletesebben

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása Tömbök kezelése Példa: Vonalkód ellenőrzőjegyének kiszámítása A számokkal jellemzett adatok, pl. személyi szám, adószám, taj-szám, vonalkód, bankszámlaszám esetében az elírásból származó hibát ún. ellenőrző

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Python Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása alatt

Részletesebben

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Programozás I. 3. előadás Tömbök a C#-ban Metódusok C#-ban Egyszerű programozási tételek Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Szoftvertechnológia

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

Programozási nyelvek (ADA)

Programozási nyelvek (ADA) Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)

Részletesebben

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

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 4. fejezet Fordítók felépítése Grafikus Processzorok Tudományos Célú Programozása Fordítók Kézzel assembly kódot írni nem érdemes, mert: Egyszerűen nem skálázik nagy problémákhoz arányosan sok kódot kell

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke

Részletesebben

1. Jelölje meg az összes igaz állítást a következők közül!

1. Jelölje meg az összes igaz állítást a következők közül! 1. Jelölje meg az összes igaz állítást a következők közül! a) A while ciklusban a feltétel teljesülése esetén végrehajtódik a ciklusmag. b) A do while ciklusban a ciklusmag után egy kilépési feltétel van.

Részletesebben

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

Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmizálás és adatmodellezés tanítása 1. előadás Algoritmus-leíró eszközök Folyamatábra Irányított gráf, amely csomópontokból és őket összekötő élekből áll, egyetlen induló és befejező éle van, az

Részletesebben

Fordítás Kódoptimalizálás

Fordítás Kódoptimalizálás Fordítás Kódoptimalizálás Kód visszafejtés. Izsó Tamás 2015. október 15. Izsó Tamás Fordítás Kódoptimalizálás / 1 Aktív változók Angol irodalomban a Live Variables kifejezést használják, míg az azt felhasználó

Részletesebben

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,

Részletesebben

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

Kifejezések. Kozsik Tamás. December 11, 2016 Kifejezések Kozsik Tamás December 11, 2016 Kifejezés versus utasítás C/C++: kifejezés plusz pontosvessző: utasítás kiértékeli a kifejezést jellemzően: mellékhatása is van például: értékadás Ada: n = 5;

Részletesebben

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

C programozás. 6 óra Függvények, függvényszerű makrók, globális és C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

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

Szemantikai elemzés. konzisztenciájának vizsgálata a szemantikai elemzés feladata lesz. Szemantikai elemzés A szintaktikai elemzés meghatározta az elemzend szöveg szintaxisfáját. szintaxisfa pontjaihoz olyan attribútumokat rendelünk, amelyek leírják az adott pont tulajdonságait. Ezeknek az

Részletesebben

OOP #14 (referencia-elv)

OOP #14 (referencia-elv) OOP #14 (referencia-elv) v1.0 2003.03.19. 21:22:00 Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. e-mail: aroan@ektf.hu web: http://aries.ektf.hu/~aroan OOP OOP_14-1 - E jegyzet

Részletesebben

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

Bánsághi Anna 2014 Bánsághi Anna 1 of 68 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 3. ELŐADÁS - PROGRAMOZÁSI TÉTELEK 2014 Bánsághi Anna 1 of 68 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja

Részletesebben

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

Occam 1. Készítette: Szabó Éva Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti

Részletesebben

Programozás C és C++ -ban

Programozás C és C++ -ban Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új

Részletesebben

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

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

A programozás alapjai

A programozás alapjai A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

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

Programozás II. 2. Dr. Iványi Péter Programozás II. 2. Dr. Iványi Péter 1 C++ Bjarne Stroustrup, Bell Laboratórium Első implementáció, 1983 Kezdetben csak precompiler volt C++ konstrukciót C-re fordította A kiterjesztés alapján ismerte fel:.cpp.cc.c

Részletesebben

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete

A szemantikus elemzés elmélete. Szemantikus elemzés (attribútum fordítási grammatikák) A szemantikus elemzés elmélete. A szemantikus elemzés elmélete A szemantikus elemzés elmélete Szemantikus elemzés (attribútum fordítási grammatikák) a nyelvtan szabályait kiegészítjük a szemantikus elemzés tevékenységeivel fordítási grammatikák Fordítóprogramok előadás

Részletesebben

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Bevezetés a programozásba II 5. Előadás: Másoló konstruktor, túlterhelés, operátorok Emlékeztető struct Vektor { int meret, *mut; Vektor(int meret); int szamlal(int mit); }; int Vektor::szamlal(int mit)

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály

Részletesebben

Szoftvertervezés és -fejlesztés I.

Szoftvertervezés és -fejlesztés I. Szoftvertervezés és -fejlesztés I. Operátorok Vezérlési szerkezetek Gyakorlás 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik.

Részletesebben

Apple Swift kurzus 3. gyakorlat

Apple Swift kurzus 3. gyakorlat Készítette: Jánki Zoltán Richárd Dátum: 2016.09.20. Apple Swift kurzus 3. gyakorlat Kollekciók: Tömb: - let array = [] - üres konstans tömb - var array = [] - üres változó tömb - var array = [String]()

Részletesebben

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

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS 2.ELŐADÁS A VB programozási nyelv Az Excel programozása 2 A VB programozási nyelv Adattípusok Adatok kezelése Vezérlőszerkezetek Adattípusok és műveletek Egész adattípusok

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 5. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 5. előadás Tömbök átméretezése public static void Resize( ref T[] array, int newsize ) Példa: int[] a=new int[20]; Array.Resize(ref a, 22); 2016. 10. 19.

Részletesebben

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Javascript Változók Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai): Név Érték Típus Memóriacím A változó értéke (esetleg más attribútuma is) a program futása

Részletesebben

C programozási nyelv

C programozási nyelv C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György

Részletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. Dr. Iványi Péter Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(

Részletesebben

Objektumorientált Programozás VI.

Objektumorientált Programozás VI. Objektumorientált Programozás Metódusok Paraméterek átadása Programozási tételek Feladatok VI. ÓE-NIK, 2011 1 Hallgatói Tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő

Részletesebben

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

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva! A PL/SQL alapelemei Karakterkészlet Az angol ABC kis- és nagybetűi: a-z, A-Z Számjegyek: 0-9 Egyéb karakterek: ( ) + - * / < > =! ~ ^ ; :. ' @ %, " # $ & _ { }? [ ] Szóköz, tabulátor, kocsivissza A kis-

Részletesebben

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás

Programozás BMEKOKAA146. Dr. Bécsi Tamás 2. előadás Programozás BMEKOKAA146 Dr. Bécsi Tamás 2. előadás Szintaktikai alapok Alapvető típusok, ismétlés C# típus.net típus Méret (byte) Leírás byte System.Byte 1Előjel nélküli 8 bites egész szám (0..255) char

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Szoftverminőségbiztosítás

Szoftverminőségbiztosítás NGB_IN003_1 SZE 2014-15/2 (10) Szoftverminőségbiztosítás Struktúra alapú (white-box) technikák A struktúrális tesztelés Implementációs részletek figyelembevétele Tesztelési célok -> lefedettség Implicit

Részletesebben

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

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor

Részletesebben

Algoritmizálás + kódolás C++ nyelven és Pascalban

Algoritmizálás + kódolás C++ nyelven és Pascalban Algoritmizálás + kódolás nyelven és ban Motiváció A Programozási alapismeretek tárgyban az algoritmizáláshoz struktogramot, a kódoláshoz nyelvet használunk, a Közismereti informatikában (a közoktatásban

Részletesebben

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

Mintavételes szabályozás mikrovezérlő segítségével Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés

Részletesebben

C programozás. 1 óra Bevezetés

C programozás. 1 óra Bevezetés C programozás 1 óra Bevezetés A C nyelv eredete, fő tulajdonságai 1. Bevezető C nyelv alapelemei többsége a BCPL (Basic Combined Programming Language {1963}) Martin Richards B nyelv Ken Thompson {1970}

Részletesebben

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,

Részletesebben

A JavaScript főbb tulajdonságai

A JavaScript főbb tulajdonságai JavaScript alapok A JavaScript főbb tulajdonságai Script nyelv azaz futás közben értelmezett, interpretált nyelv Legfőbb alkalmazási területe: a HTML dokumentumok dinamikussá, interaktívvá tétele Gyengén

Részletesebben

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

Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente

Részletesebben

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >> I. Alapok Interaktív shell-ben vagy shell-scriptben megadott karaktersorozat feldolgozásakor az első lépés a szavakra tördelés. A szavakra tördelés a következő metakarakterek mentén zajlik: & ; ( ) < >

Részletesebben

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

Programozás alapjai. 2. előadás 2. előadás Általános Informatikai Tanszék A számítógépes feladatmegoldás eszközei Adatok (Amiken utasításokat hajtunk végre) Utasítások (Amiket végrehajtunk) Program struktúra Adatok Konstans (a programon

Részletesebben

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Utasítások. Excel VII. Visual Basic programozás alapok. A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok Alkalmazott Informatikai Intézeti Tanszék MŰSZAKI INFORMATIKA Dr.Dudás László 0. Excel VII. Visual Basic programozás alapok A Visual Basic-kel megoldható feladatok típusai Objektumok, változók Alprogramok

Részletesebben

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás?

Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések. 1. Mi a programozás? Bevezetés Kinek szól a könyv? A könyv témája A könyv felépítése Mire van szükség a könyv használatához? A könyvben használt jelölések Forráskód Hibajegyzék p2p.wrox.com xiii xiii xiv xiv xvi xvii xviii

Részletesebben

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje 1. Alapfogalmak 1.1. Algoritmus Az algoritmus olyan elemi műveletekből kompozíciós szabályok szerint felépített összetett művelet, amelyet megadott feltételt teljesítő bemeneti adatra végrehajtva, a megkívánt

Részletesebben

Kiterjesztések sek szemantikája

Kiterjesztések sek szemantikája Kiterjesztések sek szemantikája Példa D Integer = {..., -1,0,1,... }; D Boolean = { true, false } D T1... T n T = D T 1... D Tn D T Az összes függvf ggvény halmaza, amelyek a D T1,..., D Tn halmazokból

Részletesebben

A C programozási nyelv IV. Deklaráció és definíció

A C programozási nyelv IV. Deklaráció és definíció A C programozási nyelv IV. Deklaráció és definíció Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv IV. (Deklaráció és definíció) CBEV4 / 1 Definíció és deklaráció Definíció: meghatározza

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

C++ programozási nyelv Konstruktorok-destruktorok C++ programozási nyelv Konstruktorok-destruktorok Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. szeptember A C++ programozási nyelv Soós Sándor 1/20 Tartalomjegyzék

Részletesebben

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

Eljárások és függvények Eljárások és függvények Jegyzet Összeállította: Faludi Anita 2012. Bevezetés Ez a jegyzet elsősorban azoknak a diákoknak készült, akiket tanítok, ezért a jegyzet erőteljesen hiányos. Az olvasó egy percig

Részletesebben

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3) Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Mit tudunk már? Típus fogalma char, int, float, double változók deklarációja operátorok (aritmetikai, relációs, logikai,

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

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

Segédanyagok. Formális nyelvek a gyakorlatban. Szintaktikai helyesség. Fordítóprogramok. Formális nyelvek, 1. gyakorlat Formális nyelvek a gyakorlatban Formális nyelvek, 1 gyakorlat Segédanyagok Célja: A programozási nyelvek szintaxisának leírására használatos eszközök, módszerek bemutatása Fogalmak: BNF, szabály, levezethető,

Részletesebben

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott.

Mindenki abból a három tantárgyból tesz szigorlatot, amelyet hallgatott. Szigorlati témakörök az Informatika (szigorlat) (BMEVIAU0181) c. tantárgyat felváltó Informatika (BMEGERIEEIS) tantárgyból az okleveles energetikai mérnökképzés (2N-0E) hallgatói számára 1. tantárgy: Programozás

Részletesebben

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása

A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása A verem (stack) A verem egy olyan struktúra, aminek a tetejére betehetünk egy új (vagy sorban több) elemet a tetejéről kivehetünk egy (vagy sorban több) elemet A verem felhasználása Függvény visszatérési

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem

C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real

Részletesebben

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)

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 Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Haladó Fordítóprogramok

Haladó Fordítóprogramok Haladó Fordítóprogramok Követelmények Horváth Gábor xazax.hun@gmail.com xazax.web.elte.hu 3-5 oldalas esszé, téma bemutatása, minimális előismeretet feltételezve vagy demo program Témák előadás közben

Részletesebben

Már megismert fogalmak áttekintése

Már megismert fogalmak áttekintése Interfészek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Polimorfizmus áttekintése Interfészek Interfészek kiterjesztése Eseménykezelési módszerek 2 Már megismert fogalmak

Részletesebben

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

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.05. -1- Függvények C program egymás mellé rendelt függvényekből

Részletesebben

Stack Vezérlés szerkezet Adat 2.

Stack Vezérlés szerkezet Adat 2. Stack Vezérlés szerkezet Adat 2. Kód visszafejtés. Izsó Tamás 2013. november 14. Izsó Tamás Stack Vezérlés szerkezet Adat 2./ 1 Változó típusú paraméterekátadása 1. #include < s t d i o. h> int64 myfunc

Részletesebben

Modellező eszközök, kódgenerálás

Modellező eszközök, kódgenerálás Modellező eszközök, kódgenerálás Budapesti Műszaki és Gazdaságtudományi Egyetem Hibatűrő Rendszerek Kutatócsoport Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek

Részletesebben

Pénzügyi algoritmusok

Pénzügyi algoritmusok Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító

Részletesebben

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

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés A C programozási nyelv V. Struktúra Dinamikus memóriakezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv V. (Struktúra, memóriakezelés) CBEV5 / 1 A struktúra deklarációja 1.

Részletesebben

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán

Részletesebben

Készítette: Nagy Tibor István

Készítette: Nagy Tibor István Készítette: Nagy Tibor István Operátorok Műveletek Egy (vagy több) műveleti jellel írhatók le A műveletet operandusaikkal végzik Operátorok fajtái operandusok száma szerint: egyoperandusú operátorok (pl.:

Részletesebben

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

Programozás alapjai. 5. előadás 5. előadás Wagner György Általános Informatikai Tanszék Cserélve kiválasztásos rendezés (1) A minimum-maximum keresés elvére épül. Ismétlés: minimum keresés A halmazból egy tetszőleges elemet kinevezünk

Részletesebben

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.

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. Bisonc++ tutorial Dévai Gergely A Bisonc++ egy szintaktikuselemz -generátor: egy környezetfüggetlen nyelvtanból egy C++ programot generál, ami egy tokensorozat szintaktikai helyességét képes ellen rizni.

Részletesebben

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

Programozás II. 4. Dr. Iványi Péter Programozás II. 4. Dr. Iványi Péter 1 inline függvények Bizonyos függvények annyira rövidek, hogy nem biztos hogy a fordító függvényhívást fordít, hanem inkább az adott sorba beilleszti a kódot. #include

Részletesebben

Vezérlésfolyam gráf és X86 utasításkészlet

Vezérlésfolyam gráf és X86 utasításkészlet Vezérlésfolyam gráf és X86 utasításkészlet Kód visszafejtés. Izsó Tamás 2016. november 3. Izsó Tamás Vezérlésfolyam gráf és X86 utasításkészlet / 1 Intervallum algoritmus Procedure Intervals(G={N, E, h})

Részletesebben

Bevezetés a programozásba. 9. Előadás: Rekordok

Bevezetés a programozásba. 9. Előadás: Rekordok Bevezetés a programozásba 9. Előadás: Rekordok ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double terulet(double

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi. Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód

Részletesebben