Készítette: Alexin Zoltán (2011) (C.) Copyright, Alexin Zoltán 2011, 2015

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

Download "Készítette: Alexin Zoltán (2011) (C.) Copyright, Alexin Zoltán 2011, 2015"

Átírás

1 Alexin Zoltán 118 lap Programozás II. Egyetemi előadás fóliák a Szegedi Tudományegyetem programozó II. programozó közgazdász II., mérnök informatikus II., fizikusinformatikus II. és számítástechnika tanár II. évf. szakos hallgatók számára Készítette: Alexin Zoltán (2011) (C.) Copyright, Alexin Zoltán 2011, 2015 Szegedi Tudományegyetem Informatikai Tanszékcsoport 2011.

2 Alexin Zoltán 2/118 Programozás II., nappali és levelező tagozat, A kurzus teljesítésének feltételei I. Évközi számonkérés: Elérhető maximális pontszám: 100 pont (a) Előadáson teljesitendő egy írásbeli dolgozat (teszt), időpontja: 7-8 héten Elérhető maximális pontszám: 40 Teljesitendő minimális pontszám: 16 (40%) Megjegyzés: amennyiben a hallgató nem szerzi meg a minimális pontszámot egy javítási lehetőséget kell biztosítani (b) Egy projekt munka (kötelező program), a bemutatás határideje: december elején, gyakorlatvezetővel egyeztetett időpontig Elérhető maximális pontszám: 40 Teljesitendő minimális pontszám: 20 (50%) Megjegyzés: a gyakorlatvezetők a kurzus elején megadják a pontozási feltételeket, a pontszám a vizsgajegybe nem számit be! (c) Gyakorlati vizsga (programírás számítógép előtt) időpontja: utolsó hetek egyike nélküle nem lehet vizsgázni Elérhető maximális pontszám: 60 Teljesitendő minimális pontszám: 24 (40%) Megjegyzés: amennyiben a hallgató nem szerzi meg a minimális pontszámot egy javítási lehetőséget kell biztosítani II. Kollokvium Elérhető maximális pontszám: 100 Teljesitendő minimális pontszám: 50 Megjegyzés: amennyiben a hallgató nem szerzi meg a minimális pontszámot két javítási lehetőséget kell biztosítani Az elérhető összes pontszám: 200 (I. és II.) Mind a négy alkalommal el kell érni mindenben a minimumot, (ez 90 pont) továbbá még 10 pontot a 2-es osztályzathoz. Jegyek ponthatárai: jeles (85%-) jó (75%-) közepes (65%-) elégséges (50%) 99 (vagy valamelyik topicbol minimum alatti ismételt teljesítés esetén) elégtelen

3 Alexin Zoltán 3/118 Ajánlott irodalom Herbert Schildt: C/C++ Referenciakönyv Panem Kft Budapest (1998) Herbert Schildt: C/C++ Programmer s Reference (3rd extended edition) Osborne McGraw-Hill (2002) ISBN: Bjarne Stroustrup: The C++ Programming Language (special 3rd edition), Addison-Wesley (2000), ISBN: Scott Meyers: Hatékony C++, ISBN: , Scolar Kiadó Budapest, (2003) A. Koenig, B. E. Moo: Accelerated C++ (Practical Programming by Example) Addison-Wesley (2000) ISBN: X C. Hughes, T. Hughes: Mastering the Standard C++ Classes: An Essential Reference, New York, (1999) Clovis L. Tondo, Bruce P. Leung: C++ Primer Answer Book Massachusetts, (1999) Clovis L. Tondo, Scott E. Gimpel: C Programozási feladatok megoldásai Műszaki Könyvkiadó Budapest (1995) Kris Jamsa: C++ Kossuth Könyvkiadó Budapest (1997) James O. Coplien: Advanced C++ Programming Styles and Idioms Addison-Wesley (1992) B. W. Kernighan, D. M. Ritchie: A C Programozási Nyelv Műszaki Könyvkiadó Budapest (1985) Robert Sedgewick: Algorithms in C Addison-Wesley (1990)

4 Alexin Zoltán 4/118 Tartalomjegyzék Ajánlott irodalom... 3 I. Bevezetés: az objektum-orinetált programozás alapjai... 6 Az öröklődés... 7 Az objektumok egymáshoz való viszonya... 9 Az objektum-orinetált programozás előnyei II. A C/C++ programozási nyelv III. C/C++ erőforrások az egyetem oktató kabineteiben Változások a C++ nyelv szintaxisában IV. C/C++ érvényességi tartomány típusok A függyény-prototípus scope A blokk scope A függvény scope A global scope Hogyan használhatjuk a C-ben megszokott header fájlokat C++-ban? A fájl scope A blokk és a fájl scope átlapolása V. A névtér (namespace) scope VI. A class utasítás és a class scope Az osztály tagjainak láthatósága Hogyan nevezzük el az osztályok tagjait? Különbségek a C és a C++ között, struct, union? VII. Beágyazott osztályok, típusok (embedded classes and types) Az osztályok implementációja VIII. Az öröklődés (inheritence) A viruális öröklődés (virtual inheritence) IX. Objektumok életciklusa (létrehozás és megszüntetés), konstruktorok és a destruktor.. 56 A konstruktorok Az ős osztály konstruktorának kézi hívása A destruktor Mikor van szükség konstruktor és destruktor alkalmazására? Objektumok klónozása, avagy a (copy) másoló konstruktor X. Az operátor overloading Operátor eljárás megvalósítása osztály tagjaként Operátor eljárás megvalósítása global scope eljárásként Néhány különlegesebb operátor kiterjesztés Az inline és const függvények A volatile módosító használata Az iostream template... 88

5 Alexin Zoltán 5/118 XI. Virtuális eljárások, absztrakt osztályok, késői hozzárendelés Korai és késői hozzárendelés Virtuális eljárások használata Pure virtual eljárások és az absztrakt osztályok XII. A static memberváltozók és metódusok XIII. A static memberváltozók és metódusok A static tagváltozók A static metódusok Visszahívható (callback) függvények A privilegizált operációs rendszerek működésének alapelvei A callback eljárások tulajdonságai XIV. Kivételkezelés XVI. Függelék: fontosabb ANSI C eljárások és használatuk A main() eljárás paraméterei A C/C++ prepocesszor utasítások A szövegkezelés eljárásai (string.h) A matematikai könyvtár eljárásai (math.h) Az ANSI C standard stream B/K eljárásai

6 Alexin Zoltán 6/118 I. Bevezetés 1967 Simula (Dahl és Nygaard) 1980-as évek eleje Smalltalk (Kay, Goldberg és Ingalls) 1980-as évek vége C++ (Stroustrup) Objective-C (Cox) Eiffel (Meyer) Az objektum-orientáltság paradigma első látásra nem a programozási nyelvet jelenti, hanem új módon történő szoftverfejlesztést. Az objektumokat állapotok és viselkedési tulajdonságaik egyesítésének tekinti, amelyek egy szoros és szabatos interfésszel kapcsolódnak egymáshoz. Elősegíti: az információ elrejtést az újrafelhasználást új analízis és tervezési eljárásokat új programozási stílus kialakulását. Az objektum-orientáltság három alappillére: Encapsulation & information hiding (magyarul kb. egységbezárás és információ elrejtés) Reusability, polymorphism & inheritence (magyarul kb. újrafelhasználás, polimorfizmus és öröklődés) Magasabb fokú absztrakció (az absztrakt adattípus = class)

7 Alexin Zoltán 7/118 Az objektum-orientált filozófia a következőkön alapul: Egységbezárás (adat elrejtés) Döntés arról, hogy milyen modulok szükségesek, a programot úgy kell partícionálni, hogy az adatok a modulok belsejében elrejtve legyenek Absztrakt adattípus Döntés arról, hogy milyen típusokra van szükség, minden típushoz definiálni kell az elvégezhető összes műveletet Objektum-orientáltság Döntés arról, hogy milyen osztályokra van szükség, a közös tulajdonságokat láthatóvá teszi az öröklődés Az öröklődés Bankszámla Csekkszámla Megtakarítási számla Különleges megtakarítási számla Betétkönyves számla Befektetési számla

8 Alexin Zoltán 8/118 A gyerek (leszármaztatott, angolul derived class) osztály örökli a szülő osztály (basic class, parent class) attribútumait (ezek az adat tagok), illetve a viselkedését (ezek a metódusok, vagy eljárások). Az öröklődés során lehetőség van a gyermek osztályban: Új adat tagok, attribútumok (memberek) felvételére, Új eljárások (metódusok) felvételére, A szülő osztályban meglévő eljárás viselkedésének (törzsének) módosítására. Példák: Jármű (szülő osztály) Gépjármű (gyerek osztály) Bankszámla (szülő osztály) Lekötött betétszámla (gyerek osztály) Windows Ablak (szülő osztály) Windows Dialógus Ablak (gyerek osztály) Nyomtató (szülő osztály) Postscript nyomtató (gyerek osztály) Természetes nyelvi mondatban ezt úgy fejezzük ki, hogy: a... [gyermek osztály] az egy... [szülő osztály], amely... [extra tulajdonságok]. Pld. A gépjármű az egy olyan jármű, amelynek a mozgását egy beépített motor biztosítja. A postscript nyomtató, az egy olyan nyomtató, amely a feladatát Postscript lapleíró nyelven is tudja fogadni. Alapfogalmak: Objektumok Osztályok Absztrakt adattípusok Üzenetek Öröklődés Polimorfizmus (az azonos feladatot ellátó eljárások tetszőleges környezetben ugyanazt a nevet viselik)

9 Alexin Zoltán 9/118 Az objektumok egymáshoz való viszonya Aggregáció (egyik objektum néhány meghatározott számú másikból épül fel) Asszociáció (egyik objektum felhasznál egy másik objektumot, az eljárásai törzsében, paraméter átadáskor; a pointerrel történő hivatkozás is használatnak minősül) Öröklődés (egyik osztály speciális esete egy másik osztálynak) A gyermek osztály szinte mindig kifinomultabb; több, jobban kidolgoztt eljárást tartalmaz, ezért helyes rájuk így is gondolni. A programozási nyelv lehetővé teszi az osztályok (absztrakt adattípusok), az öröklődés és a használat leírását. A használat során megkülönböztetünk kliens (aki igénybe veszi) és szerver objektumot (aki nyújtja a szolgáltatást). Az adattag nélküli osztályok tekinthetők hasznos eljárások egy erőforrásának, amelyekből öröklődéssel számos egyedi osztályt alkothatunk, adattagok hozzáadásával.

10 Alexin Zoltán 10/118 Az objektum-orientált programozás előnyei Milyen kritériumai vannak a jó programok elkészítésének? 1. Korrektség, verifikálhatóság 2. Robusztusság (figyelem az extrém abnormális esetekre) 3. Bővíthetőség (kiterjesztés és javítás) 4. Újrafelhasználhatóság 5. Integritás (autonóm, zárt komponensek) 6. Kompatibilitás (hasonló programokkal, adatcsere, helyettesíthetőség) 7. Hatékonyság 8. Hordozhatóság 9. Könnyű használhatóság 10. Karbantarthatóság (a karbantartás a szoftver életének nagy részén vonul végig)

11 Alexin Zoltán 11/118 II. A C/C++ programozási nyelv Bjarne Stroustrup, Bell Labs. ( első implementáció 1983, ötleteket vett át a Simula67-ből (osztályok, származtatott osztályok), Algol68-ból (operátor kiterjesztés), Ada (templatek), Clu, B CPL programozási nyelvekből Minden C program lefordítható C++ ban is (így futtatható is), azonban az nem garantált, hogy ugyanaz a tárgymodul jön létre! A C++ a C programozási nyelv magasabb absztrakciót lehetővé tevő objektum-orientált bővítése Nagy volumenű fejlesztések támogatása, névterek, információ elrejtés, csoportmunka, szigorú típus ellenőrzés

12 Alexin Zoltán 12/118 III. Erőforrások az egyetem oktató kabineteiben 1. GNU C/C++ for MSDOS A programfejlesztési környezet az Irinyi oktató kabinetekben a 224 és a 226-os teremben az N: disken található a N:\GNU alkönyvtárban. Mielőtt használni kívánja, el kell indítani az N:\BAT\GNU.BAT eljárást, ami az útvonalakat beállítja. Az N:\GNU\ZIP alkönyvtárban található.zip fájlokat minden hallgató hazaviheti és telepítheti a saját gépére. Az itt található GNU C/C egy ingyenes (freeware) programcsomag. Ugyanebben az anyagban megtalálható a GNU Pascal 2.0 is. A fordító program neve gcc.exe, a szerkesztő programé ld.exe, a szövegszerkesztőé rhide.exe. 2. GNU C/C++ for Unix A home.cab.u-szeged.hu (rozi): GNU C/C fejlesztési környezet található. Használatához nincs szükség semmilyen előkészítésre, minden felhasználó indíthatja. A program neve gcc. Gyári Motorola C/C++ fordító program neve: cc Sun WorkShop 6 update 2C5.3 (2001. május 15.) A sirius-on: A GNU C/C verziója van meg (2001. március 15.) korszerű, fejlesztési környezet. A program neve gcc. A gyári SUN C/C++ fordító program neve cc, de nem működik. A forráskód szerkesztésére Unix operációs rendszerben a következő programok használhatók: vi, xedit, pico, xwpe, nedit, emacs, xemacs. 3. Visual C/C (illetve a Visual Studio.NET 2005)

13 Alexin Zoltán 13/118 A programfejlesztési környezet az Irinyi oktató kabinetekben megtalálható. A programmal egyebek mellett 32 bites MS-DOS alkalmazások, Windows (API, MFC, EXE, DLL, Console Application) programok készíthetők. A 32-bites Win 2000/XP operációs rendszert elindítva a programok használhatók, a parancssori fordító használatához szükséges beállításokat a számítógépek elvégzik. A parancssori fordító neve: cl.exe. 4. STL A C++ programozáshoz használható általános célú template könyvtár, mind a siriuson, mind pedig a Visual C/C (6.0) fejlesztői környezetben használható. A template könyvtár már telepítésre került, a dokumentációja viszont innen: /pub/program/c++/stl_doc/index.html érhető el. Az STL egy ingyenes (freeware) programcsomag, amit mindenki szabadon használhat olyan ANSI C/C++ fordító programokkal, amelyek képesek lefordítani a benne szereplő defíníciókat. A könyvtár lényegében néhány header fájl, amelyben paraméteres osztályok (templatek) és (template)paraméteres eljárások vannak. 5. Honlap Nemcsak a C/C++, hanem más programrendszerekkel kapcsolatos információk találhatók a honlapomon: Például: Prolog, funkcionális programozás, Oracle, programok használati rendje, levelezési listák, honlapok. Vannak helyben olvasható dokumentációk, amelyek csak azokon a gépeken olvashatók, amelyekre fel van mountolva a /pub/programozas-ii.

14 Alexin Zoltán 14/118 Változások a C++ nyelv szintaxisában Minden változás permanens bővítés, ami azt jelenti, hogy a továbbiakban is minden C program lefordítható C++ -ban is. (Fordítva természetesen nem igaz.) A C++ nyelv számára azonban új tárgymodul struktúra volt szükséges, ezért a visszafelé kompatibilitás miatt a fordító programnak tudnia kell, hogy C vagy C++ tárgymodult állítson elő. A fordító a parancs sorból veszi az ehhez szükséges információkat (az input fájl kiterjesztése szerint végez C vagy C++ fordítást), illetve parancssori paraméterekkel is lehet befolyásolni. (cl -TP C). Itt most a fontosabb változások szerepelnek: Egysoros megjegyzés. A régi /* és */ jelek közé zárt többsoros megjegyzés továbbra is használható int k ; // ez egy megjegyzés Blokk utasításban nem kell a típus/változó definícióknak megelőzniük a végrehajtható utasításokat. int sum(int a, int b) int c ; c = a ; int d ; d = b ; return c+d ; A for utasításban létrehozható ciklusváltozó az első paraméter helyén for(char c = 0, *p = "Alma" ; c < (char) strlen(p) ; ++c)...

15 Alexin Zoltán 15/118 Az eljárások default paraméterei long int sum(long a, long b = 0, long c = 0) return a+b+c ; az eljárás ezután meghívható sum(1) ; sum(2, 5) ; sum(1, 2, 3) ; Az eljárások visszaadott értéke bármilyen típusú lehet struct abc long tomb [40] ; ; abc fill(abc in, long f = 0) for (int i = 0 ; i < 40 ; ++i) in.tomb[i] = f ; return in ; Referencia típus (cím szerint átadott var paraméter) int strlen (char &str) int i ; for (i = 0 ; (&str)[i]!= '\0' ; ++i) ; return i ; Szigorú típus egyeztetés Prototípus megkövetelése Új utasítások: class, template, namespace,...

16 Alexin Zoltán 16/118 Referencia változók használata 1. Deklarációk: #include <stdio.h> int main() int k = 6 ; int l = 7 ; int &pk = k ; printf("1: %d %d %p(%d)\n", k, l, pk, pk) ; // 6 7 0x001F8820(6) //*((int **) &pk) = &l ; _asm lea eax, dword ptr l mov pk, eax pk = pk+2 ; // pk alias l printf("2: %d %d %d\n", k, l, pk) ; // _asm lea eax, dword ptr k mov pk, eax pk = pk-1 ; // pk alias k printf("3: %d %d %d\n", k, l, pk) ; // return 1 ;

17 Alexin Zoltán 17/118 _main PROC ; COMDAT ; 5 : push ebp mov ebp, esp sub esp, 228 ; e4H... ; 6 : int k = 6 ; mov DWORD PTR _k$[ebp], 6 ; 7 : int l = 7 ; mov DWORD PTR _l$[ebp], 7 ; 8 : ; 9 : int &pk = k ; lea eax, DWORD PTR _k$[ebp] mov DWORD PTR _pk$[ebp], eax prológus referenciaváltozó létrehozása a veremben ; 10 : ; 11 : printf("1: %d %d %p(%d)\n", k, l, pk, pk) ; mov esi, esp a paraméterek mov eax, DWORD PTR _pk$[ebp] berakása a verembe mov ecx, DWORD PTR [eax] hátulról előrefelé push ecx mov edx, DWORD PTR _pk$[ebp] mov eax, DWORD PTR [edx] push eax az imp printf mov ecx, DWORD PTR _l$[ebp] eljárás meghívása push ecx DLL-ből mov edx, DWORD PTR _k$[ebp] push edx push OFFSET??_C@_0BB@PBLHLJOJ@1?3?5?$CFd?5?$CFd... call DWORD PTR imp printf add esp, 20 cmp esi, esp call RTC_CheckEsp ; H a cdecl eljárás kiürít a veremből 5*4 = 20 bájtot

18 Alexin Zoltán 18/118 ; 14 : _asm ; 15 : ; 16 : lea eax, dword ptr l lea eax, DWORD PTR _l$[ebp] az l változó címének kiegészítése a bp regiszterrel ; 17 : mov pk, eax mov DWORD PTR _pk$[ebp], eax ; 18 : ; 19 : pk = pk+2 ; mov eax, DWORD PTR _pk$[ebp] mov ecx, DWORD PTR [eax] add ecx, 2 mov edx, DWORD PTR _pk$[ebp] mov DWORD PTR [edx], ecx az új referencia tárolása a pk változóban a referenciaváltozó használata ; 20 : printf("2: %d %d %d\n", k, l, pk) ;// mov esi, esp mov eax, DWORD PTR _pk$[ebp] mov ecx, DWORD PTR [eax] push ecx mov edx, DWORD PTR _l$[ebp] push edx mov eax, DWORD PTR _k$[ebp] push eax push OFFSET??_C@_0N@FDFNGKMI@2?3?5?$CFd?... call DWORD PTR imp printf add esp, 16 cmp esi, esp call RTC_CheckEsp ; 23 : _asm ; 24 : ; 25 : lea eax, dword ptr k lea eax, DWORD PTR _k$[ebp] ; 26 : mov pk, eax mov DWORD PTR _pk$[ebp], eax ; 27 : ; H az imp printf hívása

19 Alexin Zoltán 19/118 ; 28 : pk = pk-1 ; mov eax, DWORD PTR _pk$[ebp] mov ecx, DWORD PTR [eax] sub ecx, 1 mov edx, DWORD PTR _pk$[ebp] mov DWORD PTR [edx], ecx ; 29 : printf("3: %d %d %d\n", k, l, pk) ;// ; 32 : return 1 ; mov eax, 1 visszatérési érték ; 33 : add esp, 228 cmp ebp, esp call RTC_CheckEsp mov esp, ebp pop ebp ret 0 ; e4H Epilógus

20 Alexin Zoltán 20/118 Deklarációk szintaxisa a C/C++ nyelvben 1. Deklarációk: típus/attr ; init deklarátor lista 2. Init deklarátor lista: deklarátor = kifejezés, 3. Példák: int k, l, m ; int k=1, l=3, m=k+3 ; int a[2], b[3,4], *pint, ifgv(long) ; az utolsó sor az alábbi négy deklarációt rövidíti: int a[2] ; int b[3,4] ; int *pint ; int ifgv(long) ;

21 Alexin Zoltán 21/118 IV. C/C++ érvényességi tartomány típusok (scope) Scope: a forráskód egy pontosan meghatározott része (modul név (fájl), sor, kezdő és záró character pozíció). A scope lehet összefüggő illetve összefüggő forráskód részek halmaza. Egy scope kiterjedhet több modulra, amelyek különböző alkönyvtárakban vannak. A scope-ban definiált programobjektumok élettere általában csak erre a területre terjed ki. prototípus érvényességi kör int skip_over(file *file, char *pattern, long *) ; int skip_over(file *file, char *pattern, long *line) typedef unsigned long ULONG ; while (!feof(file)) char *p = pattern; while (*p!= '\0') c=fgetc(file); if (c == '\n') (*line)++; if (c == *p) ++p; else break; if (*p == '\0') return 1; return 0; formális paraméterek hatásköre az eljárás az ULONG típus hatásköre a külső blokk a p változó a blokkban érvényes

22 Alexin Zoltán 22/ A függvény-prototípus scope long int sum(int a, int b) ; long int sum(int x, int y) ; void * (*proto_type(long int, char *b)) (const char *b, unsigned short int d) ; long int sum(int a, int a) ; helytelen int record_func(struct A int a; long b; *param) ; // a struct A csak a prototípusban érvényes! A függvény-prototípus scopeban használt azonosítók érvényessége a függvény paramétereket közrezáró zárójelek közötti forráskód részlet. void * (*proto_type(long int, char *b)) (const char *b, unsigned short int d) ; A prototípusban a paramétereket nem kötelező elnevezni, Ha azonban adok nevet, akkor egy paraméterlistában nem lehet név ütközés, Ha később ismét definiálom egy függvény prototípusát, más paraméter azonosítókkal, az megengedett. A fordító csak a típusokat tárolja.

23 Alexin Zoltán 23/ A blokk scope A C/C++ programozási nyelv leggyakrabban előforduló érvényességi tartomány típusa. A block scopeban definiált programobjektumok érvényességi köre a blokk-utasítást határoló és (kapcsos zárójelek) közötti terület. Egy belső blokkban megismételt azonosítóval létrehozott programobjektum eltakarja a külső blokkbeli ugyanilyen nevű programobjektumot. Egymásba ágyazott blokkok esetén belűlről kifelé haladva keresi meg a fordító a megadott azonosítójú programobjektumot. A blokkba belépve létrejönnek a blokkban definiált programobjektumok, a blokkból kilépve megszűnnek. Az egymásba ágyazott blokkoknak megfelelő programobjektumok létrehozásának és megszüntetésének technikai megvalósítása veremmel történik. Ennek következménye, hogy a blokkból kilépve, az ott definiált programobjektumok fizikailag is megszűnnek létezni (a helyüket újabb programobjektumok foglalhatják el). if (pint!= NULL) int a ; if (k!= 4) double a ; a = 6.26 ; a = 3 * 2 ; else char a[20] = abcdefg ; printf( %s\n, a) ;

24 Alexin Zoltán 24/ A függvény scope A C/C++ programozási nyelv eljárásaiban a formális paraméterek és a goto címkék érvényességi tartománya az a teljes eljárás (fej és törzs), amelyben azokat definiálták. Ennek két fontos hatása van: a formális paramétereket a blokkokban definiált lokális változók elfedhetik a blokkok között szabadon lehet ugrani a goto utasítással, azonban az eljárásból kiugrani nem lehet. Egy vezérlési szerkezetből (ciklus, feltételes utasítás) kiugrani megengedett, ellenben egy vezérlési szerkezet belsejébe beugrani nem logikus és rossz programozási stílus. int strlen (char *p) int len = 0 ; char *q = p ; if (p == NULL) goto exit ; len = 0 ; while(1) long p ; p = 4 * 12 ; if (*q == '\0') goto end ; ++q ; end : return len ; exit: return 0 ;

25 Alexin Zoltán 25/ A global scope A global scope, a több modulból álló projekt egész területét jelenti. A C/C++ programozási nyelvben az (ún. globális) eljárások és az eljárástörzsön kívül definiált (ún. globális) változók érvényességi tartománya ez. Ez azt jelenti, hogy ha másként nem rendelkezik a programozó, akkor egy projekten belül minden globális változó és globális eljárás korlátozás nélkül látható, használható, illetve meghívható. /* a.c forrás fájl */ int a ; void seta(int b) a = b ; /* b.c forrás fájl */ #include <stdio.h> extern int a ; extern void seta(int) ; int main() a = 67 ; printf("a = %d\n", a) ; // az a a másik modulból seta(88) ; // seta a másik modulból printf("a = %d\n", a) ; Fordítás és futtatás: c:>cl a.c b.c c:>a.exe a = 67 a = 88

26 Alexin Zoltán 26/118 Tárolási osztályok a C nyelvben: register - a CPU egy regiszterében auto - veremszegmensben (csak eljáráson belül) static - adatszegmensben, lokálisan extern - adatszegmensben, globálisan (tárgymodulban extern-ként) a default: - adatszegmensben, globálisan (tárgymodulban public-ként) pl. auto int s ; register long k ; static char s[30] ; long int u ; A global scope érvényességű programobjektumok tárolási osztálya az extern volt. C++-ban az extern modifierrel jelezzük, hogy az adott program objektum a global scope-hoz tartozik. A programobjektum definiálásakor nem írunk extern-t (ez alapértelmezés automatikus). Ha kitesszük, akkor az azt jelzi, nem szükséges helyfoglalás, a programobjektum számára már korábban foglaltak helyet egy másik modulban. A C++ programozási nyelvben két új tárolási osztályt vezettek be a régebbi extern helyett az extern C és az extern C++ -t. Az utóbbi az alapértelmezett. extern C long int Sum(int a, int b) ; és az extern C++ long int Sum(int a, int b) ; vagy röviden: long int Sum(int a, int b) ; Ez a két eljárás C++ programozási nyelvben különbözik.

27 Alexin Zoltán 27/118 Hogyan használhatjuk a C-ben megszokott header fájlokat C++ban? A C-ben megismert és használt standard C header fájlok továbbra is használhatók C++-ban. Ehhez kisebb változtatást kellett rajtuk végrehajtani, amely után lehetséges a további használat. A C/C++ fordító program egy belső ún. define makró segítségével jelzi, hogy az éppen fordított modul C vagy C++ nyelvű. A makró neve: cplusplus. A standard header fájlok így néznek ki: #ifndef STDIO_H #define STDIO_H #ifdef cplusplus extern C #endif korábbi C nyelvű deklarációk pld. FILE * fopen (const char *, const char *) ; int fclose(file *) ;... #ifdef cplusplus #endif #endif // STDIO_H

28 Alexin Zoltán 28/ A fájl scope Amennyiben nem kívánjuk, hogy a programobjektumaink a global scope-ba kerüljenek, akkor helyette használhatjuk a fájl scope érvényességi tartományt. Ezt a static módosító (modifierrel) alkalmazásával érhetjük el. Az adott programobjektum neve és címe ilyenkor nem kerül be a tárgymodulba, ami kizárja, hogy egy másik modul azonos nevű programobjektumával ütközés léphessen fel. static int Sum(int a, int b) return a+b ; static char filename[_max_path] ; Tárgymodulok felépítése: publikus szimbólumok (assemblyben: public) táblázata. Ebben a táblázatban a modulban definiált objektumok neve és eltolási címe. Lehet rájuk más modulból hivatkozni, vagy meghívni az eljárásokat. hivatkozott szimbólumok (assemblyben: extern + FIXUP lista). A modulban hivatkozott objektumok neve, amelyek definíciója nem található meg a modul forrásában. Az ismeretlen címek helyére 0x00 bájtokat tesz a fordító. A helyet, ahová az érvényes címet szerkesztéskor kell majd tenni, megjegyzi a FIXUP listán. gépi kód (bájtkód). Az ismeretlen címek helyén 0x00 bájtok állnak, a szerkesztő program javítja cseréli ki a szerkesztéskor megállapított érvényes eltolási címekre.

29 Alexin Zoltán 29/118 A tárgymodul belső felépítése FIXUP lista, az ext 1 szimbólum címét hová kell beilleszteni. Header public szimbólumok szimb 1 szimb 2.. szimb n 0x0010 0x016A.. 0x0CB6 extern szimbólumok _TEXT segment proc szimb 1 (bájt kód) call ext 2 proc szimb 2 call ext 1 ext 1 0x0077 knd 1.. 0x009F knd n1 ext 2 0x01A5 knd 2. 0x01DF knd n2 _DATA segment (adat bájtok) szimb 4 DW? ext k 0x034B knd k.. 0x04CE knd nk A knd i mutatja, hogy a cím mely részét kell beírni a megadott helyre, szegmenscím, 16 bites eltolási cím, 32-bites eltolási cím, 16- bites relatív cím, stb.

30 Alexin Zoltán 30/118 A blokk és a fájl scope átlapolása A C/C++ programozási nyelv blokkjaiban lehetőség van fájl scope érvényességű változók definiálására. if (k == 0) static int s = 0 ;... else static int s = 1 ; Ebben az esetben egy olyan változó jön létre, amely viselkedésében sztatikus, (a program teljes futási idejében létezik), viszont érvényességi köre csak blokk scope. Ez azt jelenti, hogy a két ugyanolyan nevű (s) változó az adatszegmens két különböző című helyén tárolódik (valóban két teljesen különböző változó lesz). Fontos tudni(!), hogy az inicializálás nem hajtódik végre csak egyszer, akkor amikor a fordítóprogram helyet foglal a változónak, a blokkba való belépéskor már nem. Az s változók megőrzik az értéküket, amit a blokkban való legutóbbi tartozkodáskor felvettek. Ha ismét belépünk a blokkba ezek rendelkezésre állnak. A static változók címét tetszés szerint továbbíthatjuk a programban (a változók mindig elérhetőek, nem úgy mint a veremben tárolt lokális változók).

31 Alexin Zoltán 31/118 void f() static int i = 0 ; void g() static int i = 0 ; Az f() és a g() eljárásokban használt két változó különböző lesz! Ezért a fenti példában nem lehet közös adatterületként használni őket. Helyette a következő megoldást képzelhető el: static int i = 0 ; void f() használom az i változót void g() használom az i változót

32 Alexin Zoltán 32/118 V. A névtér (namespace) scope [C++] A C++ programozási nyelvben egy új szolgáltatás áll a programozók rendelkezésére nagy rendszerek készítéséhez: ez a névtér. A névtér egy hierarchikus programobjektum-azonosító tárolási struktúra (vö. mappák, folderek). A programobjektumok elhelyezése a névterekben egyszerű. A keresési útvonal programozható. A megkezdett névtér folytatható, a folytatások száma nincs korlátozva. Szintaxis: namespace ::> namespace [identifier opt ] namespace-törzs namespace A int a ; namespace B int a ; short C(short k) ; namespace A int a ; // hiba: azonosító ütközés int b ; long C(int k) ;

33 Alexin Zoltán 33/118 A névtérbeli programobjektumokra történő hivatkozás: A::B::a. A hivatkozásnak teljesnek kell lennie, a névtér hierarchia minden azonosítójának kell benne szerepelni. Az azonosítókat a scope-resolution (scope feloldó) operátor (a ::) választja el egymástól. A global scope szintén egy névtér, amit jelezhetünk így ::Sum(23, 23) ; (az azonosítók elé tett :: jellel). A névtérbeli eljárások definíciója: long A::C(int k) return k+1 ; short A::B::C(short k) return k+1 ; A névtér implementációja: a tárgymodulba kimentett azonosítók megváltoztatásával. Lásd később. Keresési útvonal megadása: a using utasítással. Egymás után több using utasítást is írhatunk. A nem egyértelmű hivatkozások elkerülése a teljes útvonal megadásával mindenképpen javasolt. Szintaxis: using ::> using namespace scope ; Például: using namespace D ; using namespace E::F::G ;

34 Alexin Zoltán 34/118 namespace D int d1; void f(int); void f(char); using namespace D; int d1; // nincs ütközés a D::d1 -gyel namespace E int e; void f(int); namespace D // namespace folytatása int d2; using namespace E; void f(int); void f() d1++; ::d1++; D::d1++; d2++; e++; f(1); f('a'); // hiba, melyik ::d1 or D::d1? // ok // ok // ok: D::d2 // ok: E::e // melyik D::f(int) or E::f(int)? // ok D::f(char) Ez a példa a Microsoft Visual C/C (6.0) MSDN Helpben a using utasításnál megtalálható.

35 Alexin Zoltán 35/118 /* a.cpp programfájl */ namespace Gyar namespace Telep int k ; int l ; int sum_kl() ; int Gyar::Telep::sum_kl() return k+l ; /* b.cpp programfájl */ #include <stdio.h> namespace Gyar namespace Telep extern int k ; extern int l ; extern int sum_kl() ; using namespace Gyar::Telep ; int main() A Gyar::Telep::k k = 56 ; helyett elég csak a k l = 45 ; printf("sum_kl() = %d\n", sum_kl()) ; fordítás: c:>cl a.cpp b.cpp futtatás: c:>a.exe sum_kl() = 101 minősített eljárásnév hivatkozás másik modulban definiált programobjektumokra Nem kell kiírni a Gyar::Telep:: prefixet

36 Alexin Zoltán 36/118 /* az a.cod fordítási lista fájl */ ; Listing generated by Microsoft (R) Optimizing Compiler Version TITLE.686P.XMM include listing.inc.model flat ; 14 : return k+l ; H:\H-Disk \VCProjects\a.cpp a tárgymodulból kilátszik a két azonosító a mov eax, DWORD PTR?k@Telep@Gyar@@3HA ; Gyar::Telep::k add eax, DWORD PTR?l@Telep@Gyar@@3HA ; Gyar::Telep::l ; 15 : 0000e 5d pop ebp 0000f c3 ret 0?sum_kl@Telep@Gyar@@YAHXZ ENDP ; Gyar::Telep::sum_kl _TEXT ENDS END extern C++ azonosítók képzése PUBLIC?l@Telep@Gyar@@3HA ; Gyar::Telep::l PUBLIC?k@Telep@Gyar@@3HA ; Gyar::Telep::k _BSS SEGMENT /* Begin of Stack Segment */?l@telep@gyar@@3ha DD 01H DUP (?) ; Gyar::Telep::l?k@Telep@Gyar@@3HA DD 01H DUP (?) ; Gyar::Telep::k _BSS ENDS PUBLIC?sum_kl@Telep@Gyar@@YAHXZ ; Gyar::Telep::sum_kl ; Function compile flags: /Odtp ; File h:\h-disk \vcprojects\a.cpp _TEXT SEGMENT?sum_kl@Telep@Gyar@@YAHXZ PROC ; Gyar::Telep::sum_kl ; 13 : push ebp 32-bites eltolási cím b ec mov ebp, esp A cím nincs kitöltve

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban

Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Programozás II. 3. gyakorlat Objektum Orientáltság C++-ban Tartalom OOP ismétlés Osztályok létrehozása Adattagok láthatóságai, elnevezési ajánlások Konstruktor, destruktor this pointer Statikus és dinamikus

Részletesebben

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Programozás II. 2. gyakorlat Áttérés C-ről C++-ra Tartalom Új kommentelési lehetőség Változók deklarációjának helye Alapértelmezett függvényparaméterek Névterek I/O műveletek egyszerűsödése Logikai adattípus,

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

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

Programozás C++ -ban

Programozás C++ -ban Programozás C++ -ban 4. Bevezetés az osztályokba 4.1 Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több

Részletesebben

Bevezetés, a C++ osztályok. Pere László

Bevezetés, a C++ osztályok. Pere László Programozás módszertan II. p. Programozás módszertan II. Bevezetés, a C++ osztályok Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK

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

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

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés.

Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Visual C++ osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. Az osztály egy olyan típus leíró struktúra, amely tartalmaz adattagokat

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

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

Osztály és objektum fogalma

Osztály és objektum fogalma Osztály és objektum fogalma A C++ programozási nyelv I. CPP1/ 1 Az osztály (class) class: adatok és módszerek (method) (függvények) együttese, amely absztrakt adattípusként működik. objektum: egy osztály

Részletesebben

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék

Statikus adattagok. Statikus adattag inicializálása. Speciális adattagok és tagfüggvények. Általános Informatikai Tanszék Speciális adattagok és tagfüek Miskolci Egyetem Általános Informatikai Tanszék CPP7 / 1 Statikus adattagok Bármely adattag lehet static tárolási osztályú A statikus adattag az osztály valamennyi objektuma

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

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben? 3. Ismertesse a névtér fogalmát! 4. Mit értünk a "változó hatóköre"

Részletesebben

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 13. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. december A C++ programozási nyelv Soós Sándor 1/10 Tartalomjegyzék Objektumok

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

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

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

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

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

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

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe Mechatronika és mikroszámítógépek 2017/2018 I. félév Bevezetés a C nyelvbe A C programozási nyelv A C egy általános célú programozási nyelv, melyet Dennis Ritchie fejlesztett ki Ken Thompson segítségével

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

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3 Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás

Részletesebben

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

Programozás alapjai. 10. előadás 10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:

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

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Programozás C++ -ban 2007/4

Programozás C++ -ban 2007/4 Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

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

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

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet

Részletesebben

Programozási nyelvek JAVA EA+GY 1. gyakolat

Programozási nyelvek JAVA EA+GY 1. gyakolat Programozási nyelvek JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2018/2019. tavaszi félév Tartalom 1 A Java alapjai 2 Java program

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

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

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

JAVA PROGRAMOZÁS 2.ELŐADÁS

JAVA PROGRAMOZÁS 2.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 2.ELŐADÁS 2014-2015 tavasz Tömbök, osztályok, objektumok, konstruktorok Tömbök 2 Referencia típusú változó Elemtípus Primitív Referencia: osztály,

Részletesebben

Objektumok inicializálása

Objektumok inicializálása Objektumok inicializálása Miskolci Egyetem Általános Informatikai Tanszék Objektumok inicializálása CPP4 / 1 Tartalom public adattagok inicializálása felsorolással konstruktor objektum tömbök osztály típusú

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

Interfészek. PPT 2007/2008 tavasz.

Interfészek. PPT 2007/2008 tavasz. 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 2 Már megismert fogalmak áttekintése Objektumorientált

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

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

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

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 9. előadás Interface - típust vezet be, de osztálypéldány nem készíthető belőle (statikus típust ad) - több osztály is

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

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok

Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int

Részletesebben

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.

C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I. Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 Bevezetés 2 A C++ alapfilozófiája 3 Névterek/namespace-ek 4 Függvények 5 Referenciák C++-ban Motiváció A C és a C++ nyelv

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

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

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

é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

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

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

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

C++ programok fordítása

C++ programok fordítása C++, 1/ 33 C++ programok fordítása Pataki Norbert 2012. február 24. C++, 2/ 33 Információk Pataki Norbert, patakino@elte.hu http://patakino.web.elte.hu/levelezo Jegy: gyakorlat, Szűgyi Zalán C++, 3/ 33

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 C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

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

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 02. 11. 2. Előadás Mese Néhány programozási módszer: Idők kezdetén való programozás Struktúrált Moduláris Funkcionális Objektum-orientált... Mese Néhány programozási módszer:

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

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

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

Paraméter átadás regisztereken keresztül

Paraméter átadás regisztereken keresztül Eljárások paramétereinek átadási módjai Az eljárások deklarációjánál nincs mód arra, hogy paramétereket adjunk meg, ezért más, közvetett módon tudunk átadni paramétereket az eljárásoknak. Emlékeztetőül:

Részletesebben

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum

Bevezetés a programozásba Előadás: Tagfüggvények, osztály, objektum Bevezetés a programozásba 2 1. Előadás: Tagfüggvények, osztály, objektum Ismétlés int main() { string s; s; s= bla ; cout

Részletesebben

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

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. 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/17 Tartalomjegyzék

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

Bevezetés a Python programozási nyelvbe

Bevezetés a Python programozási nyelvbe Bevezetés a Python programozási nyelvbe 7. Gyakorlat osztályok, objektumok (utolsó módosítás 2018. aug. 28.) Szathmáry László Debreceni Egyetem Informatikai Kar 2018-2019, 1. félév OO programozás Pythonban

Részletesebben

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016

Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS. Objektumorientált programozás 2015-2016 Dr. Pál László, Sapientia EMTE, Csíkszereda WEB PROGRAMOZÁS 2.ELŐADÁS 2015-2016 Objektumorientált programozás OOP PHP-ben 2 A PHP az 5.0-as verziójától megvalósítja az OO eszközrendszerét OO eszközök:

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

Programozás módszertan p.1/46

Programozás módszertan p.1/46 Programozás módszertan Öröklődés Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA ÉS ÁLTALÁNOS TECHNIKA TANSZÉK MAGYAR TUDOMÁNYOS AKADÉMIA SZÁMÍTÁSTECHNIKAI ÉS

Részletesebben

Bevezetés a programozásba Előadás: A const

Bevezetés a programozásba Előadás: A const Bevezetés a programozásba 2 6. Előadás: A const ISMÉTLÉS Interface - Implementation struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; }; void Particle::rajzol() { gout

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

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok

GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és. Függvénysablonok GENERIKUS PROGRAMOZÁS Osztálysablonok, Általános felépítésű függvények, Függvénynevek túlterhelése és Függvénysablonok Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben

Részletesebben

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

Az alábbi példában a Foo f(5); konstruktor hívása után mennyi lesz f.b értéke? struct Foo { int a, b; Foo(int c):a(c*2),b(c*3) {} }; A C++ kódokban lévő makrókat melyik egység dolgozza fel az alábbiak közül? preprocessor A szabványos C++-ban nem is írhatunk makrókat (csak C-ben) assembler linker Az alábbi példában a Foo f(5); konstruktor

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

Virtuális függvények (late binding)

Virtuális függvények (late binding) Virtuális függvények (late binding) Miskolci Egyetem Általános Informatikai Tanszék Virtuális függvények CPP5 / 1 Azonos nevű függvények megkülönböztetése paraméterszignatúra (függvény overloading) - egy

Részletesebben

Programozás II gyakorlat. 6. Polimorfizmus

Programozás II gyakorlat. 6. Polimorfizmus Programozás II gyakorlat 6. Polimorfizmus Típuskonverziók C-ben: void * ptr; int * ptr_i = (int*)ptr; Ez működik C++-ban is. Használjuk inkább ezt: int * ptr_i = static_cast(ptr); Csak egymással

Részletesebben

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: C++ referencia Izsó Tamás 2017. február 17. 1. Bevezetés A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: Sokan összetévesztik a pointerrel. Keveset alkalmazzák

Részletesebben

Bevezetés a C++ programozási nyelvbe

Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék Bevezetés a C++ programozási nyelvbe Oktatási segédlet Összeállította: Ficsor Lajos 2001. 1. A C++ programozási nyelv története A C++ programozási nyelv

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

Programozás 6. Dr. Iványi Péter

Programozás 6. Dr. Iványi Péter Programozás 6. Dr. Iványi Péter 1 Előfeldolgozás része Makrók A forrás kódban elvégzi a helyettesítéseket a fordító Csak egyszer végez helyettesítést Nem olyan makrók, mint a LISP vagy Scheme esetén Csak

Részletesebben

Google C++ style guide

Google C++ style guide Április 3, 2013 Tartalomjegyzék Amiről szó lesz... Header állományok Hatókör Osztályok Elnevezések Előzmények Az útmutató célja A Google nyílt forrású projektjeinél túlnyomórészt C++: hatékony szolgáltatások,

Részletesebben

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere

A PROGAMOZÁS ALAPJAI 1. Függvény mint függvény paramétere. Függvény mint függvény paramétere. Függvény mint függvény paramétere 2012. április 10. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? alaki szabályok használata - mintapélda használata - mintapélda

Részletesebben

Programozási alapismeretek 4.

Programozási alapismeretek 4. Programozási alapismeretek 4. Obejktum-Orientált Programozás Kis Balázs Bevezetés I. Az OO programozási szemlélet, egy merőben más szemlélet, az összes előző szemlélettel (strukturális, moduláris, stb.)

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

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

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

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title;

Osztályok. construct () destruct() $b=new Book(); $b=null; unset ($b); book.php: <?php class Book { private $isbn; public $title; PHP5 objektumok 1 Osztályok class, new book.php: construct () destruct() $b=new Book(); törlés: $b=null; vagy unset ($b); -elnevezési konvenciók private $isbn; public $title; function

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

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

Objektumelvű programozás

Objektumelvű programozás Objektum, osztály Objektumelvű programozás Az elemzés együttműködő objektumok rendszereként fogalmazza meg a feladatot. Objektum-központú elemzés A tervezés a feladat tárgyköreit egy-egy objektum felelősségévé

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

C++ programozási nyelv

C++ programozási nyelv C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért

Részletesebben

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése FEJLETT PROGRAMOZÁSI NYELVEK, 2009 2. GYAKORLAT - Linux alatti C/C++ programozás Cél: Dinamikus csatolású függvénykönyvtár készítése és használata Plugin-szerű betöltés Egyszeű C++ osztályok készítése

Részletesebben

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

Objektum orientált kiterjesztés A+ programozási nyelvhez Szegedi Tudományegyetem Informatikai Tanszékcsoport Objektum orientált kiterjesztés A+ programozási nyelvhez Diplomamunka terve Készítette: Bátori Csaba programtervező matematikus hallgató Témavezető:

Részletesebben

Objektumorientált szoftverfejlesztés alapjai

Objektumorientált szoftverfejlesztés alapjai Objektumorientált szoftverfejlesztés alapjai Gyakorlatorientált szoftverfejlesztés C++ nyelven Visual Studio Community fejlesztőkörnyezetben @Katona József Kővári Attila Lektorálta: Dr. Fauszt Tibor DOI:

Részletesebben

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. április 12. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! -

Részletesebben

Programozás C++ -ban

Programozás C++ -ban Programozás C++ -ban 6. Konstansok A C nyelvben konstansokat makróval is deklarálhatunk. Ebben az esetben mindenhol ahol a makró előfordul a fordító a definiált értéket behelyettesíti a makró helyére.

Részletesebben