Programozás alapjai II. (8. ea) C++ bejárók és egy tervezési példa
|
|
- Dénes Fábián
- 6 évvel ezelőtt
- Látták:
Átírás
1 Programozás alapjai II. (8. ea) C++ bejárók és egy tervezési példa Szeberényi Imre, Somogyi Péter BME IIT M Ű E G Y E T E M C++ programozási nyelv BME-IIT Sz.I
2 Előző óra összefoglalása /1 Generikus osztályokkal és függvényekkel általános szerkezetekhez jutunk: Típust paraméterként adhatunk meg. A generikus osztály v. függvény később a típusnak megfelelően példányosítható. A specializáció során a sablonból az általánostól eltérő példány hozható létre. A függvényparaméterekből a konkrét sablonpéldány levezethető. Függvénysablon átdefiniálható. C++ programozási nyelv BME-IIT Sz.I. BME-IIT Sz.I
3 Programtervezési minták Gyakran előforduló problémák általános, újrafelhasználható megoldása. Az ötlet az építészetből származik, a 90-es években vette át a programozás. Fontos, hogy nevük van! Így mindenki azonnal érti miről van szó. Három fő csoport: létrehozási, szerkesztési, viselkedési minta. A tárgy keretében csak 1-2 jellegzetes mintát ismerünk meg. Részletesen később. C++ programozási nyelv BME-IIT Sz.I
4 Adapterek Másként szeretnénk elérni, és/vagy kicsit másként szeretnénk használni. Pl: Van egy generikus tömbünk ami indexelhető, de szeretnénk inkább az at() tagfüggvénnyel elérni az elemeit // Van: template <class T, size_t s> class Array { T t[s]; public: T& operator[](size_t i) { return t[i]; ; // Kell: MyArray<int, 10> i10; MyArray<double, 5> d5; cout << i10.at(5); cout << d5.at(5); //!! C++ programozási nyelv BME-IIT Sz.I
5 Adapter megvalósítása #1 // Tartalmazott objektummal (delegáció): template <class T, size_t s> class MyArray { Array<T, s> a; public: // Szükség lehet a tartalmazott konstruktorának explicit meghívására // MyArray(param) :a(param) { // Az átalakítást végző függvények... T& at(size_t i) { if (i >= s) throw std::out_of_range("myarray"); return a[i]; ; C++ programozási nyelv BME-IIT Sz.I
6 Adapter megvalósítása #2 // Örökléssel lehet más is! template <class T, size_t s> class MyArray : public Array<T, s> { public: // Szükség lehet a tartalmazott konstruktorának explicit meghívására // MyArray(param) :Array<T, s>(param) { // Az átalakítást végző függvények... T& at(size_t i) { if (i >= s) throw std::out_of_range("myarray"); return Array<T, s>::operator[](i); ; C++ programozási nyelv BME-IIT Sz.I
7 Következtetések Adapter minta nem kötődik a sablonokhoz! Megvalósítása: Öröklés: kompatibilitás kihasználása meglevő publikus függvények továbbadása Tartalmazás: tartalmazott obj. dolgai rejtve maradnak a nem módosított tagfüggvényeket is delegálni kell C++ programozási nyelv BME-IIT Sz.I
8 Összetettebb példa: Lista sablon Műveletek: beszur() új elem felvétele kovetkezo() soron következő elem kiolvasása jelzi, ha elérte a végét és újra az elejére áll. Játsszuk el egészekkel: strázsa (őr/sentinel) C++ programozási nyelv BME-IIT Sz.I
9 Két osztály: Lista Lista tervezése pointer az első elemre (első elem) pointer az akt elemre Művelet: beszur(), kovetkezo() ListaElem adat pointer önmagára Művelet: másol, létrehoz C++ programozási nyelv BME-IIT Sz.I
10 A két osztály kapcsolata generikus típus önhivatkozás beágyazott osztály C++ programozási nyelv BME-IIT Sz.I
11 Lista osztály sablonja template <class T> class Lista { // Lista osztálysablon struct ListaElem { // privát struktúra T adat; // adat ListaElem *kov; // következő elem ListaElem(ListaElem *p = NULL) :kov(p) { ; ListaElem *elso, *akt; // első + akt pointer bool hasonlit(t d1, T d2) { return(d1<d2); public: Lista() { akt = elso = new ListaElem; // első + akt. void beszur(const T& dat); // elem beszúrása bool kovetkezo(t& dat); // következő elem ~Lista() { /* házi feladat */ ; ; C++ programozási nyelv BME-IIT Sz.I
12 Tagfüggvények sablonja template <class T> // tagfüggvénysablon void Lista<T>::beszur(const T& dat) { ListaElem *p; // futó pointer for (p = elso; p->kov!= NULL && hasonlit(p->adat, dat); p = p->kov); ListaElem *uj = new ListaElem(*p); //régit ámásolja p->adat = dat; p->kov = uj; // új adat beírása template <class T> // tagfüggvénysablon bool Lista<T>::kovetkezo(T& dat) {// következő elem if (akt->kov == NULL) { akt = elso; return(false); dat = akt->adat; akt = akt->kov; return(true); C++ programozási nyelv BME-IIT Sz.I
13 Lista sablon használata #include "generikus_lista.hpp" // sablonok int main() { sablon példányosítása Lista<int> L; // int lista Lista<double> Ld; // double lista Lista<const char*> Ls; // const char* lista L.beszur(1); L.beszur(19); L.beszur(-41); Ls.beszur("Alma"); Ls.beszur("Hello"); Ls.beszur("Aladar"); int x; while (L.kovetkezo(x)) std::cout << x << std::endl; const char *s; while (Ls.kovetkezo(s)) std::cout << s << std::endl; return 0; Jól fog működni? bool hasonlit(t d1, T d2) { return(d1<d2); // const char* < const char* C++ programozási nyelv BME-IIT Sz.I
14 Specializációval #include "generikus_lista.hpp" // sablonok #include <cstring> template<> bool Lista<const char*>::hasonlit(const char *s1, const char *s2) {// spec. return(std::strcmp(s1, s2) < 0); Így már ábécé int main() { szerint rendez. Lista<int> L; // int lista Lista<double> Ld; // double lista Lista<const char*> Ls; // char* lista L.beszur(1); L.beszur(19); L.beszur(-41); Ls.beszur("Alma"); Ls.beszur("Hello"); Ls.beszur("Aladar"); int x; while (L.kovetkezo(x)) std::cout << x << std::endl; const char *s; while (Ls.kovetkezo(s)) std::cout << s << stt::endl; return 0; C++ programozási nyelv BME-IIT Sz.I
15 Lista sablon felülvizsgálata Írjuk ki minden elemhez, hogy mely további elemet oszt maradék nélkül! 1. Kiírjuk az elemet, majd végigmegyünk a listán. 2. Kiírjuk a következő elemet, de melyik a következő? C++ programozási nyelv BME-IIT Sz.I
16 Lista sablon felülvizsgálata /2 Tegyünk bele újabb pointert? Mégis hányat? Adjuk ki valahogy az adat pointerét? Ekkor ismernünk kell a belső szerkezetet. Megoldás: Olyan általánosított mutató, ami nem ad ki felesleges információt a belső szerkezetről. Bejáró (iterátor) C++ programozási nyelv BME-IIT Sz.I
17 Bejárók (iterátorok) Általánosított adatsorozat elemeire hivatkozó elvont mutatóobjektum. Legfontosabb műveletei: éppen akt. elem elérése (* ->) következő elemre lépés (++) mutatók összehasonlítása ( ==,!= ) mutatóobjektum létrehozása az első elemre ( begin() ) mutatóobj. létrehozása az utolsó utáni elemre( end() ) Lista<int> li; Lista<int>::iterator i1, i2; for (i1 = li.begin(); i1!= li.end(); i1++) int x = *i1; Tároló objektum (lista) C++ programozási nyelv BME-IIT Sz.I
18 Újabb absztrakciós eszköz Általánosan kezelhetjük a tárolókat, azok belső megvalósításának ismerete nélkül. Példa: előző feladatot ismeretlen szerkezetű tárolóban tárolt elemekkel akarjuk elvégezni: Tarolo<int> t; Tarolo<int>::iterator i1, i2; for (i1 = t.begin(); i1!= t.end(); ++i1) { cout << *i1 << " osztja a kovetkezoket:"; i2 = i1; for (++i2; i2!= t.end(); ++i2) if (*i2 % *i1 == 0) cout << " " << *i2; cout << endl; C++ programozási nyelv BME-IIT Sz.I
19 Generikus tömb iterátorral template <class T, int siz = 6> class Array { T t[siz]; // elemek tömbje (statikus) public: class iterator; // elődeklaráció, hogy már itt ismert legyen iterator begin() { // létrehoz egy iterátort és az elejére állítja return iterator(*this); iterator end() { // létrehozza és az utolsó elem után állítja return iterator(*this, siz); class iterator { osztályon belüli osztály a következő dián... C++ programozási nyelv BME-IIT Sz.I
20 Generikus tömb iterátorral /2 Az osztályon belül van! class iterator { T *p, *pe; // pointer az akt elemre, és az utolsó utánira public: iterator() :p(0), pe(0) { iterator(array& a, int ix = 0) :p(a.t+ix), pe(a.t+siz) { iterator& operator++() { // növeli az iterátort (pre) if (p!= pe) ++p; return *this; bool operator!=(const iterator &i) { // összehasonlít return(p!= i.p); T& operator*() { // indirekció if (p!= pe) return *p; else throw out_of_range ("Hibas indirekcio"); ; // iterator belső osztály vége ; // Array template osztály vége C++ programozási nyelv BME-IIT Sz.I
21 Generikus tömb használata int main() { Array<int> a1, a2; elejére áll! int i = 1; for (Array<int>::iterator i1 = a1.begin(); i1!= a1.end(); ++i1) *i1 = i++; return 0; utolsó utáni elemre int& operator*() { if (p!= pe) return *p; else throw out_of_range (...); iterator& operator++() { if (p!= pe) ++p; return *this; C++ programozási nyelv BME-IIT Sz.I
22 Generikus lista iterátorral template<class T> class Lista { struct ListaElem { // privát struktúra T adat; // adat ListaElem *kov; // pointer a következőre ListaElem(ListaElem *p = NULL) :kov(p) { ; ListaElem *elso; // pointer az elsőre bool hasonlit(t d1, T d2) { return(d1<d2); public: Lista() { elso = new ListaElem; // strázsa létrehozása void beszur(const T& dat); // elem beszúrása class iterator; // elődeklaráció iterator begin() { // létrehoz egy iterátort és az elejére állítja return(iterator(*this)); iterator end() { // létrehozza és az utolsó elem után állítja return(iterator()); nincs akt C++ programozási nyelv BME-IIT Sz.I
23 Generikus lista iterátorral /2 // Lista osztály deklarációjában vagyunk... class iterator { // belső osztály ListaElem *akt; // mutató az aktuális elemre public: Itt az akt iterator() : akt(null) {; // végére állítja az iterátort iterator(const Lista& l) : akt(l.elso) { // elejére állítja if (akt->kov == NULL) akt = NULL; // strázsa miatti Így trükk egyszerűbb, mint a végéig menni. iterator& operator++() { // növeli az iterátort (pre) if (akt!= NULL) { akt = akt->kov; // következőre if (akt->kov == NULL) akt = NULL; // strázsa miatti trükk return(*this); C++ programozási nyelv BME-IIT Sz.I
24 Generikus lista iterátorral /3 Nem referencia. Miért? iterator operator++(int) { // növeli az iterátort (post) iterator tmp = *this; // előző érték operator++(); // növel return(tmp); // előzővel kell visszatérni bool operator!=(const iterator &i) const { // összehasonlít return(akt!= i.akt); T& operator*() { // indirekció if (akt!= NULL ) return(akt->adat); else throw out_of_range("hibás"); T* operator->() { // indirekció if (akt!= NULL) return(&akt->adat); else throw out_of_range("hibás"); ; ; Címet kell, hogy adjon C++ programozási nyelv BME-IIT Sz.I
25 Lista használata #include "generikus_lista_iter.hpp" int main() { A végéig megy, nem kell Lista<int> L; tudni, hogy valóban milyen adat. Lista<int>::iterator i; for (i = L.begin(); i!= L.end(); i++) növel int x = *i; aktuális elem elérése Lista<Komplex> Lk; Lista<Komplex>::iterator ik(lk); ik->abs(); Komplex k1 = ik->; // hibás return(0); -> egyoperandusú utótag operátor. A formai köv. miatt a tagnevet ki kell írni! C++ programozási nyelv BME-IIT Sz.I
26 Bejárók - összefoglalás Tárolók -> adatsorozatok tárolása adatsorozat elemeit el kell érni tipikus művelet: "add a következőt" Iterátor: általánosított adatsorozat elemeire hivatkozó elvont mutatóobjektum. Legfontosabb műveletei: éppen akt. elem elérése (* ->) következő elemre lépés (++) mutatók összehasonlítása ( ==,!= ) mutatóobjektum létrehozása az első elemre ( begin() ) mutatóobjektum létrehozása az utolsó utáni elemre ( end() ) C++ programozási nyelv BME-IIT Sz.I
27 Bejárók összefoglalás /2 Nem kell ismerni a tároló belső adatszerkezetét. Tároló könnyen változtatható. Generikus algoritmusok fel tudják használni. Indexelés nem mindig alkalmazható, de iterátor.. A pointer az iterátor egy speciáis fajtája. template<class Iter> void PrintFv(Iter first, Iter last){ while (first!= last) cout << *first++ << endl; int tarolo[5] = { 1, 2, 3, 4, 5 ; PrintFv<int*>(tarolo, tarolo+5); Array<double, 10> d10; PrintFv<>(d10.begin(), d10.end()); C++ programozási nyelv BME-IIT Sz.I
28 Bejárók még egy példa int szamok[] = { 2, 6, 72, 12, 3, 50, 25, 100, 0 ; std::cout << "szamok a tombbol: "; PrintFv(szamok, szamok+8); Lista<int> li; int *p = szamok; while (*p!= 0) li.beszur(*p++); std::cout << "szamok a listabol: "; PrintFv(li.begin(), li.end()); Lista<int>::iterator i1, i2; for (i1 = li.begin(); i1!= li.end(); ++i1) { std::cout << std::setw(3) << *i1 << " osztja: "; i2 = i1; for (++i2; i2!= li.end(); ++i2) if (*i2 % *i1 == 0) std::cout << " " << *i2; std::cout << std::endl; C++ programozási nyelv BME-IIT Sz.I
29 Egy tervezési példa Sharks & Fishes C++ programozási nyelv BME-IIT Sz.I
30 Példa: Cápák és halak /1 Modellezzük halak és cápák viselkedését az óceánban. Óceán: 2d rács. Cella: szabad, lehet benne hal vagy cápa. Kezdetben halak és cápák véletlen-szerűen helyezkednek el. Diszkrét időpillanatokban megvizsgáljuk a populációt és a viselkedésüknek megfelelően változtatjuk azt. C++ programozási nyelv BME-IIT Sz.I
31 Cápák és halak /2 szabályok Hal: Átúszik a szomszédos szabad cellába, ha van ilyen. Ha elérte a szaporodási kort, akkor a másik cellába történő úszás közben szaporodik: Eredeti helyén hagy egy 0 éves halat. Ha nincs szabad cella, nem úszik és nem szaporodik. Sohasem döglik meg. C++ programozási nyelv BME-IIT Sz.I
32 Cápák és halak /3 szabályok Cápa: Ha van olyan szomszédos cella, amiben hal van, akkor átúszik oda és megeszi. Ha nincs hal a szomszédban, de van szabad cella, akkor oda úszik át. Ha elérte a szaporodási kort, akkor a másik cellába történő úszás közben szaporodik: Eredeti helyén hagy egy 0 éves, éhes cápát. Ha nincs szabad cella, nem úszik és nem szaporodik. Ha egy adott ideig nem eszik, megdöglik. C++ programozási nyelv BME-IIT Sz.I
33 Modellezés: heterogén adatszerk. Óceán olyan alapobjektumra mutató pointert tárol mely objektumból származtatható hal, cápa, stb. (Heterogén kollekció.) Óceán ciklikusan bejárja a tárolót és a pointerek segítségével minden objektumra meghív egy metódust, ami a viselkedést szimulálja. Minden ciklus végén kirajzolja az új populációt. C++ programozási nyelv BME-IIT Sz.I
34 Első statikus modell Ocean Obj cellak[n][m] lep lep Hal kor lep Capa kor nemevett lep C++ programozási nyelv BME-IIT Sz.I
35 Algoritmusok H C C++ programozási nyelv BME-IIT Sz.I
36 Problémák, kérdések Egy iterációs ciklusban csak egyszer léptessük. kell egy számláló az ősbe A cápa felelőssége önmaga megszüntetése? kell egy hullabegyűjtő (Ocean) Mi van az üres cellákban? víz Lehetne sziget is: part objektum A cápa honnan tudja, hogy megeheti a halat? nagyobb hal megeszi a kisebbet méret értéke (víz < <..< part) C++ programozási nyelv BME-IIT Sz.I
37 Kiegészített statikus modell Ocean cellak[n][m] lep Obj nev, meret, iter, ittaveg lep A név nem a viselkedés befolyásolására szolgál! Viz Hal kor lep Capa kor nemevett lep C++ programozási nyelv BME-IIT Sz.I
38 Koordináták kezelése /// Cellarács koordinátáinak kezeléséhez /// Koord osztály (minden tagja publikus) struct Koord { enum Irany { fel, jobbra, le, balra ; int i; /// sor int j; /// oszlop Koord(int, int); ; // Adott iránynak megf. lépve új pozíciót ad Koord lep(irany) const; C++ programozási nyelv BME-IIT Sz.I
39 Obj typedef bool cmpf_t(int, int); inline bool kisebb(int a, int b) { return a < b; class Obj { protected: char nev; /// Objektum neve int meret; /// nagyobb eszik... int iter; /// Iteráció számlálója bool ittaveg; /// kimúlást jelző flag public: Obj(char, int); char getnev() const; char getmeret() const; bool is_vege() const; Koord keres(koord&, Ocean&, cmpf_t = kisebb) const; virtual void lep(koord&, Ocean&, int) = 0; virtual ~Obj() {; ; C++ programozási nyelv BME-IIT Sz.I
40 Obj::keres() Koord Obj::keres(const Koord& pos, Ocean& oc cmpf_t cmp) const { Koord talalt = nopos; // nemlétező pozíció for (int i = 0; i < 4; i++) { //kihasz. enum-ot Koord ujpos = pos.lep(koord::irany(i)); if (oc.ervenyes(ujpos)) { int m = oc.getobj(ujpos)->getmeret(); if (m == 0) // legkisebb méret if (talalt == nopos) talalt = ujpos; else if (cmp(m, meret)) return ujpos; // van 0-tól eltérő return talalt; C++ programozási nyelv BME-IIT Sz.I
41 Capa /// Cápa class Capa :public Obj { static const int capaszapkor = 5; static const int capaehenhal = 7; int kor; //< kora int nemevett; //< ennyi ideje nem evett public: Capa() :Obj('C', 100), kor(0), nemevett(0) { ; /// Másoló a szaporodáshoz kell. /// Nullázza a kor-t Capa(const Capa& h) :Obj(h), kor(0), nemevett(h.nemevett) { void lep(koord pos, Ocean& oc, int); C++ programozási nyelv BME-IIT Sz.I
42 Capa viselkedése void Capa::lep(Koord& pos, Ocean& oc, int i) { if (iter >= i) return; // már léptettük iter = i; kor++; // öregszik if (nemevett++ >= capaehenhal) { ittaveg = true; return;// éhen halt Koord ujpos = keres(pos, oc);//gyengébbet keres if (oc.ervenyes(ujpos)) {//van kaja vagy víz if (oc.getobj(ujpos)->getmeret() > 0) nemevett = 0; // fincsi volt a kaja oc.replobj(ujpos, this);// új cellába úszik Obj* o; if (kor > capaszapkor) o = new Capa(*this);// szaporodik else o = new Viz; // víz lesz a helyén oc.setobj(pos, o); C++ programozási nyelv BME-IIT Sz.I
43 Ocean /// Statikus méretű cellarácsot tartalmaz. /// Minden cella egy objektum mutatóját tárolja. const int MaxN = 10; /// sorok száma const int MaxM = 40; /// oszlopok száma class Ocean { int iter; /// Iteráció sz. Obj *cellak[maxn][maxm]; /// Cellák tárolója public: Ocean(); bool ervenyes(koord&) const; Obj* getobj(koord&) const; void setobj(koord&, Obj*); void replobj(koord&, Obj*); void rajzol(std::ostream&) const; void lep(); ~Ocean(); ; C++ programozási nyelv BME-IIT Sz.I
44 Ocean::lep() /// Egy iterációs lépés void Ocean::lep() { iter++; for (int i = 0; i < MaxN; i++) for (int j = 0; j < MaxM; j++) { Koord pos(i,j); cellak[i][j]->lep(pos, *this, iter); // hullák begyűjtése if (cellak[i][j]->is_vege()) replobj(pos, new Viz); // Objektum törlése és pointer átírása void Ocean::replObj(Koord& pos, Obj* o) { delete cellak[pos.i][pos.j]; cellak[pos.i][pos.j] = o; C++ programozási nyelv BME-IIT Sz.I
45 Szimuláció (1,5,7) 0. H C H H 10. HHHHHHHH..C.CCHH...HH HHHHHHHHH..CH.HH... HHHHHHHH..CHHH.HH...H HHHHHHH..CHHHHH.HH...HH HHH.HH..HHHHHHHH.HH...HHH HHHH...HHHHHHHH...HHHH.HH...HHHHHHH...HHHHH.H...HHHHH...HHHHHH...HHH...HHHHHHH...HH...HHHHHHHH 20. HHHHHHHC...CCCCCHH...CCHH...HHHHHHHHHH HHHHHHC.C...C.CHH...CH.HH...HHHHHHHHHH HHHHHHHCCC.C.CCC...CHHH.HH..HHHHHHHHHHH HHHHHHHC.C..C.C...CHHHHH.HHHHHHHHHHHHHH HHHHHHHHCC.C.C.C..CHHHHHHHHHHHHHHHHHHHHH HHHHHHHHC...C.C.CCHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHHC.C.C.CCHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHHC.CCC.CCHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHH.CCCCCCHHHHHHHHHHHHHHHHHHHHHHHHH HHHHHHHCC.C.CCHHHHHHHHHHHHHHHHHHHHHHHHHH C++ programozási nyelv BME-IIT Sz.I. 30. C.C.CCCC...CCCCCCCCCCCCCCHH...CCHHHHHH CC.CCC.CC...C.CC..CCCCCCCHH...CHHHHHHHH CCCCCCC...CCCCC.C...CHHHHHHHHH CCCCCCCC...CCCCC.C.C...CHHHHHHHHHH CCCCCC.C...CC.CC.CCC.C..CHHHHHHHHHHH CCCCC.CC...CCCCCCC.C.C.CCHHHHHHHHHHHH CCCC.CCCC...CCCCCCCCC.C.CCHHHHHHHHHHHHH CCC.CCC...CCCCCCCCCCCCCHHHHHHHHHHHHHH CC.C.CCC...CCCCCCCCCCCCHHHHHHHHHHHHHHH CCCCCCC...CC.CCCCCCHHHHHHHHHHHHHHHH CCCCCCCCC.CCHHC....CCCCCCCCCCCHH..C...CCCCCCCCC.C...C....CCCC.CCC.C...C...CCCCC.CCC.C..CC...CCCCCC.CCC.CCHH...CCCCCCCCCC.CCHHH...CCCCCCCCC.CCHHHH...CC..CCCCCCCCHHHHH...CC.CCCC.C.CCHHHHHH C....CC...CCC...CC...C.C...CCCCCC...C..CCC...C
46 Írjuk ki a halak számát! Kinek a dolga? Óceáné? Halaké? Be kell járni az óceánt -> bejáró Számolás: általánosított számoló template szamol(atlanti.begin(), atlanti.end(), HalnevCmp('H')); szamol(atlanti.begin(), atlanti.end(), HalnevCmp('C')); C++ programozási nyelv BME-IIT Sz.I
47 Írjuk ki a halak számát!/2 template<class Iter, class Pred> int szamol(iter elso, Iter utso, Pred pred) { int db = 0; while (elso!= utso) if (pred(*elso++)) db++; return db; struct HalnevCmp { char refnev; // referencia név HalnevCmp(char nev) :refnev(nev) { bool operator()(const Obj* o) const { return o->getnev() == refnev; Ilyen nevűt számol ; cout << "(Hal:" << szamol(atlanti.begin(), atlanti.end(), HalnevCmp('H')); C++ programozási nyelv BME-IIT Sz.I
48 Ocean kiegészítése iterátorral class Ocean {... public: class Iterator; Iterator begin() { return Iterator(*this); Iterator end() { return Iterator(*this, MaxN*MaxM);... C++ programozási nyelv BME-IIT Sz.I
49 Ocean::Iterator Ocean::Iterator begin() { return Iterator(*this); class Iterator { Obj **p; // aktuális pointer Obj **pe; // végpointer public: Iterator() :p(0), pe(0) { Iterator(Ocean& o, int n=0) :p(&o.cellak[0][0]+n), pe(&o.cellak[0][0]+maxn*maxm) { bool operator!=(iterator&); bool operator==(iterator&); Iterator& operator++(); Iterator& operator++(int); Obj* operator*(); Obj** operator->(); ; C++ programozási nyelv BME-IIT Sz.I
50 Ocean::iterator /2 // Pre inkremens Ocean::Iterator& Ocean::Iterator::operator++() { if (p == 0 p == pe) throw out_of_range("iterator++"); p++; return *this; // Post inkremens Ocean::Iterator Ocean::Iterator::operator++(int){ Iterator tmp = *this; if (p == 0 p == pe) throw out_of_range("iterator++"); p++; return tmp; C++ programozási nyelv BME-IIT Sz.I
51 Ocean::iterator /3 /// Ocean Iterator csillag Obj* Ocean::Iterator::operator*() { if (p == 0 p == pe) throw out_of_range("iterator*"); return *p; /// Ocean Iterator nyil operator Obj** Ocean::Iterator::operator->() { if (p == 0 p == pe) throw out_of_range("iterator->"); return p; C++ programozási nyelv BME-IIT Sz.I
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template 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.29. -1- Hol tartunk?
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 (
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template újból 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.03.26.
128. AA Megoldó Alfréd AA 128.
Programozás alapjai 2. PótZH 2010.05.20. gyakorlat: Hiány:0 ZH: MEGOLD SEHOL/5. Hftest: 0 ZHp: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti, hogy minden
0. Megoldó Manó 0. Programozás alapjai 2. (inf.) pót zárthelyi gyak. hiányzás: 2 n/kzhp: n/11,5. ABCDEF IB.028/2.
Programozás alapjai 2. (inf.) pót zárthelyi 2014.05.22. gyak. hiányzás: 2 n/kzhp: n/11,5 ABCDEF IB.028/2. Hftest: 4 (2,4p) Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot,
503.AA Megoldo Arisztid 503.A
Programozás alapjai 2. (inf.) 2. ZH 2017.04.27. gy./l. hiány: / ABCD123 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt megoldásokat értékeljük!
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template 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. 2018.03.20.
117. 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,
Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)
Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
.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,
Programozás alapjai II. (6. ea) C++
Programozás alapjai II. (6. ea) C++ generikus szerkezetek, template Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.03.29. - 1 - Hol tartunk?
STL 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
500. 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
500.AA Megoldo Arisztid 500.A
Programozás alapjai 2. (inf.) 2. ZH 2018.05.07. lab. hiányzás: 1+2 a/a/1 ABCD123 a/1. kzh: 4 E:3 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra
Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában
Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény
500. 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,
1.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
500.AJ Megoldó Magyar Magdolna 500.J
Programozás alapjai 2. (inf.) 2. pzh 2017.05.09. gy./l. hiány: / ABCDEF IB.028/1. Z: / / Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra írt
1000.AA Megoldo Alfréd 1000.A
Programozás alapjai 2. (inf.) 2. PZH 2018.05.22. hiányzás:0+3 L4-R4P ZH: 27,5+26 ABCDEF IB.028/100. Sum:0 e:19 Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de
Fejlett programozási nyelvek C++ Iterátorok
Fejlett programozási nyelvek C++ Iterátorok 10. előadás Antal Margit 2009 slide 1 Témakörök I. Bevezetés II. Iterátor definíció III. Iterátorok jellemzői IV. Iterátorkategóriák V. Iterátor adapterek slide
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
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
Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union
Programozás alapjai C nyelv 10. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.21. -1- Standard függvények Standard függvények amelyeket
Pé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
Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök
Programozás alapjai II. (8. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT Speciális adatszerkezetek A helyes adatábrázolás választása, a helyes adatszerkezet
228. AA Default Konstruktor AA 228.
Programozás alapjai 2. (inf.) zárthelyi 2012.05.17. gyak. hiányzás: kzhpont: ABCDEF Q-II/107. nzh: Hftest: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Programozás alapjai II. (7. ea) C++
Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1
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
Bevezetés a programozásba 2
Bevezetés a programozásba 2 7. Előadás: STL konténerek, sablonok http://digitus.itk.ppke.hu/~flugi/ Vector int int main() { vector v(10); int int sum=0; for for (int i=0;i
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
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
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,
Programozá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-
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
Programozá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
500.AA Megoldó Kulcsár 500.A
Programozás alapjai 2. (inf.) 2. ZH 2019.05.14. lab. hiányzás: + / HFt: ABC123 IL.305./1. p: e: Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra
500. DD Megoldó Alfréd DD 500.
Programozás alapjai 2. (inf.) zárthelyi 2009.05.21. gyakorlat: / Érdemjegy: QBX734 () IB319/32. Hftest: Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala
C++ Standard Template Library (STL)
Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 STL alapok 2 STL fogalmak 3 Konténerek 4 Iterátorok 5 Funktorok C++ STL Ne fedezzük fel újra spanyolviaszt! Sok adatszerkezet/algoritmus
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
Bevezeté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
Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.
Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán
Programozás alapjai II. (3. ea) C++ Programfejlesztés. Néhány programozási módszer. Feladatanalízis. Modellezés Tervezés. Implementáció (programozás)
Programozás alapjai II. (3. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása 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.02.22.
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
A lista eleme. mutató rész. adat rész. Listaelem létrehozása. Node Deklarálás. Létrehozás. Az elemet nekünk kell bef zni a listába
A lista eleme 0 adat rész mutató rész Listaelem létrehozása p: Node 0 0 3 0 Az elemet nekünk kell bef zni a listába Deklarálás struct Node { int int value; Node* next; next; adattagok Létrehozás Node*
Alprogramok, 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
ISA 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
Programfejlesztés. Programozás alapjai II. (3. ea) C++ Néhány programozási módszer. Korai szoftverkészítés jellemzői. Gépi nyelv? Strukturált tervezés
Programozás alapjai II. (3. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT Programfejlesztés Feladatanalízis világ = dolgok + tevékenységek Modellezés
Programozás. C++ osztályok. Fodor Attila. Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.
Programozás C++ osztályok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. április 8. Csak bázisosztályként használt/értelmezhető
feladat pont min elért
NEPTUN kód: NÉV: Aláírás: Programozás 2. NZH, 2017. május 11. BME-TTK, fizika BSc Arcképes igazolvány hiányában nem kezdheted meg a ZH-t. A feladatok megoldására összesen 90 perc áll rendelkezésre. A feladatlapot
5. 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
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ú
AA MEGOLDÓ ALADÁR AA
Programozás alapjai 2. (inf.) 1. zárthelyi 2015.03.30. gyak./lab. hiányzás: 3/2 G3-QB309 ZEZFCE Minden beadandó megoldását a feladatlapra, a feladat után írja! Készíthet piszkozatot, de csak a feladatlapra
Programozás alapjai II. (2. ea) C++
Programozás alapjai II. (2. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.02.23.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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.
Programozá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.
Programozá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.
Programozás alapjai II. (4. ea) C++
Programozás alapjai II. (4. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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.
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
Fejlett programozási nyelvek C++ Sablonok és adatfolyamok
Fejlett programozási nyelvek C++ Sablonok és adatfolyamok 11. előadás Antal Margit 2009 slide 1 Témakörök Sablonok Függvénysablon Osztálysablon Sablon metaprogramozás Adatfolyamok Operátorok és manipulátorok
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1.
OAF Gregorics Tibor: Minta dokumentáció a 3. házi feladathoz 1. Feladat Szimuláljuk különféle élőlények túlélési versenyét. A lények egy pályán haladnak végig, ahol váltakozó viszonyok vannak. Egy lénynek
Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja
Objektum elvű alkalmazások fejlesztése Verem típus osztály-sablonja Készítette: Gregorics Tibor Készítsünk olyan újra-felhasználható kódot, amellyel vermeket lehet létrehozni és használni. Egy verem-objektum
111. AA Megoldó Alfréd AA 111.
Programozás alapjai 2. (inf.) pótzárthelyi 2008.05.22. gyakorlat: 0/0 Érdemjegy: ABCDEF () IB028/102. Hftest: 12000 Minden beadandó megoldását a feladatlapra, a feladat után írja! A megoldások során feltételezheti,
C++ Gyakorlat jegyzet 8. óra
C++ Gyakorlat jegyzet 8. óra A jegyzetet Umann Kristóf készítette Horváth Gábor gyakorlata alapján. (2018. április 30.) 1. Template 1.1. Függvény template-ek Térjünk vissza a régebben megírt swap függvényünkhöz.
Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok
Tervminták II. (Híd, Bejáró, Gyártófüggvény) Halmaz és bejárása Osztály-sablonok 1.Feladat Készítsünk olyan kódot, amely segítségével természetes számokat tároló halmazok hozhatók létre. o Egy halmaz-objektum
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
Programozás alapjai II. (6. ea) C++
Programozás alapjai II. (6. ea) C++ mutatókonverziók, heterogén kollekció Szeberényi Imre BME IIT Öröklés (ismétlés) Egy osztályból olyan újabb osztályokat származtatunk, amelyek rendelkeznek
Szö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
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
Programozá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();
C++ 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
Programozá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
7. 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
Felhasználó által definiált adattípus
Felhasználó által definiált adattípus C++ Izsó Tamás 2017. február 24. Izsó Tamás Felhasználó által definiált adattípus/ 1 Irodalom Izsó Tamás Felhasználó által definiált adattípus/ 2 Programtervezési
Programozás alapjai II. (2. ea) C++ Programfejlesztés. Néhány programozási módszer. Feladatanalízis. Modellezés Tervezés. Implementáció (programozás)
Programozás alapjai II. (2. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.02.23.
Mit ír ki? feladatok megoldásokkal
Mit ír ki? feladatok megoldásokkal A feladatgyűjtemény 2006 és 2015 között ZH feladatként kiadott C++ feladatokat és megoldásukat tartalmazza. A megoldásokat sárga kiemeléssel jelöltük. Tartalomjegyzék
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
1. Öröklés Rétegelés Nyilvános öröklés - isa reláció Korlátozó öröklődés - has-a reláció
1. Öröklés Az objektum orientált tervezés fontos sarkköve, az osztályok viszonyainak a megtervezése. 1.1. Rétegelés c l a s s Address {..... c l a s s Name {..... c l a s s P e r s o n { Name name ; Address
A C++ Standard Template Library rövid összefoglalás
A C++ Standard Template Library rövid összefoglalás 2016-17. 1 Miről is van szó Alább összefoglaljuk, amely ismeretét feltesszük a félév során. Mivel mint megszokott az egyes verziók több-kevesebb mértékben
Generikus Típusok, Kollekciók
Generikus Típusok, Kollekciók Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Generikus Típusok, Kollekciók 2013 1 / 26 Tartalomjegyzék 1 Enumeráció 2 Generikus Típusok 3 Kollekciók System.Collections
Programozás alapjai II. (1. ea) C++
Programozás alapjai II. (1. ea) C++ C++ kialakulása, nem OO újdonságok: Szeberényi Imre BME IIT Veszélyforrások csökkentése C + javítások C++ kialakulása C++ Objektum orientált szemlélet
Programozási technológia
Programozási technológia Generikus osztályok Gyűjtemények Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Generikus osztályok Javaban az UML paraméteres osztályainak a generikus (sablon) osztályok felelnek
Generikus osztályok, gyűjtemények és algoritmusok
Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java
4. Ö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()
Programozás alapjai C nyelv 9. gyakorlat. Rekurzió. Rekurzív algoritmus
Programozás alapjai C nyelv 9. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.14. -1- Rekurzió A feladat algoritmusa eleve rekurzív
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"
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,
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
Alkalmazott 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.
Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)
Programozás alapjai C nyelv 5. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.17. -1- Tömbök Azonos típusú adatok tárolására. Index
Programozás alapjai II. (2. ea) C++
Programozás alapjai II. (2. ea) C++ C++ kialakulása, nem OOP újdonságok: 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.02.15. -1- C++ kialakulása
Programozás alapjai II. (2. ea) C++
Programozás alapjai II. (2. ea) C++ C++ kialakulása, nem OOP újdonságok: Szeberényi Imre BME IIT Veszélyforrások csökkentése C + javítások C++ kialakulása C++ Objektum orientált szemlélet
Programozási nyelvek Java
Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked
Programozás alapjai 2. (2. ea) C++
Programozás alapjai 2. (2. ea) C++ névterek, memóriakezelés 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.12. - 1 - Hol
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
Rekurzió. Programozás alapjai C nyelv 9. gyakorlat. Rekurzív algoritmus. Rekurzív algoritmus fajtái. Példa: n! (2) Példa: n!
Programozás alapjai C nyelv 9. gyakorlat Szeberényi Imre BME IIT Rekurzió A feladat algoritmusa eleve rekurzív formában adott (ld: n!). A valójában nem rekurzív de valami hasznot húzunk
feladat pont min elért
NEPTUN kód: NÉV: Aláírás: Programozás 2. NZH, 2019. május 14. BME-TTK, fizika BSc Arcképes igazolvány hiányában nem kezdheted meg a ZH-t. A feladatok megoldására összesen 90 perc áll rendelkezésre. A feladatlapot
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.
Programozás alapjai II. (3. ea) C++
Programozás alapjai II. (3. ea) C++ OO paradigmák, osztály, operátorok átdefiniálása 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.