Programozás s 2. C++ nyelven
|
|
- Ágnes Fehér
- 7 évvel ezelőtt
- Látták:
Átírás
1 Programozás s 2 Objektum Orientált Programozás C++ nyelven utolsó változtatás s
2 C++ Történetileg a C nyelv továbbfejleszt bbfejlesztésese Ennek előnyei: C programozó azonnal programozhat C-ként C C++-ban használva a plusz kényelmi k lehetőségeket Kulcsszavai azonosak/hasonlóak ak a C-velC Lehet vele hatékony OOP programokat készk szíteni Hátránya: nincs késztetk sztetés s az OOP gondolkodásm smódjának elsajátítására
3 C++ A C++ mintaprogramok letölthet lthetőek ek a tanszéki web oldalról: l: Amit itt esetleg nem találnak lnak meg, az pedig a /Programozas2/ címen biztos megtalálhat lható.
4 Az első C++ program // A világ keletkezése és s pusztulása. sa. A // -lal kezdődő szöveg megjegyzés. #include <iostream> // innen jön j n az std::cout (nincs benne '.h'!) class Univerzum // a világnak mint objektumnak a deklaráci ciója // leírja az objektumot, de nem hoz létre l egyet sem. public: // enélk lkül l kívülrk lről l nem látnl tnánk nk az ezután n felsorolt függvf ggvényeket Univerzum() // 'constructor' ez hozza majd létre az objektumot std::cout << "Big bang\n"; // szöveg kiiratás s a képernyk pernyőre re (console output), végén v n soremelés ~Univerzum() // 'destructor' megsemmisíti az objektumot std::cout << "Viszl" Viszlát\n"; // szöveg kiiratás s a képernyk pernyőre re (console output) ; // Globális lis terület (minden a -eken kívül k l ) Itt jön j n létre l a világ. // Lefut a constructora és s kiírja a szöveget // ez kell, ez az első függvény ami meghívódik a globális lis változv ltozók // létrejl trejötte tte után. Most nem csinál l semmit n a "main()' lefutott a globális lis változv ltozók k megsemmisülnek. Lefut az "azuniverzum" destructora Univerzum azuniverzum; int main() // miután a "main()' lefutott a glob
5 C++ programok futása Általánosságban a programok futása során 1. Elősz ször r a globális lis objektumok jönnek j létre. l Elősz ször lefoglalódik a memória az objektumoknak, utána lefut a constructoruk. Alaptípusoknak pusoknak nincs constructoruk. Jelen esetben a constructor-t t mi definiáltuk, és s lefutásakor szöveget ír r ki. 2. A main() fut le. Jelen esetben nem csinál l semmit (csak( boldoggá teszi a C programozókat ). ). Minden globális lis függvf ggvényt (most nem volt egy sem) vagy a main, az általa hívott h függvényláncolat, ncolat, vagy az objektumok hívnak. h 3. A main befejezése után n a globális lis objektumok eltünnek. Eközben zben lefutnak a destructor-jaik. Jelen esetben a destructor-t t mi definiáltuk, és s lefutásakor szöveget ír r ki.
6 Megjegyzések A Microsoft Visual Studio (2005) beli C++ fordítónak meg kell adni egy stdafx.h nevű (akár üres) header fájl is az <iostream> előtt! Tovább bbá minden új j projekt (solution) eseten az alábbi részt r magától l beírja:. #include "stdafx.h" stdafx.h". int t_main(int argc, _TCHAR* argv[]) return 0; A _tmain() valójában egy MAKRÓ,, ami a mi esetünkben main()-nel nel ekvivalens. Így definiált lták: #define _tmain main A _TCHAR pedig egy típus, t ami most char -ral ekvivalens. Így definiálj lják: typedef char _TCHAR; A main() függvf ggvénynek vagy nincs argumentuma, vagy 2 vagy 3 van neki: int main(int argc, char *argv[], [char char *env* env[] []] ) Az argc az argv karakter mutatókat tartalmazó tömb elemeinek száma ma,, amely mutatói i a paranzssorbeli paraméterekre mutatnak. a 0. elem a végrahajtott v program neve. Ha az env tömb is jelen van a futtatási környezet (SET) elemeire mutató mutatókat tartalmazza. Pl.. ha a programot így indítottuk C:\sajat könyvtk nyvtárból l parancssorból l : program d d valami akkor argc == 3 és s az argv értékei: argv[0]= [0]="C:\sajat\program", argv[1]= "-d", argv[2]= "valami" Nem minden rendszeren kerül l be a 0. paraméterbe a teljes elérési út
7 Feladat Módosítsuk a programot úgy, hogy több t univerzumot hozzon létre. l Vajon milyen sorrendben törtt rténik ez? És s a megsemmisülésük? Adjunk minden világnak egy egyedi azonosítót, t, akkor megtudhatjuk:
8 A módosm dosított Univerzum // egy univerzum, amelyik tudja magáról l melyik class Univerzum // a világnak mint objektumnak a deklaráci ciója Az // leírja az objektumot, de nem hoz létre l egyet sem. public: // enélk lkül l kívülrk lről l nem látnl tnánk nk az ezután n felsorolt függvf ggvényeket Univerzum(int int melyik) : _azon(melyik) // : utáni rész r a 'preambulum' ld. alább std::cout << "A" A " << "_azon" << ". Big Bang \n"; ~Univerzum() std::cout << "Viszl" Viszlát\n"; private: // ezt csak k az objetum maga látja l (adatrejtés) // Jelölj ljük k a privát t változv ltozókat egy aláhúzás s karakterrel! const int _azon; // const ha egyszer létrejl trejött tt nem változv ltozhat meg az értéke // ezért nem lehet értéket adni neki a belül l csak a // 'preambulum'-ban. ban. A preambulum előbb hajtódik végre, v mint // az objektum létrehozl trehozása ;
9 Több Univerzum létrehozl trehozása Ennek használata:. Univerzum univ1(1), univ2(2); main() Univerzum univ(3);
10 Objektumokbeli függvények/módszerek Hogy lehetne megkérdezni a világt gtól, hogyh ő melyik? class Univerzum public:... int Azon() const // a const itt azt jelenti, hogy ez a függvf ggvény // nem változtat v meg egy változv ltozót t sem return _azon_ azon; // csak const függvf ggvények férhetnek f hozzá a // const objektumokhoz,, ill const objektumnak //csak const függvf ggvényeit hívhatjukvhatjuk meg // ez látszl tszólag egy költsk ltséges függvf ggvényhívás, de itt ingyen van... ;
11 Háttér r informáci ció Egy adott osztálynak megfelelő objektumok mérete m az objektumban tárolt adatok (konstansok és s változv ltozók) számára lefoglalt memória méretek összege. A függvf ggvények minden objektumra ugyanazok és s a méret számításban sban nem jelennek meg. Figyelem: az adatok mérete m lehet nagyobb, mint amit megadtunk! Ugyanis a korszerű processzorok valamivel gyorsabban érik el az adatot, ha az 'dupla szó' ' határra van illesztve. Ekkor pl. egy char típust pusú adat 4 bájt b helyet foglal el, amiből l csak 1-et 1 használ, a többi t csak helykitölt ltés. Honnan "tudja" egy osztály egy függvf ggvénye mely objektum adatait használja? Minden függvf ggvény kap egy adott objektumra mutató pointert is. Ezt a fordító program rakja bele első paraméterk terként, nekünk nk sosem kell megadni. Ennek neve: this pointer. A this pointert mi is használhatjuk (néha kell is).
12 Beágyaz gyazás Minden univerzumban van anyag: class Anyag public: Anyag(int mi):_azon(mi) cout << _azon << ". anyag létrejött\n"; ~Anyag() cout << _azon << ". anyag megsemmisült lt\n"; private: const int _azon; ;
13 Beágyaz gyazás s II. class Univerzum // az _anyag létrehozása a preambulumban azelőtt törtt rténik, hogy az public: // objektum létrejl trejönne // ezért amikor deklaráljuk ljuk alább nem kell argumentumot adni neki (nem ott hozzuk létre) l // A preambulumbeli sorrend lényegtelen. l Az értékadás s a deklarálási sorrend szerint törtt rténik Univerzum(int melyik, int anyag) : azon(melyik), anyag(_anyag) anyag) cout << _azon << ". Big Bang\n"; n"; ~Univerzum() cout << _azon << ". elpusztult\n"; private: const int azon;_ const Anyag anyag;_ ; Univerzum univ1(1,100), univ(2,200);
14 Beágyaz gyazás s III. A beágyaz gyazás s egy "van" neki" " kapcsolat. A létrehozl trehozás s sorrendje: elősz ször r az Univerzum _azon konstansa jön j n létre l és s kap értéket, majd a beágyazott _anyag objektum jön n létre l benne a saját _azon konstansával, aminek semmi köze k az őt t tartalmazó Univerzum objektum azonos nevű konstansához. ez a beágyazott objektum azért lehet konstans, mert értéke nem változik v amíg g a beágyaz gyazó osztály él.
15 Beágyaz gyazás s IV. A megsemmisülés s sorrendje elősz ször r a beágyaz gyazó objektum, az Univerzum pusztul el utána a beágyazott objektum, az Anyag
16 Objektum élettartama Legyen T egy típus t (pl. char, int, Univerzum) Globálisan, lisan, vagy blokkon belül l hozzunk létre l egy T típust pusú változót: t: T t; t A fordító lefoglal a t-nek t megfelelő nagyságú memóri riát (és s lefuttatja T constructor-át, t, ha van neki). Valahányszor t-t t használjuk erre a memóri riára ra hivatkozik a gépi g kódban. k A program (blokk) végén v t automatikusan megsemmisül (destructor-a a lefut).
17 Referenciák T & rt = t; rt egy e referencia t re. Referenciát t csak a definiálása során n végzett v értékadással hozhatunk létre. l Nem változtathatv ltoztatható. A referencia a változv ltozó egy másik m neve (alias). Hasznos függvf ggvényhívásban, ha több t értéket akarunk visszaadni (C-ben erre mutatókat kellene használni): int fuggveny(int i, int &j, int &k); Ez a függvf ggvény 3 értéket ad vissza. A szokásoson soson kívül k l j-t j és k-t t is. Ezek használata függvf ggvényen belül l olyan, mint az ott definiált változv ltozóké lenne.
18 Mutatók T *pt; ez a deklaráci ció egy T típust pusú változóra mutató mutatót (pointert) hoz létre. l A fordító csak egy mutatónyi memóri riát foglal le, ami nem mutat érvényes memória címre! c Használata: Pl. a T t,*ptt *pt; deklaráci ció és pt = & t; értékadás s után t és *pt ugyanaz a változv ltozó A pt = new T; dinamikus memória foglalással (ekkor T construc- tora a is lefut).. A pt t t a program vége v előtt fel kell szabadítani: delete pt; -vel.. (ekkor( a pt által mutatott T objektum destructora is lefut). A pt = new T[sizeT size]; ; dinamikus memória foglalással (T constructora minden elemre lefut).. A pt t t a program vége v előtt fel kell szabadítani: delete [] pt; -vel.. (ekkor( minden elem destructora lefut) Tömböt t csak akkor lehet ily módon m létrehozni, l ha a T osztálynak van argumrntum nélkn lküli li T() constructora.
19 Mutatók k II. Mutatókat csak akkor használjunk, ha nincs más s mód! m Mutatók k használat latának veszélyei: 1. Nem inicializált lt mutatók 2. Felszabadított memóri riára ra mutató mutatók 3. Egy tömb t vége v utánra mutató mutatók 4. Mutatók, amik másra m mutatnak, mint gondolnánk nk 5. Mutatók, amikről l fogalmunk sincs hova mutatnak
20 Mutatók k III. Mutató aritmetika (a C és s C++ előnye): const int size=100; T t, *pt, *p; pt = new T[size]; // pt a size elemű tömb első (0 indexű) ) elemére mutat p = pt; ++p; // p most a pt által mutatott tömb t 2. (1 indexű) ) elemére mutat p = pt + 2; // p a pt által mutatott tömb t 3. (2 indexű) ) elemére mutat Ezek ekvivalensek: *(pt+2) pt[2] Növelő operátor: ++, ill. csökkent kkentő operátor: -- Van előzetes zetes- és s utólagos lagos- verziójuk, ++p és p++,, ill. ++p és p Pl. legyen int a[2] a = 3, 4; és int *pi = &a; ekkor *++pi = 5; 5 után n a = 3, 5 lesz, míg g ehelyett *pi++ = 5 után a = 5,4 lesz.. pip mindkét t esetben a[1]-re fog mutatni.
21 Kitérő: : Mutatók k IV. T const *p; vagy const T *p; p egy mutató ami konstans T objektum(sorozat)ra mutat. T * const p = & t; t p egy konstans mutató,, ami egy T objektumra mutat. Nem lehet megváltoztatni (mintha hivatkozás s lenne). A deklaráci ciójával egyidejűleg kell definiálni is. A p által mutatott értékek megváltoztathat ltoztathatóak. ak. T const * const p = & t; t p is és s az általa mutatott változv ltozó is konstans
22 Leszármaztat rmaztatás Írjuk le az embereket, azaz a férfiakat f és s a nőket. n Minden Ember-nek vannak közös k s tulajdonságai: feje, szeme, szája, stb. Ezért célszerc lszerű az összes Embert egy EMBER osztállyal definiálni. Tudjuk, hogy minden Nő és s Férfi F egyúttal Ember is. Ugyanakkor a férfiaknak f és s nőknek n vannak csak rájuk jellemző tulajdonságaik. Ezért írjuk le a nőket n a NO a Férfiakat F a FÉRFI F osztallyal. Beágyazhatn gyazhatnánk nk minden NO-be és s FERFI-be egy EMBER-t, de ez nem a keresett kapcsolat!! Nem azt akarjuk pl. leírni, hogy "Minden" nőben n van valami" ember,, hanem azt, hogy "Minden" nőn ember".
23 Leszármaztat rmaztatás s II. Próbáljuk meg a definíci ciókat (az ún. interface-t) t) és a megvalósítást/haszn st/használatot különvk nválasztani! Rakjuk az osztálydefin lydefiníciókat külön k n fájlba. f Ennek kiterjesztése se rendszerint.h. ('header' fájl) f Tehát t az alábbi forrás s fájljaink f lesznek: nemek.h az osztálydeklar lydeklarációkkal nemek.cpp a definíci ciók main.cpp ebben van a main() a futtatáshoz Egy bonyolultabb programban több t.h és s.cpp fájl f van. A main() függvf ggvény csak egyben lehet.
24 Leszármaztat rmaztatás s III. A teljes Visual C++ os projekt a Tanszéki honlapról l letölthet lthető és (bővebb) magyarázatokat is tartalmaz A nemek.h fájl f tartalma (ahhoz, hogy ezt a fájlt a fordító értelmezni tudja azután n lehet csak használni, miután n az iostream-et et már m r include-oltuk)
25 nemek.h I. #if!defined(_nemekh) #define _nemekh // feltételes teles fordítási blokk eleje. A blokk vége v (#endif) a nemek.h IV oldalon namespace nemek class SZOVEG // segs egéd d osztály a nevek tárolt rolásához. public: SZOVEG(char txt[] ) _pszoveg = new char[ strlen(txt)+1]; // dinamikus memória a szövegnek és s az azt lezáró \0-nak strcpy(_pszoveg, txt); // szöveg átmásolása a pszoveg-be a záróz 0 karakterrel együtt ~SZOVEG() delete [] _pszoveg; // a lefoglalt t memória felszabadítása sa char const *Szoveg() const return _pszoveg; private: char *_pszoveg; // ez nem lehet konstans ;
26 nemek.h II. class EMBER public: EMBER(char nev[]); ; // a függvf ggvény törzse t máshol m van ~EMBER(); const char *Neve() const return _nev.szoveg(); virtual char *Megszolitasa()=0; // "tisztán n virtuális függvf ggvény" majd csak a leszármaztatott osztályban lesz definiálva. Emiatt EMBER objektumot nem lehet létrehozni minden leszármaztatott osztályban más m s lesz void Koszonti(EMBER &e) ; // Bármilyen B EMBER-t t elfogad protected: // Mintha private: lenne, de a leszámaztatott osztály is látjal const SZOVEG _nev; // az EMBER élete során n nem változikv ;
27 nemek.h III. class FERFI: public EMBER // azaz a FERFI az egy EMBER és s annak minden public és s protected változóját és s módszerm dszerét t eléri public: FERFI(char nev[]): EMBER(nev); ~FERFI() char *Megszolitasa() return "Uram"; ;
28 nemek.h IV. class NO: public EMBER public: NO(char nev[]): EMBER(nev); ~NO() char *Megszolitasa() return "Hölgyem"; ; // A nemek namespace vége // a nemek.h I. oldalon kezdett feltételesen telesen lefordítand tandó blokk végev #endif
29 nemek.cpp #include "stdafx.h" // ez az előre fordított header-ek ek miatt kell. Microsoft specialitás #include <iostream> // ebben van a << definíá íálása using std::cout; using std::endl; // ezután n nem kell pl std::cout -ot írni. Elég g a cout. #include "nemek.h" using namespace nemek; // hogy ne kelljen alább nemek::ferfi-t t használnunk EMBER::EMBER(char nev[]):_nev(nev) cout << _nev.szoveg() << " vagyok "; EMBER::~EMBER() cout << "Viszlát! mondja " << _nev.szoveg() << endl;
30 nemek.cpp II. void EMBER::Koszonti(EMBER &e) cout << "Jó napot " << e.megszolitasa() << "!" << endl; Miután n a Megszólítás() s() virtuális mindíg g a leszármaztatott objektumnak megfelelő hívódik meg. Ha nem az lenne, akkor az EMBER osztály lyé hívódna meg.
31 nemek.cpp III. FERFI::FERFI(char nev[]): EMBER(nev) cout << "és" s férfi." f << endl; NO::NO(char nev[]): EMBER(nev) cout << "és" s nő." n << endl;
32 main.cpp #include "stdafx.h" // ez az előre fordított header-ek ek miatt kell. Microsoft specialitás #include <iostream> // ebben van a << definíá íálása using namespace std; // ezután n nem kell pl std::cout -ot írni. Elég g a cout. #include "nemek.h" // itt definiáltuk az osztályokat egy saját t namespace- en beül using namespace nemek; // hogy ne kelljen alább nemek::ferfi-t használnunk FERFI adam("ádám"); m"); // adam nem csak FÉRFI, F de EMBER is NO eva("éva"); va"); // eva nem csak NO, de EMBER is
33 main.cpp II. // a Koszonti() függvf ggvény EMBER-t t vár, v mégis m 'tudja', hogy FERFI-t t vagy NO-t t köszk szönt int main() cout << " " \n"; adam.koszonti(eva); eva.koszonti(adam); cout << " " \n"; return 0;
34 Leszármaztat rmaztatás IV. A leszármaztat rmaztatás s egy "az" egy" " kapcsolat: a leszármaztatott objektum az egy szülő objektum plusz tulajdonságokkal A leszármaztatott objektum örökli a szülő adat tagjait és s módszereit, m kivéve ve a következk vetkezőket: ket: Constructor és s destructor értékadás s operátora: operator=() friend függvények és s osztályok A leszármaztatott objektum átdefiniálhatja az anyaobjektum módszereitm A leszármaztat rmaztatás s lehet: public, protected, vagy private:
35 Leszármaztat rmaztatás V. Hozzáférés s szabályoz lyozása a leszármaztat rmaztatás s módja m szerint Leszármaztat rmaztatás s módjam class B : public A class B : private A class B:protected A ami A számára public protected private public protected private public protected private az B számára public protected nem hozzáférhet rhető private private nem hozzáférhet rhető protected protected nem hozzáférhet rhető
36 Megjegyzés class A public: void f(); void g(); class B : private A // ez minden A beli public vagy protetced adatból l private-t t csinál // B-ben B [ B nem fér f r hozzá A private tagjaihoz] public: using A::f; // DE az A beli public f() függvf ggvény public lesz B-ben B is // [f után n nincs ()!], miközben g() private függvf ggvénye B-nekB
37 Leszármaztat rmaztatás V. A létrehozl trehozások sorrendje: elősz ször r a szülő objektum jön j n létre l a szokásos sos módon. Ha vannak benne beágyaz gyazások, akkor elősz ször r azok, utána az őket tartalmazó objektum ezután n jön j n létre l a leszármaztatott objektum ugyanilyen módon. m A megsemmisülés s sorrendje a létrehozl trehozás sorrendjének nek a fordítottja.
38 Hibakezelés s I. Programhibák k lekezelésének helyes módszere m a kivétel (exception)) kezelés. A problémás s részeket r egy try blokkba rakjuk Hiba esetén n a try blokkban végrehajtott v függvf ggvény egy kivételt ún. exception-t t dob. Pl. int HibatAdoFuggveny(char szname[]) throw( ) // a throw(...) a függvf ggvény név n v után n azt jelzi, hogy vmilyen // egyelőre határozatlan exception-t t dobhat f = fopen(szname,, "wb" wb"); if(!f (!f) throw FileIOException eio("fájl megnyitási hiba");... return 0; A throw(...) a függvf ggvénynév v után n opcionális. Ha azt akarjuk kifejezni, hogy egy függvény nem dobbhat exception-t t akkor a függvf ggvény neve után n a "..."" argumentum nálkn lküli li throw() t írjunk.
39 Hibakezelés s II. A try blokk után n egy vagy többt catch blokkban kapjuk el a dobott exception-t Pl. try... esetleg hibát okozó függvényhívások... catch (OutOfMemoryException &e) hibakezelés I. // csak OutOfMemoryException típust pusú exception re jön j n ide throw; // ugyanezt az exception-t t továbbk bbküldi catch (...) // minden eddig nem kezelt Exceptionra ide jönj hibakezelés II. // innen nem küldjk ldjük k tovább
40 Operátor túlterhelt lterhelés s (overloading) A C++ ban szinte minden operátor túlterhelhető.. Pl: = + - * / += -= = *= /= == () [] ^ ~ new -> & Nem túlterhelhetőek: ek:.? sizeof Csak olyan túlterhelt lterhelések lehetségesek, amelyekben legalább az egyik paraméter nem beépített típus. t
41 Operátor túlterhelt lterhelés Szintaxis (példa) 1. osztály deklaráci ción n belül: class COMPLEX public: COMPLEX(double r,double i) : real(r), im(i) double real,im; COMPLEX operator+(const COMPLEX &c2) COMPLEX c(0,0); // ez egy lokális lis változv ltozó c.real = real + c2.real; // mert nem akarjuk megváltoztatni c.im =im + c2.im; // az objektumot, amihez hozzáadunk return c; // érték k alapján n adja vissza, ezért nem baj // hogy a lokális lis változv ltozó megsemmisül ;
42 Operátor túlterhelt lterhelés Szintaxis (példa) 1. osztály deklaráci ción kívül class COMPLEX public: COMPLEX(double r,double i) : real(r), im(i) double real,im; ; COMPLEX operator+(complex &c1, const COMPLEX &c2) COMPLEX c(0,0); c.real = c1.real + c2.real; c.im = c1.im + c2.im; return c;
43 Operátor túlterhelt lterhelés Bármelyik használata lata: using namespace std; int main() COMPLEX a(1,-1), 1), b(3,-3); 3); cout << "a: " << a.real << " + " << a.im << "i\n"; cout << "b: " << b.real << " + " << b.im << "i\n"; cout << "a + b= " << (a+b).real << " + " << (a+b).im << "i\n"; cout << "a + b + b= " << (a+b+b).real << " + " << (a+b+b).im << "i\n"; // próbáljuk ki nem lokális lis változv ltozóval az operator+()-ban...
44 Teljesebb példa class COMPLEX public: COMPLEX():_re(0),_im(0) COMPLEX(double re) : _re(re),_im(0) COMPLEX(double re, double im): _re(re), _im(im) COMPLEX &operator=(double i) _re = i; _im = 0; return *this; COMPLEX &operator=(const COMPLEX c) _re = c._re; _im = c._im; return *this; COMPLEX operator+(double i) COMPLEX c; c._re = _re + i; return n c; COMPLEX operator+(const COMPLEX c) COMPLEX t; t._re = _re + c._re; t._im = c._im; ; return t; COMPLEX operator*(const COMPLEX c) COMPLEX t; t._re = _re*c._re -_im*c._im; t._im= _re*c._im+_im*c._re; return t; double Re() return _re; double Im() return _im; private: double _re, _im; ;
45 Template-ek ek Sokszor találunk lunk általános összefüggéseket, illetve feladatokat. Pl. két k t változv ltozó felcserélése: se: void swap(int &i, int &j) int k = i; i = j; j = k; void swap(complex &c1, COMPLEX &c2) COMPLEX c = c1; c1 = c2; c2 = c1; Ez függvény túlterheléssel l is megoldható,, mint itt, de van jobb módszer m is: az általános (generic) osztályok, eljárások a template-ek ek. Ekkor a fordítóprogram generálja a kódot. k
46 Template-ek ek template <class A> swap(a &a, A &b) A c = a; a=b; b = c; Használata lata: int i=3,j=4; swap <int>(i,j); COMPLEX a(1,1),b(2,-3); swap <COMPLEX>(a,b a,b); Megjegyzés: a swap template az std namespace-ben már r definiálva van.
47 Class Template-ek ek Nem csak függvf ggvénynek lehet template-je je, hanem osztályoknak is. Pl: template <class T> class GVECTOR // tetszőlege objektumok tárolására ra alkalmas vektor public: GVECTOR(int mini, int maxi) : _min(mini), _max(maxi), _dim(_max - _min + 1) _v = new T[_dim]; ~GVECTOR() delete [] _v; T &operator[](& operator[](int i) if(i < _min i > _max) throw "index hiba"; return _v[ i - _min];... // további operátorok, private tagok, stb ; A teljes példa p letölthet lthető a tanszéki honlapról. l.
Programozás II gyakorlat. 8. Operátor túlterhelés
Programozás II gyakorlat 8. Operátor túlterhelés Kezdő feladat Írjunk egy Vector osztályt, amely n db double értéket tárol. A konstruktor kapja meg az elemek számát. Írj egy set(int idx, double v) függvényt,
RészletesebbenProgramozá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észletesebben1. 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észletesebbenProgramozá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észletesebbenProgramozá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észletesebbenProgramozá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észletesebben3. 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észletesebben1. 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észletesebbenKivételkezelés a C++ nyelvben Bevezetés
Kivételkezelés a C++ nyelvben Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Kivételkezelés a C++ nyelvben CPP9 / 1 Hagyományos hibakezelés Függvény visszatérési értéke (paramétere) hátrányai:
RészletesebbenProgramozás módszertan
Programozás módszertan p. Programozás módszertan Operátorok túlterhelése a C++ nyelvben Pere László (pipas@linux.pte.hu) PÉCSI TUDOMÁNYEGYETEM TERMÉSZETTUDOMÁNYI KAR INFORMATIKA TANSZÉK Bevezetés Programozás
RészletesebbenProgramozá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észletesebbenC 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észletesebbenGlobális operátor overloading
Programozás II. 9. gyakorlat Operátor overloading 2: Unáris operátorok, globálisan megvalósított operátorok, > operátorok Kivételkezelés, IO library Globális operátor overloading Előző alkalommal
RészletesebbenProgramozás C++ -ban
8. Dinamikus objektumok Programozás C++ -ban Ahhoz hogy általános prolémákat is meg tudjunk oldani, szükség van arra, hogy dinamikusan hozhassunk létre vagy szüntethessünk meg objektumokat. A C programozási
RészletesebbenProgramozás II gyakorlat. 4. Öröklődés
Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési
RészletesebbenPé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észletesebbenProgramozá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észletesebben117. AA Megoldó Alfréd AA 117.
Programozás alapjai 2. (inf.) pót-pótzárthelyi 2011.05.26. gyak. hiányzás: kzhpont: MEG123 IB.028/117. NZH:0 PZH:n Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenKivételek, kivételkezelés a C++ nyelvben
2009. Kivételek, kivételkezelés a C++ nyelvben Haladó C++ programozás Kurucz Attila ELTE - IK 2009.06.09. Tartalomjegyzék Tartalomjegyzék... 2 Mi a kivételkezelés?... 3 Alapfogalmak... 3 Kivétel... 3 Try
RészletesebbenProgramozá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észletesebben4. Öröklődés. Programozás II
4. Öröklődés Programozás II Mielőtt belevágunk Egy Tárgy típusú objektumokat tároló tömb i. elemében tároljunk el egy új tárgyat Rossz módszer: tomb[i].setnev( uj.getnev() ); tomb[i].setertek( uj.getertek()
RészletesebbenProgramozá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észletesebbenBevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
RészletesebbenProgramozás s 2. Alapok
Programozás s 2 Objektum Orientált Programozás Alapok utolsó változtatás s 2008.04.12. Alapok A programokat valamilyen "programozási nyelv"-en en írjuk A programozási nyelv formális (szintaktikai) és s
RészletesebbenC++ 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észletesebbenProgramozás II. 6.Öröklés Dr. Iványi Péter
Programozás II. 6.Öröklés Dr. Iványi Péter 1 Öröklés Programozók lusta emberek, nem szeretnék valamit kétszer leírni Miért veszélyes? Nem hatékony Újra kell tárolni a kódot, újra le kell fordítani Karbantartás
Részletesebben5. Gyakorlat. struct diak {
Rövid elméleti összefoglaló 5. Gyakorlat Felhasználó által definiált adattípusok: A typedef egy speciális tárolási osztály, mellyel érvényes típusokhoz szinonim nevet rendelhetünk. typedef létező_típus
RészletesebbenObjektumok 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észletesebbenStatikus 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- 1 - Konstansok használata. Döntsük el, van-e fordítási idejű hiba az alábbi programrészletekben! a) const char * str="zh"; str[0]++;
Az alábbi feladatokat a AUT.BME.HU tanszéki weboldalon fellelhető AUT C++ Példatárból másoltam ki. A feladatokat a Programozás alapjai 2. ZH-ra való felkészülés jegyében válogattam, a példák nagy részét
RészletesebbenC++ Gyakorlat jegyzet 7. óra
C++ Gyakorlat jegyzet 7. óra A jegyzetet Umann Kristóf készítette Horváth Gábor gyakorlata alapján. (2018. április 30.) 0.1. Header fájlra és fordításra egységre szétbontás Ha egy darab header fájlban
RészletesebbenSzá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észletesebbenC++ 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észletesebbenOOP #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észletesebbenBevezeté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észletesebbenBevezeté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észletesebbenProgramozás I. 5. Előadás: Függvények
Programozás I 5. Előadás: Függvények Függvény Egy alprogram Egy C program általában több kisméretű, könnyen értelmezhető függvényből áll Egy függvény megtalálható minden C programban: ez a main függvény
RészletesebbenProgramozási Nyelvek: C++
Programozási Nyelvek: C++ Gyakorló feladatkönyv Umann Kristóf #include "CppStudent.h" int main() { CppStudent *reader = new CppStudent(); reader->readbook(); while(!reader->doesunderstand()) { reader->exercise();
RészletesebbenVisual 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észletesebbenSTL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1
STL gyakorlat C++ Izsó Tamás 2016. május 9. Izsó Tamás STL gyakorlat/ 1 Komponensek kapcsolata Deklarálja az alábbi osztálydiagramon szereplő osztályok közül az A, AA és AB osztályokat! A konstruktorokat
RészletesebbenA 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észletesebbenKivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat
Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot
Részletesebben7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
RészletesebbenProgramozás. C++ típusok, operátorok. Fodor Attila
Programozás C++ típusok, operátorok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. március 4. Deklaráció és definíció C++
Részletesebben8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
RészletesebbenJárműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a
RészletesebbenProgramozá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észletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Sztringek Osztályok alapjai Sztringek Szöveges adatok kezelése Sztring Karakterlánc (string): Szöveges adat Karaktertömbként tárolva A szöveg végét a speciális
Részletesebben500. AA Megoldó Alfréd AA 500.
Programozás alapjai 2. NZH 2010.05.13. gyakorlat: / Hiány:0 ZH:0 MEGOLD IB.027/51. Hftest: 0 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
RészletesebbenC 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észletesebbenPénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító
RészletesebbenOsztá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észletesebbenJava 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észletesebbenBevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek
Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 11. előadás 2014.05.12. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Adatszerkezetek
RészletesebbenOsztá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észletesebben1. 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észletesebbenProgramozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek Szeberényi Imre BME IIT M Ű E G Y T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2011.03.01. -1-
RészletesebbenMaximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
RészletesebbenProgramozá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észletesebbenAlkalmazott modul: Programozás 8. előadás. Strukturált programozás: dinamikus memóriakezelés. Dinamikus memóriakezelés. Dinamikus memóriakezelés
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 8. előadás Strukturált programozás: dinamikus memóriakezelés Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
Részletesebben500. CC Megoldó Alfréd CC 500.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: G1/IB.146 Hiány:3 ZH:7,71 MEGOLD SCH/500. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenProgramozá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észletesebbenBevezeté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észletesebbenAlprogramok, paraméterátadás
ELTE Informatikai Kar, Programozási Nyelvek és Fordítóprogramok Tanszék October 24, 2016 Programozási nyelvek Alprogramok Függvények, eljárások Metódusok Korutinok stb. Alprogramok Alprogram: olyan nyelvi
RészletesebbenOsztá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észletesebbenBevezeté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észletesebbenProgramozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia
Öröklés ism. Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia Szeberényi Imre BME IIT Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
RészletesebbenBevezetés a programozásba I.
Bevezetés a programozásba I. 9. gyakorlat Intelligens tömbök, mátrixok, függvények Surányi Márton PPKE-ITK 2010.11.09. C++-ban van lehetőség (statikus) tömbök használatára ezeknek a méretét fordítási időben
RészletesebbenAlkalmazott modul: Programozás 10. fejezet. Strukturált programozás: dinamikus memóriakezelés. Giachetta Roberto
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 10. fejezet Strukturált programozás: dinamikus memóriakezelés Giachetta Roberto A jegyzet az ELTE Informatikai Karának 2015.
Részletesebben1.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észletesebben0.2.1 Operátorok túlterhelése (műveletek definiálhatók felhaszn. típusokra) Kutya. Eb1. Eb2. Név (txt): Rex. Blöki. Német juhász 3
0 Az objektum-orientáltság 0.1 Objektum fogalma Egy rendszer egyedileg azonosítható szereplője adatokkal és működéssel. Egységbezárás (encapsulation) - viselkedés a külvilág felé - belső struktúra (kívülről
RészletesebbenC++ 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észletesebben1.AA MEGOLDÓ BERCI AA 1.
Programozás alapjai 2. (inf.) 2. zárthelyi 2015.05.07. gyak./lab. hiányzás: 3/2 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat
RészletesebbenSzövegek C++ -ban, a string osztály
Szövegek C++ -ban, a string osztály A string osztály a Szabványos C++ könyvtár (Standard Template Library) része és bár az objektum-orientált programozásról, az osztályokról, csak később esik szó, a string
RészletesebbenProgramozás s 2. C# nyelven
Programozás s 2 Objektum Orientált Programozás C# nyelven utolsó változtatás s 2008.05.02. .NET C# - Microsoft találm lmánya a.net platform számára. A C++ 'továbbfejleszt bbfejlesztése' se'.net hálózaton
RészletesebbenA C programozási nyelv VI. Parancssori argumentumok File kezelés
A C programozási nyelv VI. Parancssori argumentumok File kezelés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv VI. (Parancssori argumentum, file kezelés) CBEV6 / 1 Parancssori
RészletesebbenBevezetés a programozásba. 8. Előadás: Függvények 2.
Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout
RészletesebbenProgramozá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észletesebbenTartalom DCOM. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés. Történeti áttekintés
Tartalom D Szoftvertechnológia elıadás Architektúra D vs CORBA Példá 2 1987 Dynamic Data Exchange (DDE) Windows 2.0-ban Windows alkalmazások közötti adatcsere Ma is használatos (pl. vágólap) NetDDE NetBIOS
RészletesebbenBevezeté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észletesebbenBevezeté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észletesebbenGregorics Tibor Modularizált programok C++ nyelvi elemei 1
Gregorics Tibor Modularizált programok C++ nyelvi elemei 1 Függvények és paraméterátadás A függvény egy olyan programblokk, melynek végrehajtását a program bármelyik olyan helyéről lehet kezdeményezni
RészletesebbenDinamikus 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észletesebbenC memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.
C memóriakezelés Ez a kis segédanyag az adatszerkezetek órán használt eszközök megértését hivatott elősegíteni. A teljesség igénye nélkül kerül bemutatásra a mutató típus és a dinamikus memóriakezelés.
RészletesebbenA 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észletesebbenProgramozás alapjai II. (1. ea) C++
Programozás alapjai II. (1. ea) C++ C++ kialakulása, nem OO újdonságok: Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.02.05.
RészletesebbenProgramozás alapjai II. (1. ea) C++
Programozás alapjai II. (1. ea) C++ C++ kialakulása, nem OO újdonságok: Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2019.02.05.
RészletesebbenA 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észletesebben1. 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észletesebbenVirtuá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észletesebbenObjektumorientált programozás C# nyelven
Objektumorientált programozás C# nyelven 1. rész Osztályok és objektumok Mezık és metódusok Konstruktor és destruktor Névterek és hatókörök Láthatósági szintek Osztály szintő tagok Beágyazott osztályok
RészletesebbenFüggvény pointer. Feladat: Egy tömbben soroljunk fel függvényeket, és hívjuk meg valahányszor.
Függvény pointer Több feladat közül futási időben döntöm el, hogy melyiket hajtom végre. A függvényre mutató pointer a függvény kódjának a címére mutat, azon keresztül meghívhatom a függvényt. A pointernek
RészletesebbenISA szimulátor objektum-orientált modell (C++)
Budapesti Műszaki és Gazdaságtudományi Egyetem ISA szimulátor objektum-orientált modell (C++) Horváth Péter Elektronikus Eszközök Tanszéke 2015. február 12. Horváth Péter ISA szimulátor objektum-orientált
RészletesebbenProgramozá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.AA Megoldó Alfréd AA.
Programozás alapjai 2. (inf.) pót zárthelyi 2013.05.23. gyak. hiányzás: kzh: ZH:0 ABCDEF MEG/200. Hftest: (p) Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
RészletesebbenAz osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java
Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:
RészletesebbenC 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észletesebbenBevezetés a programozásba előadás: Öröklődés
Bevezetés a programozásba 2 5. előadás: Öröklődés emlékeztető Tagfüggvény struct koord { double x,y,r; void set(double ux, double uy) { x=ux; y=uy; r=sqrt(x*x+y*y); } Használat: koord k; k.set(4,5); Egységbezárás
RészletesebbenBevezeté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észletesebbenPelda ö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