Programozás alapjai II. (7. ea) C++

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

Download "Programozás alapjai II. (7. ea) C++"

Átírás

1 Programozás alapjai II. (7. ea) C++ generikus szerkezetek, template Szeberényi Imre BME IIT M Ű E G Y T E M C++ programozási nyelv BME-IIT Sz.I Hol tartunk? C C++ javítások OBJEKTUM: konkrét adat és a rajta végezhető műveletek megtestesítője OO paradigmák egységbezárás (encapsulation), többarcúság (polymorphism), példányosítás (instantiation), öröklés (inheritance), generikus szerkezetek OO dekompozíció, tervezés A C++ csupán eszköz Elveket próbálunk elsajátítani Újrafelhasználhatóság C++ programozási nyelv BME-IIT Sz.I Hol tartunk? /2 objektum megvalósítása osztály (egységbe zár, és elszigetel), konstruktor, destruktor, tagfüggvények inicializáló lista (tartalmazott obj. inicializálása) operátor átdefiniálás (függvény átdefiniálás) barát és konstans tagfüggvények dinamikus adat külön kezelést igényel öröklés és annak megvalósítása védelem enyhítése virtuális függvények és osztályok absztrakt osztályok C++ programozási nyelv BME-IIT Sz.I

2 Mi az objektummodell haszna? A valóságos viselkedést írjuk le Könnyebb az analógia megteremtése Láttuk a példát (dig. áramkör modellezése) Digitális jel: üzenet objektum Áramköri elemek: objektumok Objektumok a valós jelterjedésnek megfelelően egymáshoz kapcsolódnak. (üzennek egymásnak) Könnyen módosítható, újrafelhasználható Funkcionális dekompozícióval is így lenne? C++ programozási nyelv BME-IIT Sz.I Lehet-e tovább általánosítani? Általánosíthatók-e az adatszerkezetek? Már a komplexes első példán is észrevettük, hogy bizonyos adatszerkezetek (pl. tárolók) viselkedése független a tárolt adattól. Lehet pl. adatfüggetlen tömböt vagy listát csinálni? Általánosíthatók-e az algoritmusok? Lehet pl. adatfüggetlen rendezést csinálni? C++ programozási nyelv BME-IIT Sz.I elemzés: Tömb Tároljunk T-ket egy tömbben! Műveletek: Létrehozás/megszüntetés Indexelés Egyszerűség kedvéért nem másolható, nem értékadható és nem ellenőriz indexhatárt! C++ programozási nyelv BME-IIT Sz.I

3 TArray megvalósítás class TArray { T *tp; // elemek tömbjére mutató pointer private, így int n; // tömb mérete nem elérhető TArray(const TArray&); // másoló konstr. tiltása TArray& operator=(const TArray&); // tiltás TArray(int n=5) :n(n) { tp = new T[n]; T& operator[](int i); ~TArray() { delete[] tp; ; T& TArray::operator[](int i) { return tp[i]; C++ programozási nyelv BME-IIT Sz.I Mit kell változtatni? Minden T-t át kell írni a kívánt (pl, int, double, Komplex stb.) típusra. Neveket le kell cserélni (névelem csere) Más különbség láthatóan nincs. (Meg kellene valósítani tisztességesen, hogy használható legyen, de most nem ez a lényeg) C++ programozási nyelv BME-IIT Sz.I Lehet-e általánosítani? Típusokat és neveket le kell cserélni --> Generikus adatszerkezetek: Olyan osztályok, melyekben az adattagok és a tagfüggvények típusa fordítási időben szabadon paraméterezhető. Megvalósítás: preprocesszorral define + névkonkatenáció ## nyelvi elemként (template) C++ programozási nyelv BME-IIT Sz.I

4 Preprocesszoral Típus és névelem csere makrókkal: Névelem csere: #define Array(T) T##Array Osztály deklarációk: #declare_array(t) makro Külső tagfüggvény definíciók: #implement_array(t) makro konkatenáció C++ programozási nyelv BME-IIT Sz.I Hogyan működik? névelem csere class TArray { T *tp; int n; TArray(int n=5) :n(n) { tp = new T[n];... #define Array(T) T##Array #define declare_array(t) \ class Array(T) { \ T *tp; \ int n; \ \ Array(T)(int n=5) \ :n(n) { tp = new T[n]; \... class intarray { int *tp; int n; declare_array(int) intarray(int n=5) :n(n) { tp = new int[n];... C++ programozási nyelv BME-IIT Sz.I #define Array(T) Array(T) T##Array #define declare_array(t) \ class Array(T) { \ T *tp; \ int n; \ Array(T)(const Array(T)&); \ Array(T)& operator=(const Array(T)&); \ \ Array(T)(int n=5) :n(n) { tp = new T[n]; \ T& operator[](int i); \ ~Array(T)() { delete[] tp; \ ; #define implement_array(t) \ T& Array(T)::operator[](int i) { return tp[i]; C++ programozási nyelv BME-IIT Sz.I

5 Használata #include "gen_array_m.hpp" //declare+implement makr. class Valami {... ; // valamilyen osztály declare_array(int) // intarray deklarációja implement_array(int) // intarray def. csak 1-szer! declare_array(valami) // ValamiArray deklarációja implement_array(valami) // ValamiArray def. 1-szer! Array(int) a1, a2, a3; Array(Valami) v1, v2, v3; a2[0] = 5; v2[1] = Valami; C++ programozási nyelv BME-IIT Sz.I Minden rendben? Tároljunk stringekre mutató pointereket: declare_array(char *) implement_array(char *) Mi lesz a makrókból? pl: #define Array(T) T##Array typedef-fel talán megoldható lenne Más, ennél a példánál nem jelentkező problémák is adódnak az egyszerű szöveghelyettesítésből, ezért jobb lenne nyelvi elemmel. Megoldás: template C++ programozási nyelv BME-IIT Sz.I Megoldás: template nyelvi elem formális sablonparaméter: tetszőleges típus template <class T> // Sablon kezdete class Array { // Array osztály dekl. kezd. T *tp; int n; Array(int n=5) :n(n) { tp = new T[n];... hatókör: a template kulcsszót ; követő deklaráció/definició vége Array<int> a1, a2, a3; Array<Valami> v1, v2, v3; aktuális sablonparaméter C++ programozási nyelv BME-IIT Sz.I

6 Array osztály sablonja template <class T> // osztálysablon class Array { T *tp; // elemek tömbjére mutató pointer int n; // tömb mérete Array(const Array&); // másoló konstr. tiltása Array& operator=(const Array&); // tiltás Array(int n=5) :n(n) { tp = new T[n]; T& operator[](int i); ~Array() { delete[] tp; ; Névelem csere és a paraméterhelyettesítés nyelvi szinten történik. C++ programozási nyelv BME-IIT Sz.I Tagfüggvények sablonja sablonparaméter: tetszőleges típus template <class T> // tagfüggvénysablon T& Array<T>::operator[](int i) { return tp[i]; scope miatt fontos hatókör: a template kulcsszót követő deklaráció/definició vége C++ programozási nyelv BME-IIT Sz.I Sablonok használata (példányosítás) #include "generic_array.hpp" // sablonok int main() { sablon példányosítása aktuális template paraméterrel Array<int> ia(50), ia1(10); // int array Array<double> da; // double array Array<const char *> ca; // const char* array ia[12] = 4; da[2] = 4.54; ca[2] = "Hello Template"; return 0; C++ programozási nyelv BME-IIT Sz.I

7 Array osztály másként template <class T, int s> // osztálysablon class Array { T t[s]; // elemek tömbje int n; // tömb mérete T& operator[](int i) { if (i < 0 i >= s) throw "Indexelési hiba"; return t[i]; Többször példányosodik! Növeli a kódot, ; ugyanakkor egyszerűsödött az osztály. Array<int, 10> a10; Array<int, 30> a30; C++ programozási nyelv BME-IIT Sz.I Összetettebb példa: Láncolt lista Tároljunk egész számokat egy rendezett listán. Műveletek: Beszúr új elem felvétele Következő soron következő elem kiolvasása jelzi, ha elérte a végét és újra az elejére áll C++ programozási nyelv BME-IIT Sz.I Lista tervezése Két osztály: Lista 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

8 Kapcsolatok Lista elso akt 1..* ListaElem adat kov strázsa (őr/sentinel) C++ programozási nyelv BME-IIT Sz.I Az 5 beszúrása beszúrás másolással (ismétlés) p 3) p->adat = 5; elso 2 kov 510 kov 23 kov 32 kov 4) p->kov = uj 10 KOV 2) *uj = *p;???? KOV 1) uj = new ListaElem strázsa NULL C++ programozási nyelv BME-IIT Sz.I C++ megvalósítás nem csak egy fv. lehet friend class ListaElem { friend class Lista; // hozzá kell férnie a tagokhoz int adat; // tárolt érték ListaElem *kov; // következő ; class Lista { ListaElem *elso, *akt; // első és az akt. pointer Lista() { akt = elso = new ListaElem; elso->kov = NULL; void beszur(int dat); // beszúrás bool kovetkezo(int& dat);// következő elem kiolvasása ~Lista() { /* házi feladat */ ; C++ programozási nyelv BME-IIT Sz.I

9 C++ megvalósítás/2 void Lista::beszur(int dat) { kilép: p elé kellene beszúrni. ListaElem *p; // futó pointer for (p = elso; p->kov && p->adat < dat; p = p->kov); // hely keresése ListaElem *uj = new ListaElem(*p); // régi átm. az újba p->adat = dat; p->kov = uj; // láncolás bool Lista::kovetkezo(int& dat) { uj = new ListaElem if (akt->kov == NULL) { // végére ért *uj = *p; akt = elso; return(false); dat = akt->adat; akt = akt->kov; return(true); // megvan C++ programozási nyelv BME-IIT Sz.I int helyett double? void DblLista::beszur(double dat) { DblListaElem *p; for (p = elso; p->kov && p->adat < dat; p = p->kov); // < operátor DblListaElem *uj = new DblListaElem(*p); p->adat = dat; p->kov = uj; // = operátor bool DblLista::kovetkezo(double &dat) { if (akt->kov == NULL) { akt = elso; return(false); dat = akt->adat; akt = akt->kov; // = operátor return(true); C++ programozási nyelv BME-IIT Sz.I Mit kell változtatni? Minden int-et át kell írni double-re. Más különbség nincs. Mennyiben változik, ha nem alaptípust akarunk tárolni? Minden int-et át kell irni. Biztosítani kell a megfelelő műveleteket az adott típusra (operatáror=, operátor<, másoló konstruktor?) Van még más probléma? C++ programozási nyelv BME-IIT Sz.I

10 Rejtett problémák Lista: Másoló konstruktor (a default jó?) NEM Értékadás operátor (a default jó?) legalább tiltsuk meg a használatukat ListaElem: Másoló konstruktor (a default jo?) IGEN (ha a pointerét nem szabadítjuk fel) Értékadás operátor (a default jó?) nem jó, de nem használjuk C++ programozási nyelv BME-IIT Sz.I Kiegészítés class ListaElem { friend class Lista; // hozzá kell férnie a mezőkhöz int adat; // tárolt érték ListaElem *kov; // következő ; class Lista { ListaElem elso, *akt; // strázsa, és az akt olv. pointer Lista(const Listar&); // copy constr. tiltása Lista& operator=(const Lista&); // op= tiltása Lista() { akt = elso = new ListaElem; elso->kov = NULL;... C++ programozási nyelv BME-IIT Sz.I Általánosított lista template <class T> // Ez kell elé, hogy a friend-nél class Lista; // már ismert legyen a Lista<T> sablonparaméter: tetszőleges típus template <class T> class ListaElem { friend class Lista<T>; T adat; ListaElem<T> *kov; ; // Sablon kezdete // ListaElem osztály dekl. kezd. // hozzá kell férnie a mezőkhöz // adat // pointer következő elemre itt nem fontos, mert az osztály nevét automatikusan cseréli C++ programozási nyelv BME-IIT Sz.I

11 Lista osztály sablonja template <class T> // osztálysablon class Lista { // Lista ListaElem<T> *elso, *akt; // első + akt pointer Lista (const Lista&); // másoló konstr. letiltva void operator=(const Lista&); // operáror= letiltva Lista() { akt = elso = new ListaElem<T>; elso->kov = NULL; // első + akt. bool hasonlit(t d1, T d2) { // default hasonlító fv. return(d1<d2); void beszur(const T& dat); // elem beszúrása bool kovetkezo(t& dat); // következő elem ~Lista() { /* még mindig házi feladat */ ; ; C++ programozási nyelv BME-IIT Sz.I Tagfüggvények sablonja template <class T> // tagfüggvénysablon void Lista<T>::beszur(const T& dat) { ListaElem<T> *p; // futó pointer for (p = elso; p->kov && // elem keresése hasonlit(p->adat, dat); p = p->kov); ListaElem<T> *uj = new ListaElem<T>(*p); //régit másol p->adat = dat; p->kov = uj; // 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 Lista sablon használata #include "generic_lista.hpp" // sablonok int main() { sablon példányosítása Lista<int> L; // int lista Lista<double> Ld; // double lista Lista<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)) cout << x << '\n'; char *s; while (Ls.kovetkezo(s)) cout << s << '\n'; return 0; Jól fog működni? bool Hasonlit(T d1, T d2) { return(d1<d2); // char* < char* C++ programozási nyelv BME-IIT Sz.I

12 Probléma A < operátor nem lesz jó a char* -ra, mert a pointereket hasonlítja, és nem a sztringeket. Már korábban megállapítottuk, hogy nem tudjuk átdefiniálni, mert nem osztály. Valahogyan át kellene definiálni a sablonban definiált hasonlító függvényt (csak a megfelelő char *-os példányt). Megoldás: specializáció C++ programozási nyelv BME-IIT Sz.I Specializáció Függvények különböző változatait átdefiniálással érhetjük el. Sablonok esetében ez a specializáció. Egy sablonnal megadott osztály, vagy függvény adott változatát átdefiniálhatjuk. Ilyenkor nem a sablonban megadott módon fog példányosodni. Pl: template<> bool Lista<char *>::hasonlit(char *s1, char *s2) { return(strcmp(s1, s2) < 0); C++ programozási nyelv BME-IIT Sz.I Előző példa újból #include "generic_lista.hpp" // sablonok bool Lista<char *>::hasonlit(char *s1, char *s2) {// <char *> példány spec. return(strcmp(s1, s2) < 0); int main() { Lista<int> L; Lista<double> Ld; Lista<char *> Ls; Így már ábécé szerint rendez. // int lista // double lista // 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)) cout << x << endl; char *s; while (Ls.kovetkezo(s)) cout << s << endl; return 0; C++ programozási nyelv BME-IIT Sz.I

13 Mi is a sablon? Nyelvi elem az általánosításhoz. Gyártási forma. A sablonparaméterektől függően példányosodik: osztály vagy függvény jön belőle létre. Paraméter: típus, konstans, függvény, sablon Default paramétere is lehet. A példányok specializálhatók, melyek eltérhetnek az eredeti sablontól. A példányosítás helyének és a sablonnak egy fordítási egységben kell lennie. C++ programozási nyelv BME-IIT Sz.I Újabb példa template <class T1, class T2, int i = 0> struct V { T1 a1; T2 a2; int x; V() { x = i; ; V<int, char, 4> v1; V<double, int> v2; default V<int, int>::v() { a1=a2=x=i; V<int, int>v3; Specializálás C++ programozási nyelv BME-IIT Sz.I Függvénysablon Függvények, algoritmusok általánosítási eszköze. Hatékony, paraméterezhető, újrafelhasználható, általános. template <class T> void rendez (T a[], int n) { for (int i = 1; i < n; i++) { T tmp = a[i]; int j = i-1; while (j >= 0 && a[j] > tmp) { a[j+1] = a[j]; j--; a[j+1] = tmp;... int t[] = = { 4, 8, -2, 88, 33, 1, 4, -1 ; rendez<int>(t, 8); C++ programozási nyelv BME-IIT Sz.I

14 Függvénysablonok paraméterei A sablonparaméterek általában levezethetők a függvényparaméterekből. Pl: template<class T> void csere(t& p1, T& p2) { T tmp = p1; p1 = p2; p2 = tmp; int x1, x2; csere(x1, x2); Ha nem, akkor meg kell adni. Pl: template<class T, int n> void fv(t t1[n], T t2[n]) { for (int i = n; i >= 0; i--) t1[i] = t2[i]; int it1[10], it2[10]; fv<int, 10>(it1, it2); C++ programozási nyelv BME-IIT Sz.I Algoritmus módosítása Előfordulhat, hogy egy algoritmus (pl. rendezés) működösét módosítani akarjuk egy függvénnyel (predikátum). Sablonparaméterként egy eljárásmódot (függvényt) is átadhatunk. Példa: Írjunk egy általános kiválasztó algoritmust, ami képes kiválasztani a legkisebb, legnagyobb, leg... elemet. C++ programozási nyelv BME-IIT Sz.I Kiválasztó algoritmus sablonnal template<class T, int n, class S> T keres(t t[n]) { Ttmp= t[0]; for (int i = 1; i < n; i++) if (S::select(t[i], tmp)) tmp = t[i]; return tmp; template<class T> class Min { // szokásos min. kereséshez static int select(t a, T b) { return a < b; ; template<class T> class Max { // szokásos max. keresésez static int select(t a, T b) { return a > b; ; C++ programozási nyelv BME-IIT Sz.I

15 Kiválasztó algoritmus használata class intminabs { // szokásostól eltérő kiválasztó függvény static int select(int a, int b) { return abs(a) < abs(b); ; int main() { int it[9] = {-5, -4, -3, -2, -1, 0, 1, 2, 3 ; double dt[5] = {.0,.1,.2,.3, 4.4 ; szóköz kell, különben >>-nek értené! cout << keres<double, 5, Max<double>>(dt); // maximum cout << keres<int, 9, Min<int> >(it); // mimimum cout << keres<int, 9, intminabs>(it); // eltérő kiv. függvény return(0); C++ programozási nyelv BME-IIT Sz.I Predikátumok Célszerűen osztálysablonba építjük a megfelelő függvényt. Ekkor statikus függvényként kell deklarálni, mert másként nem jönne létre. Természetesen külső függvény is lehet predikátum: template<class T, int n, int select(t, T)>T keres(t t[n]) { T tmp = t[0]; for (int i = 1; i < n; i++) if (select(t[i], tmp)) tmp = t[i]; return tmp; template<class T> int MinFv(T a, T b) { return a < b; keres<int, 9, MinFv>(it); C++ programozási nyelv BME-IIT Sz.I Összefoglalás A C-ben megtanult preprocesszor trükkökkel általánosíthatók az osztályok Nem biztonságos, és nem ad mindenre megolást. Nyelvi elem bevezetése: template A preprocesszoros trükköt csak a működés jobb megértéséhez néztük meg, ma már nem illik használni. C++ programozási nyelv BME-IIT Sz.I

16 Összefoglalás /2 Generikus osztályokkal tovább általánosíthatjuk az adatszerkezetekről alkotott képet: Típust paraméterként adhatunk meg. A generikus osztály később a típusnak megfelelően példányosítható. A specializáció során a sablontól eltérő példány hozható létre Specializáció lehet részleges, vagy teljes C++ programozási nyelv BME-IIT Sz.I Összefoglalás /3 Generikus függvényekkel tovább általánosíthatjuk az algoritmusokról alkotott képet: Típust paraméterként adhatunk meg. A generikus függvény később a típusnak megfelelően példányosítható. A függvényparaméterekből a konkrét sablonpéldány levezethető, ha nem, akkor explicit módon kell megadni Függvénysablon átdefiniálható C++ programozási nyelv BME-IIT Sz.I Összefoglalás /4 Ún. predikátumok segítségével megváltoztatható egy algoritmus működése Ez lehetővé teszi olyan generikus algoritmusok írását, mely specializációval testre szabható. Ügyetlen template használat feleslegesen megnövelheti a kódot (pl. széles skálán változó paramétert is template paraméterként adunk át.) C++ programozási nyelv BME-IIT Sz.I

Programozás alapjai II. (6. ea) C++

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?

Részletesebben

Programozás alapjai II. (7. ea) C++

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.

Részletesebben

Programozás alapjai II. (7. ea) C++

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.

Részletesebben

Programozás alapjai II. (8. ea) C++ bejárók és egy tervezési példa

Programozás alapjai II. (8. ea) C++ bejárók és egy tervezési példa 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 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2018.03.27. -

Részletesebben

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

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

Részletesebben

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

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

Részletesebben

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++ 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.

Részletesebben

Programozás alapjai II. (4. ea) C++

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-

Részletesebben

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

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

Részletesebben

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

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3) Programozás alapjai C nyelv 7. gyakorlat Szeberényi Imre BME IIT Függvények C program egymás mellé rendelt függvényekből áll. A függvény (alprogram) jó absztrakciós eszköz a programok

Részletesebben

Programozás alapjai II. (2. ea) C++

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.

Részletesebben

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++ 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.

Részletesebben

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

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

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

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

Részletesebben

C++ programozási nyelv

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

Részletesebben

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

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

Részletesebben

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

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

Részletesebben

500. CC Megoldó Alfréd CC 500.

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,

Részletesebben

117. AA Megoldó Alfréd AA 117.

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,

Részletesebben

128. AA Megoldó Alfréd AA 128.

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

Részletesebben

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

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

Részletesebben

Programozás 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++ 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. 2017.02.14.

Részletesebben

Programozás II gyakorlat. 8. Operátor túlterhelés

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észletesebben

Osztály és objektum fogalma

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

Részletesebben

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

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

Részletesebben

Objektumok inicializálása

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

Részletesebben

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

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

Részletesebben

500. AA Megoldó Alfréd AA 500.

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

Részletesebben

Programozás alapjai II. (4. ea) C++

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.

Részletesebben

Programozás alapjai II. (4. ea) C++

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.

Részletesebben

3. Osztályok II. Programozás II

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

Részletesebben

C++ programozási nyelv Konstruktorok-destruktorok

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

Részletesebben

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. 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ő

Részletesebben

Programozás alapjai II. (9. ea) C++ többszörös öröklés, cast, perzisztencia

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

Részletesebben

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

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, Somogyi Péter BME IIT Programfejlesztés Feladatanalízis világ = dolgok + tevékenységek

Részletesebben

Programozás alapjai II. (3. ea) C++

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.

Részletesebben

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

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

Részletesebben

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

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

Részletesebben

Programozás alapjai 2. (2. ea) C++

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

Részletesebben

.AA Megoldó Alfréd AA.

.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észletesebben

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

Részletesebben

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

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

Részletesebben

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

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

Részletesebben

Programozás alapjai II. (7. ea) C++

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

Részletesebben

Programozás alapjai II. (1. ea) C++

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.

Részletesebben

Programozás alapjai II. (1. ea) C++

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.

Részletesebben

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.

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,

Részletesebben

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

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

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 18. 2. El adás Komplex szám public class Complex { private float repart_; private float impart_; public Complex() { repart_ = 0; impart_ = 0; public Complex(float

Részletesebben

Bevezetés a programozásba 2

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

Részletesebben

Java és web programozás

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

Részletesebben

Osztályok. 4. gyakorlat

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

Részletesebben

Programozás módszertan

Programozá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észletesebben

Alprogramok, paraméterátadás

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

Részletesebben

Pénzügyi algoritmusok

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

Részletesebben

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. 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*

Részletesebben

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

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

Részletesebben

Pénzügyi algoritmusok

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

Részletesebben

Felhasználó által definiált adattípus

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

Részletesebben

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

Részletesebben

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

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

Részletesebben

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4

1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4 1) Hány byte-on tárol a C++ egy karaktert (char)? implementáció-függő ( viszont lásd 79. megjegyzés ) 1 8 4 2) Hány byte-on tárol a C++ egy float-ot? implementáció-függő 6 4 8 3) Hány byte-on tárol a C++

Részletesebben

503.AA Megoldo Arisztid 503.A

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!

Részletesebben

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

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

Részletesebben

OOP #14 (referencia-elv)

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

Részletesebben

5. Gyakorlat. struct diak {

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

Részletesebben

0.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.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észletesebben

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

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

Részletesebben

500. DD Megoldó Alfréd DD 500.

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,

Részletesebben

500.AJ Megoldó Magyar Magdolna 500.J

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

Részletesebben

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

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

Részletesebben

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. 11. gyakorlat Sturktúrák használata I. Új típus új műveletekkel 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi. typedef struct datum { int ev; int ho; int nap;

Részletesebben

1.AA MEGOLDÓ BERCI AA 1.

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

Részletesebben

1. Alapok. Programozás II

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

Részletesebben

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok A szemantikus elemzés helye Forrásprogram Forrás-kezelő (source handler) Lexikális elemző (scanner) A szemantikus elemzés feladatai Fordítóprogramok előadás (A, C, T szakirány) Szintaktikus elemző (parser)

Részletesebben

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

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

Részletesebben

228. AA Default Konstruktor AA 228.

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,

Részletesebben

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

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

Részletesebben

feladat pont min elért

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

Részletesebben

Programozás C++ -ban

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

Részletesebben

és az instanceof operátor

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

Részletesebben

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

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

Részletesebben

Programozási Nyelvek: C++

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();

Részletesebben

Programozás alapjai C nyelv 10. gyakorlat. Standard függvények. Union

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

Részletesebben

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

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

Részletesebben

A C++ Standard Template Library rövid összefoglalás

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

Részletesebben

Objektum elvű alkalmazások fejlesztése. Verem típus osztály-sablonja

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

Részletesebben

Programozás alapjai II. (2. ea) C++

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

Részletesebben

Programozás alapjai II. (2. ea) C++

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

Részletesebben

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

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

Részletesebben

- 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]++;

- 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észletesebben

Objektumelvű programozás

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

Részletesebben

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek

Alkalmazott modul: Programozás 9. előadás. Strukturált programozás: dinamikus adatszerkezetek Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 9. előadás Strukturált programozás: dinamikus adatszerkezetek Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto

Részletesebben

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő

Részletesebben

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással

Bevezetés a Programozásba II 2. előadás. Adattípusok megvalósítása egységbe zárással. Adattípusok megvalósítása egységbe zárással Pázmány Péter Katolikus Egyetem Információs Technológiai és Bionikai Kar Bevezetés a Programozásba II 2. előadás Adattípusok megvalósítása egységbe zárással 2014.02.17. Giachetta Roberto groberto@inf.elte.hu

Részletesebben

Programozás alapjai II. (1. ea) C++

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

Részletesebben

Programozás alapjai II. (3. ea) C++

Programozás alapjai II. (3. ea) C++ Programozás alapjai II. (3. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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.01.

Részletesebben

500.AA Megoldo Arisztid 500.A

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

Részletesebben

C++ programozási nyelv Struktúrák a C++ nyelvben

C++ programozási nyelv Struktúrák a C++ nyelvben C++ programozási nyelv Struktúrák a C++ nyelvben 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/37 Bevezetés A

Részletesebben

Programozás alapjai II. (3. ea) C++

Programozás alapjai II. (3. ea) C++ Programozás alapjai II. (3. ea) C++ konstruktor és értékadás, dinamikus szerkezetek 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. 2017.02.21.

Részletesebben