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 szeptember 27. 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 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 / 5

6 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 / 6

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

8 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 / 8

9 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 / 9

10 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 / 10

11 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 / 11

12 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 / 12

13 Szintaktikia analízisre példa function ident main 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 / 13

14 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 / 14

15 Miért használunk közbenső kódot (Intermediate reprezentáció) AST Assembly IR előny gépfüggetlen; hátrány túl magaszintű. 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 / 15

16 Intermediate Language (IL) IL a közbenső ábrázolás (IR) nyelvtani szabályait tartalmazza minden fordító saját IL-t használ; 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 / 16

17 Intermediate Reprezentáció 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 / 17

18 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 / 18

19 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 / 19

20 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 / 20

21 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 / 21

22 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 / 22

23 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 / 23

24 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 / 24

25 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 / 25

26 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 / 26

27 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 / 27

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

29 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 / 29

30 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 bibát okoz a kód futásánál; sokáig tart a kódgenerálás. Legtöbb optimalizálási algoritmusok NP-teljes, ha egyáltalán létezik megoldás. Izsó Tamás Fordítás Optimalizálás / 30

31 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 / 31

32 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 / 32

33 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 / 33

34 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 / 34

35 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 / 35

36 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 / 36

37 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 / 37

38 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 / 38

39 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 / 39

40 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 / 40

41 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 / 41

42 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 / 42

43 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 / 43

44 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 / 44

45 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 / 45

46 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 / 46

47 Lokális optimalizálás i n t main ( ) { 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 / 47

48 Lokális optimalizálás i n t main ( ) { 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 / 47

49 Lokális optimalizálás i n t main ( ) { 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 / 47

50 Lokális optimalizálás i n t main ( ) { 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 / 47

51 Lokális optimalizálás i n t main ( ) { 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 / 47

52 Lokális optimalizálás i n t main ( ) { 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 / 47

53 Lokális optimalizálás i n t main ( ) { 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 / 47

54 Lokális optimalizálás i n t main ( ) { 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 / 47

55 Globális optimalizálás i n t main ( ) { 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 / 48

56 Globális optimalizálás i n t main ( ) { 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 / 48

57 Globális optimalizálás i n t main ( ) { 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 / 48

58 Globális optimalizálás i n t main ( ) { 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 / 48

59 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 / 49

60 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 / 49

61 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 / 49

62 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 / 49

63 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 / 50

64 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 / 51

65 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 / 51

66 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 / 51

67 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 / 51

68 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 / 51

69 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 / 51

70 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 / 51

71 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 / 51

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 = 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 / 51

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 = 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 / 51

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 = 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 / 51

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 = 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 / 51

76 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 / 52

77 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 / 53

78 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 / 53

79 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 / 53

80 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 / 53

81 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 / 53

82 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 / 53

83 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 / 53

84 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 / 53

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 ; t4 = 4 + b ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 53

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 ; t4 = 4 + b ; t5 = t4; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 53

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 ; t4 = 4 + b ; PushParam t4 ; PushParam t1; Call set; PopParams 8 ; Izsó Tamás Fordítás Optimalizálás / 53

88 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 / 54

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Programozási nyelvek a közoktatásban alapfogalmak I. előadás Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)

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

C programozási nyelv Pointerek, tömbök, pointer aritmetika

C programozási nyelv Pointerek, tömbök, pointer aritmetika C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek

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

PE/COFF fájl formátum

PE/COFF fájl formátum PE/COFF fájl formátum Kód visszafejtés. Izsó Tamás 2013. december 5. Izsó Tamás PE/COFF fájl formátum/ 1 Szimbólumtábla A programozási nyelvekben az típusokra, adatokra, függvényekre, ugrási címekre szimbólikus

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

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

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

OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj.

OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39:00. Eszterházy Károly Főiskola Információtechnológia tsz. Hernyák Zoltán adj. OOP #1 (Bevezetés) v1.0 2003.03.07. 18:39: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_01-1 - E jegyzet másolata

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

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok

1. Egyszerű (primitív) típusok. 2. Referencia típusok II. A Java nyelv eszközei 1. Milyen eszközöket nyújt a Java a programozóknak Korábban már említettük, hogy a Java a C nyelvből alakult ki, ezért a C, C++ nyelvben járatos programozóknak nem fog nehézséget

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

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb

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

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

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

Bevezetés. Dr. Iványi Péter Bevezetés Dr. Iványi Péter Programozási készség Számos munka igényel valamilyen szintű programozási készséget Grafikus a képfeldolgozót, Zenész a szintetizátort, Programozó a számítógépet programozza.

Részletesebben

3. Gyakorlat Ismerkedés a Java nyelvvel

3. Gyakorlat Ismerkedés a Java nyelvvel 3. Gyakorlat Ismerkedés a Java nyelvvel Parancssori argumentumok Minden Java programnak adhatunk indításkor paraméterek, ezeket a program egy tömbben tárolja. public static void main( String[] args ) Az

Részletesebben

Objektumorientált paradigma és a programfejlesztés

Objektumorientált paradigma és a programfejlesztés Objektumorientált paradigma és a programfejlesztés Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján Objektumorientált

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

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai A programozás alapjai 1 1. előadás Híradástechnikai Tanszék Amiről szólesz: A tárgy címe: A programozás alapjai A számítógép részegységei, alacsony- és magasszintű programnyelvek, az imperatív programozási

Részletesebben

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

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

Részletesebben

FORDÍTÓPROGRAMOK. MKSA3144F kidolgozott tételek. 0.6 -ás verzió. 2006 január 21., Domján Tamás

FORDÍTÓPROGRAMOK. MKSA3144F kidolgozott tételek. 0.6 -ás verzió. 2006 január 21., Domján Tamás FORDÍTÓPROGRAMOK MKSA3144F kidolgozott tételek 0.6 -ás verzió 2006 január 21., Domján Tamás A dokumentum alapja egy puska és Tóth Péter által készített jegyzet volt, azt egészítettem ki, így hibákat, hiányosságokat

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 1. Dr. Iványi Péter

Programozás 1. Dr. Iványi Péter Programozás 1. Dr. Iványi Péter 1 C nyelv B.W. Kernighan és D.M. Ritchie, 1978 The C Programming language 2 C nyelv Amerikai Szabványügy Hivatal (ANSI), 1983 X3J11 bizottság a C nyelv szabványosítására

Részletesebben

Fordítóelmélet bevezetés

Fordítóelmélet bevezetés Fordítóelmélet bevezetés Simon Balázs BME IIT, 2011. forrás: http://www.info.uni-karlsruhe.de/lehre/2007ws/uebau1/ Tartalom Motiváció és követelmények Fordítás típusai Formális nyelvek Fordítás fázisai

Részletesebben

találhatók. A memória-szervezési modell mondja meg azt, hogy miként

találhatók. A memória-szervezési modell mondja meg azt, hogy miként Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési

Részletesebben

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

A C programozási nyelv III. Pointerek és tömbök. A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,

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

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT alapjai, bevezetés Vincze Dávid Miskolci Egyetem, IIT vincze.david@iit.uni-miskolc.hu PHP Personal Home Page (Tools) Script nyelv -> interpretált Elsősorban weboldal (dinamikus) tartalmak előállítására

Részletesebben

Bevezetés a programozásba I.

Bevezetés a programozásba I. Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk

Részletesebben

Bevezetés a programozásba

Bevezetés a programozásba Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit

Részletesebben

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

Bánsághi Anna 2014 Bánsághi Anna 1 of 33 IMPERATÍV PROGRAMOZÁS Bánsághi Anna anna.bansaghi@mamikon.net 7. ELŐADÁS - ABSZTRAKT ADATTÍPUS 2014 Bánsághi Anna 1 of 33 TEMATIKA I. ALAPFOGALMAK, TUDOMÁNYTÖRTÉNET II. IMPERATÍV PROGRAMOZÁS Imperatív

Részletesebben

Dr. Schuster György február / 32

Dr. Schuster György február / 32 Algoritmusok és magvalósítások Dr. Schuster György OE-KVK-MAI schuster.gyorgy@kvk.uni-obuda.hu 2015. február 10. 2015. február 10. 1 / 32 Algoritmus Alapfogalmak Algoritmus Definíció Algoritmuson olyan

Részletesebben

Objektumorientált paradigma és programfejlesztés Bevezető

Objektumorientált paradigma és programfejlesztés Bevezető Objektumorientált paradigma és programfejlesztés Bevezető Vámossy Zoltán vamossy.zoltan@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Ficsor Lajos (Miskolci Egyetem) prezentációja alapján

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

Objektumorientált programozás C# nyelven

Objektumorientált programozás C# nyelven Objektumorientált programozás C# nyelven 2. rész Öröklés és többalakúság Nemvirtuális metódusok, elrejtés Virtuális metódusok, elrejtés Típuskényszerítés, az is és as operátorok Absztrakt osztályok, absztrakt

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

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

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 2. gyakorlat Változók, kiiratás, bekérés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24, 2007 1 tar@dcs.vein.hu

Részletesebben

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag

C# osztálydeníció. Krizsán Zoltán 1. .net C# technológiák tananyag objektum orientált programozás tananyag C# osztálydeníció Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem.net C# technológiák tananyag objektum orientált programozás tananyag Tartalom 1 Bevezetés 2 Osztály létrehozása, deníció

Részletesebben

1. Bevezetés A C++ nem objektumorientált újdonságai 3

1. Bevezetés A C++ nem objektumorientált újdonságai 3 Előszó xiii 1. Bevezetés 1 2. A C++ nem objektumorientált újdonságai 3 2.1. A C és a C++ nyelv 3 2.1.1. Függvényparaméterek és visszatérési érték 3 2.1.2. A main függvény 4 2.1.3. A bool típus 4 2.1.4.

Részletesebben

Podoski Péter és Zabb László

Podoski Péter és Zabb László Podoski Péter és Zabb László Bevezető Algoritmus-vizualizáció témakörében végeztünk kutatásokat és fejlesztéseket Felmértük a manapság ismert eszközök előnyeit és hiányosságait Kidolgoztunk egy saját megjelenítő

Részletesebben

Máté: Assembly programozás

Máté: Assembly programozás Paraméter másutt is előfordulhat a makró törzsben, nemcsak az operandus részen, pl.: PL macro p1,p2 mov ax,p1 P2 p1 PL mov INC Adat, INC ax,adat Adat A &, %,! karakterek továbbá a és ;; speciális szerepet

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

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely

Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Készítette: Trosztel Mátyás Konzulens: Hajós Gergely Monte Carlo Markov Chain MCMC során egy megfelelően konstruált Markov-lánc segítségével mintákat generálunk. Ezek eloszlása követi a céleloszlást. A

Részletesebben

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

4. Programozási nyelvek osztályozása. Amatőr és professzionális 4. Programozási nyelvek osztályozása. Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak

Részletesebben

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r

Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3) Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index

Részletesebben

OOP. Alapelvek Elek Tibor

OOP. Alapelvek Elek Tibor OOP Alapelvek Elek Tibor OOP szemlélet Az OOP szemlélete szerint: a valóságot objektumok halmazaként tekintjük. Ezen objektumok egymással kapcsolatban vannak és együttműködnek. Program készítés: Absztrakciós

Részletesebben

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése

Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Objektum elvű alkalmazások fejlesztése Kifejezés lengyel formára hozása és kiértékelése Készítette: Gregorics Tibor Szabóné Nacsa Rozália Alakítsunk át egy infix formájú aritmetikai kifejezést postfix

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

3 A C programozási nyelv szintaktikai egységei

3 A C programozási nyelv szintaktikai egységei 3 A C programozási nyelv szintaktikai egységei 3.1 Azonosítók Betűk és számjegyek sorozata, betűvel vagy _ (aláhúzás) karakterrel kell kezdődnie. A nagy- és kisbetűk különbözőek. Az azonosítók tetszőleges

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok 2009. november 13. Ismétlés El z órai anyagok áttekintése Ismétlés Specikáció Típusok, kifejezések, m veletek, adatok ábrázolása, típusabsztakció Vezérlési szerkezetek Függvények, paraméterátadás, rekurziók

Részletesebben

Assembly. Iványi Péter

Assembly. Iványi Péter Assembly Iványi Péter További Op. rsz. funkcionalitások PSP címének lekérdezése mov ah, 62h int 21h Eredmény: BX = PSP szegmens címe További Op. rsz. funkcionalitások Paraméterek kimásolása mov di, parameter

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

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen:

Az assembly nyelv sor-orientált nyelv, tehát minden sorba pontosan egy utasítás kerül. Egy sor mezőkből áll a következőképpen: Informatika szigorlat 16-os tétel: Az assembly nyelvek tulajdonságai és fordítása Az assembly nyelv tulajdonképpen a gépi kód szimbolikus megfelelője, azért jött létre, hogy könnyebben lehessen programozni

Részletesebben

Információs Technológia

Információs Technológia Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. 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 kódoltan tároljuk

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 0721 ÉRETTSÉGI VIZSGA 2007. október 24. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ OKTATÁSI ÉS KULTURÁLIS MINISZTÉRIUM

Részletesebben

Programozás I gyakorlat

Programozás I gyakorlat Programozás I. - 3. gyakorlat Operátorok, típuskonverziók, matematikai függvények Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Számítástudomány Alkalmazása Tanszék Utolsó frissítés: September 24,

Részletesebben

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

ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.

Részletesebben

Számítógép architektúra

Számítógép architektúra Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek

Részletesebben

2.3. A C nyelv utasításai

2.3. A C nyelv utasításai 2.3. A C nyelv utasításai A C szabvány hét csoportban osztályozza a C nyelv utasításait: Csoport Kulcsszavak, ill. jelölések Kifejezés utasítás Üres utasítás: ; Összetett utasítás: } Szelekciós utasítások:

Részletesebben