PROGRAMOZÁSI NYELVEK - CPP. ELŐADÁS JEGYZET
|
|
- Endre Orosz
- 9 évvel ezelőtt
- Látták:
Átírás
1 PROGRAMOZÁSI NYELVEK - CPP ELŐADÁS JEGYZET Szerkesztette: Balogh Tamás 2013 április 12 Ha hibát találsz, kérlek jelezd a info@baloghtamashu címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add el! - Így add tovább! 30 Unported Licenc feltételeinek megfelelően szabadon felhasználható 1
2 Előszó A jegyzet nem teljes és nem hibátlan Az esetlegesen előforduló hibákért, és kimaradt részekért felelőséget nem vállalok A jegyzet megtanulása nem biztos, hogy elég a sikeres vizsgához Az előadás sorszáma a hetek sorszámával egyezik meg A szünetek, ünnepnapok miatt elmaradt órákat is számítom Így számomra könyebb összehangolni a többi előadással, gyakorlattal Előadó adatai: Név: Pataki Norbert patakino@eltehu Követelmények: Vizsga Konzultációk: PC3-as terem, hétfőn, csütörtökön 18:00-20:00 Vizsgák: UV UV 1 Előadás Programozási paradigma: paradigma: Milyen absztrakció mentén képezzük a részfeladatokat? - Imperatív programozás - Procedurális programozás (Fortran) - Generikus programozás - Objektum-orientált programozás - Logikai programozás (Prolog) - Funkcionális programozás - Dekleratív programozás (SQL, HTML) Milyen eredményt szeretnénk elérni? C++ A C++ multiparadigmás programnyelv, azaz több programozási paradigrmát is támogat: procedurális, objektum-orientált, generikus illetve (?) Szabványai: 1998: C++ első szabványa 2003: Első szabvány módosítása 2011: Jelenlegi szabvány ("C++11") 2 Előadás Fordítás: 1 Preprocesszálási fázis (előfordítás) 2 Nyeli fordítás 3 Öszeszerkesztés //Linker 2
3 Preprocesszálás Preprocesszor: Szövegátalakító szoftver, search & replace, file-ok másolása, szövegrészek kivágása/bemutatása, direktívák feldolgozása (#) Pl: #include <iostream> //Előre bekonfigurált include path-ban keresi a filet #include "complexh"//relatív az aktuális fileokhoz képest A következő két kódrészlet eredménye ugyanaz: int v [20]; for ( int i =0; i < 20; ++i) v[i] = i; # define N 20 int v[n]; for ( int i = 0; i < N; ++i) v[i] = i; Ha módosítani akarunk a tömbünk méretén,az első esetben több helyen is át kell írni a kódot, viszont a második esetben elég csak a direktíva értéket megváltoztatni Makrók A makrók preprocesszálási fázisban értékelődnek ki Példák makrókra: Abszolútérték # define ABS (x) x <0? -1* x:x std :: cout << ABS ( -3); // -3 <0? -1 * -3: -3 => 3 int b = -2; std :: cout << ABS (b -3) ; //b -3 < 0? => -1*b (:= c), c -3:b -3 => -1, 5 helyett A megoldás helytelensége a zárójelezés hiányából fakad Javítsuk át a makrót: #define ABS(x)((x)<0?-1*(x):(x)) # define MAX (a,b) (a) <(b)? (b) : (a) Maximum érték két szám között int i = 6; std :: cout << MAX (++i, 2); // i = - 8 lesz 3
4 Include-guard complexh class Complex double re, im; // ; unitsh # include " complex h" maincpp # include " complex h" # include " units h" int main () complex x; A probléma, hogy a maincpp includeolja a complexh-t és a unitsh-t is, ami szintén includeolja a complexh-t, így ützközés történik A megoldás, hogy úgynevezett include-guard-okat helyezünk el a forrásfájlainkban # ifndef COMPLEX_H # define COMPLEX_H # endif Include guard használata Linker A linkelési fázisban a fordító összefésüli/összeszerkeszti a forrásfájlokat, és egy, futtatható állományt készít Létezik statikus, illetve dinamikus linkelés Statikus linkelés során mindent feloldunk, míg dinamikus linkelés során (?) 3 előadás Nyelvi fordítás Tokenizálás - Azonosítók: std, cout - Kulcsszavak: int, return - Konstans literálok: 0 - Szöveg konstans literálok: "Hello world" - Operátorok: <<, :: - Szeparátorok: ;,, Azonosítók Betűvel kell kezdeni(vagy _ jellel), és betűvel, vagy számmal folytatni Nem lehet kulcsszó Pl:_auto, If, if, labda47 helyes azonosítok, viszont 47labda, if nem Egyes azonosítók fentartottak egy-egy szabványkönyvtárbeli azonosítónak Mivel nem ismerjük az összes szabványkönyvtárbeli nevet, figyelni kell az azonosítóink megadásakor, mert könnyen névütközéshez vezethet, különösen ha _név formátumot adunk meg Kulcsszavak: Pl: if, return, double, class, auto, while Nem lehet használni őket azonosítóként, és kisbetűvel írjuk őket 4
5 Konstans szövegiterál "Hello" : const char[6] H e l l o \0 const char * s = "Hell"; //Tömbök mindig konvertálódnak elsőelemre mutatópointerré Konstansok: Van egy típusa, és egy értéke 4 (int, 4) absztrakció(0,1 sorozat) De hány elemű? Nem definiált, implementációfüggő Lényeg, hogy optimális legyen 16 bites rendszer: Legnagyobb beírható int: = int x; x; //túlcsordul-e? 20000L: long típus kikényszerítése sizeof(short) sizeof(int) sizeof(long) sizeof(float) sizeof(double) sizeof(longdouble) 4 Előadás Lebegőpontos konstans 14 - double 139L - longd 11 - float 43e 1 == 4, 3 == ) Karakter konstansok a, T, \u Előjel nem definiált(signed char / unsigned char), ezért sizeof(t)== sizeof(signed T)== sizeof(unsigned T) FOLYTKÖV!!! Operátorok +, /, ==, =, &&,, ++, --, +=, -= Szokásos aritmetikai konvenciók a * b, ahol * egy bináris operátor, az operandusok különböző típusúak: 1 Ha az egyik long típusú, akkor a másik is longgá konvertálódik 2 Különben ha az egyik double, akkor a másik is double-lé konvertálódik 3 Különben, ha az egyik float, akkor a másik is float-tá konvertálódik 4 Különben ha az egyik unsigned int, akkor a másik is unsigned int-té konvertálódik 5 5 Előadás Kiértékelési sorrend szekvenciapontok: ; &&, int i = 1; int v [3]; v[i] = i ++; v[1] = 1 vagy v[2] = 1 5
6 Élettartam, láthatóség Láthatóság acpp int i; static int j; // hasonl ó a const fogalomhoz extern int k; // namsespace //né vtelen névtér int y; namespace X int i; // x::i; void f() int i = k; if(i < j) // itt a j még nincs elfedve int i = j; void g(); void f() int j = i; // itt az i a glob á lis i, hisz nem vagyunk az X- ben j = x::i; // itt a j már az f fv- ben bel ül deklar ált j j = k; // itt is void X::g() ++i; //X::i, mivel X-ben vagyunk ::i = ::k; A :: operátorral lehet hivatkozni a globális i-re Ha nem fedem el, akkor tudok hivatkozni a globális változóra a nevükkel, mint pl az f függvényben a k-val hivatkozok az extern int k-ra static: extern: extern int k; Másik fordítási egységben kell definiálni Élettartam Hol, mikor jön létre a változó, mikor szűnik meg? Hol: memórián belül Memória: - Stack - Statikus tárterület - Heap 6
7 Mikor: Melyik az az időszak a program futásában, amikor a változó konstruktora lefut? Változók: - Automatikus változók - Globális / névtérbeli / osztály statikus tag - Lokális statikusok - Dinamikus változók - Temporálisak - Osztály adattag - Tömbelem Automatikus változók: runtime stacken jönnek létre Stack frame(aktivációs rekord) void f() int i = 3; // auto int i = 3; Névtérbeli / globális / osztály statikus tag: Statikusok a statikus tárterületen jönnek létre Létrejönnek a program indulásakor, és megszünnek a program futásának végén class directory static const char separator = : ; ; Lokális statikusok: Létrejön ha a vezérlés eléri a def-t, és megszűnik a program futásának végén A statikus tárterületen létre void f() static int i; Dinamikus változók: Heap memóriában jönnek létre Létrejön a new kiértékelésénél, és megszűnik a delete kiértékelésénél void f() int k; std :: cin >> k; int *v = new int [k]; delete []v; A következőkre érdemes figyelni int *p = new int [k]; delete []p; p = new int (k); delete p; delete p; // fut ási idej ű hiba ( nem lehet ké tszer felszabad í tani ) p = 0; delete p; // skippeli a NULL pointer törlését 7
8 6 Előadás Élettartam Osztályok nem statikus tagja: Létrejön, amikor a tartalmazó objektumot létrehozzuk, megszűnik, amikor a tartalmazó objektum megszűnik Class student double avg ; // nem statikus tag Tömbelem: Létrejön a tartalmazó tömb létrejöttekor, és megszűnik a tartalmazó tömb megszűnésekor Temporális objektumok: Létrejönnek a részkifejezés kiértékelésekor, megszűnnek kifejezés kiértékelésének a végén std :: string s,t,u; std :: string conc = s + t + u; //s+t és s+t+u is tempor á lis char * answer ( char * q) std :: cout << q; char ans [80]; std :: cin >> arg ; return ans ; Kódrészlet 1??? char ans [ 80] char * answer ( char * q) std :: cout << q; std :: cin getline (ans, 80) ; return ans ; char * answer ( char * q) std :: cout << q; static char ans [ 80]; std :: cin getline (ans, 80) ; return ans ; char * answer ( char * q) std :: cout << q; char * ans = new char [ 80]; Kódrészlet 2 Kódrészlet 3 Kódrészlet 4 8
9 std :: cin getline (ans,80) ; return ans ; char * p = answer (" Hogy vagy?"); std :: cout << p; delete []p; std :: string answer ( char * q) std :: cout << q; std :: string answ ; std :: getline ( std :: cin, ans ); return ans ; Kódrészlet 5 Deklarációk, definíciók int fac ( int ); // deklar áció int x; // defin íció extern int x; // deklar áció class student ; // deklar áció //A student oszt ály defin íciója: class student double avg ; Pointerek definíciói int * p, q; //p pointer, q sima int int *s [10]; // 10 elem ű int *- okat tartalmaz ó tömb int (*e) [10]; // pointer 10 elem ű int tö mbre double *a( int ) // deklar áció double (*b)( int ) //fü ggv é nypointer defin íciója( olyan fü ggv ény ahol int param éter, és double -t ad vissza 7 Előadás Alprogramok(függvények, eljárások) int max ( int a, int b) return a < b? b : a; std :: cout << max (8, max (2,4) ); Rekurzív függvények int fac ( int n) n faktoriálisát számláló rekurzív függvény 9
10 if (0 == n) return 1; else return n * fac ( n - 1); Paraméter átadás void f( int x) // form á lis param é ter f (4) ; // aktu á lis param é ter Paraméter átadás fajtái: - Érték szerinti - Cím szerinti - Eredmény illetve érték/eredmény szerinti - Név szerinti Érték szerinti paraméter átadás Függvényhíváskor új lokális változó jön létre, belemásolódik az aktuális paraméter értéke Függvény irányába közvetít információt Másolás: copy konstruktor Érték szerinti (tipikusan C) void f( int x) ++x; // nem vá ltozik meg az aktu á lis param é ter int y = 6; f(y); f (4) ; f(y / 7); Tömb típusú paraméter átadása int v[] = 3, 8, 2; fv(v) // Ami val ójá ban : fv (&v [0]), azaz az els ő elemre mutat ó pointerr é konvert áló dik Cím szerinti paraméter átadás y ténylegesen ugyanaz, mint az x a függvényen belül Mindkét irányba közvetít információt Nincs másolás, így gyorsabb void f( int x) Cím szerinti paraméter átadás (fiktív nyelvű kódrészlet) 10
11 ++x; int y = 2; f(y); //y értéke 3 Eredmény szerinti paraméterátadás A függvényhívás végén az x lokális változó értéke bemásolódik az aktuális paraméterbe Hívó irányába közvetít információt void f( int x) x = 0; ++x; Eredmény szerinti paraméter átadás int y; f(y); Érték-eredmény szerinti paraméterátadás 2 másolás is történiik: x-be bemásolódik y értéke a függvény hívásakor, és a végén visszamásolódik Mindkét irányba közvetít információt void f( int x) x = 0; ++x; Érték/eredmény szerinti paraméter átadás int y = 4; f(y); Név szerinti paraméterátadás void f( int x) x = 0; ++x; Név szerinti paraméter átadás f (3) ; // Mintha érték szerint f(y); // Mintha cím szerint f(y + 2); // Mindig kiértékel ő dnek (??) t[y] + k); 11
12 C/C++ C-ben érték szerinti paraméterek vannak C++ érték szerinti és cím szerinti Cím szerinti paraméter átadást a & operátorral jelöljük void f( int &p) // referencia álnév ++p; Pointerek Memóriacím Megváltozhat, hogy hova mutat Nem kötelező inicializálni NULL pointer Referenciák Álnév Mindig ugyanannak az álneve Kötelező inicializálni Nincs null ref int v[] = 3,2,8,6; int i = 1; int &p = v[i]; // int &p egy álnév v ++; ++p; const int &cr = v[i]; ++ cr; / nem lehets é ges Ha nem cím szerint adjuk át, vagyis nem írjuk ki a & operátort a paraméterek elé, akkor érték szerint adjuk át, ezáltlal csak egy másolatot adunk a függvénynek, így az eredeti változókat nem módosítjuk void swap ( int &a, int &b) int temp = a; a = b; b = temp ; Két szám cseréje cím szerinti átadással int main () int x = 4, y = 6; swap (x,y); std :: cout << x << ", " << y; // eredm ény: 6, 4 void swap ( int a, int b) int temp = a; a = b; b = temp ; int main () Két szám cseréje érték szerinti átadással 12
13 int x = 4, y = 6; swap (x,y); std :: cout << x << ", " << y; // eredm ény: 4, 6 9 Előadás Az előadáson következő linkeken elérhető forrás- és fejállományokat mutatta az előadó: datecpp, dateh, datemaincpp Forrás - ELTE IK programtervezői informatikus szak 2013 tavaszi féléves Programozási nyelvek - CPP előadás alapján írt órai jegyzetem - Bjarne Stroustrup: A C++ programozási nyelv,
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
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. április 12. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! -
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
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
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET
PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. március 31. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! -
C++ programok fordítása
C++, 1/ 33 C++ programok fordítása Pataki Norbert 2012. február 24. C++, 2/ 33 Információk Pataki Norbert, patakino@elte.hu http://patakino.web.elte.hu/levelezo Jegy: gyakorlat, Szűgyi Zalán C++, 3/ 33
C programozás. 6 óra Függvények, függvényszerű makrók, globális és
C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,
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++
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
C vagy C++? Programozási Nyelvek és Fordítóprogramok Tanszék. Pataki Norbert. Programozási Nyelvek I.
Programozási Nyelvek és Fordítóprogramok Tanszék Programozási Nyelvek I. Témák 1 Bevezetés 2 A C++ alapfilozófiája 3 Névterek/namespace-ek 4 Függvények 5 Referenciák C++-ban Motiváció A C és a C++ nyelv
Programozás C és C++ -ban
Programozás C és C++ -ban 2. További különbségek a C és C++ között 2.1 Igaz és hamis A C++ programozási nyelv a C-hez hasonlóan definiál néhány alap adattípust: char int float double Ugyanakkor egy új
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
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
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
Java II. I A Java programozási nyelv alapelemei
Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2008. 02. 19. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve az annak
1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3
Darvay Zsolt Típusok és nevek a forráskódban Állandók és változók Hatókörök és az előfeldolgozó Bevitel és kivitel Kifejezések Utasítások Mutatók Függvények Struktúrák és típusok Állománykezelés C programozás
Pénzügyi algoritmusok
Pénzügyi algoritmusok A C++ programozás alapjai Az Integrált Fejlesztői Környezet C++ alapok Az Integrált Fejlesztői Környezet Visual Studio 2013 Community Edition Kitekintés: fordítás Preprocesszor Fordító
FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET
FUNKCIONÁLIS PROGRAMOZÁS GYAKORLAT JEGYZET Szerkesztette: Balogh Tamás 2013. május 17. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add
Információs Technológia
Információs Technológia A C programozási nyelv (Típusok és operátorok) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 szeptember
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();
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:
C++ referencia Izsó Tamás 2017. február 17. 1. Bevezetés A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák: Sokan összetévesztik a pointerrel. Keveset alkalmazzák
Programozás C++ -ban
Programozás C++ -ban 6. Konstansok A C nyelvben konstansokat makróval is deklarálhatunk. Ebben az esetben mindenhol ahol a makró előfordul a fordító a definiált értéket behelyettesíti a makró helyére.
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
Java II. I A Java programozási nyelv alapelemei
Java2 / 1 Java II. I A Java programozási nyelv alapelemei Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2009. 02. 09. Java II.: Alapelemek JAVA2 / 1 A Java formalizmusa A C, illetve
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
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
Bevezetés a programozásba. 8. Előadás: Függvények 2.
Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE
Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK Sapientia EMTE 2015-16 1 Felülnézet 1 Feltételes fordítás #if, #else, #elif, #endif, #ifdef, #ifndef stb. Felülnézet 2 #include: hatására a preprocesszor
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. (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.
Memóriakezelés, dinamikus memóriakezelés
Metódus: függvények és eljárások összefoglaló neve. Memóriakezelés, dinamikus memóriakezelés Nézzük végig, a C++ memóriakezelését. Alapvetően három fő memóriaterületet különböztetünk meg. Végrehajtási
Függvények. Programozás I. Hatwágner F. Miklós november 16. Széchenyi István Egyetem, Gy r
Programozás I. Széchenyi István Egyetem, Gy r 2014. november 16. Áttekintés kel kapcsolatos fogalmak deklaráció Több, kompatibilis változat is elképzelhet. Meg kell el znie a fv. hívását. Mindenképp rögzíti
Bevezetés a C++ programozási nyelvbe
Bevezetés a C++ programozási nyelvbe Miskolci Egyetem Általános Informatikai Tanszék CPP0 / 1 Története A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
A C programozási nyelv I. Bevezetés
A C programozási nyelv I. Bevezetés Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv I. (bevezetés) CBEV1 / 1 A C nyelv története Dennis M. Ritchie AT&T Lab., 1972 rendszerprogramozás,
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ás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar
Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja
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)
Programozás C++ -ban 2007/4
Programozás C++ -ban 2007/4 1. Az adatokhoz való hozzáférés ellenőrzése Egy C programban a struktúrák minden része mindig elérhető. Ugyanakkor ez nem a legkedvezőbb helyzet. Több szempontból is hasznos
Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés
Bevezetés a programozásba 2 7. Előadás: Objektumszű és osztályszű elemek, hibakezelés ISMÉTLÉS Osztály class Particle { public: Particle( X, X, Y); virtual void mozog( ); ); virtual void rajzol( ) const;
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
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
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ú
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 1. előadás Dr. Bécsi Tamás A tárgy órái Előadás hetente (St101) csüt. 8:15 Bécsi Tamás C elmélet Ajánlott irodalom Dennis Ritchie: A C programozási nyelv Gyakorlat hetente
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
Bevezetés a programozásba II. 8. Előadás: Osztályok, objektumok, osztályszintű metódusok
Bevezetés a programozásba II 8. Előadás: Osztályok, objektumok, osztályszintű metódusok vektor.h #ifndef VEKTOR_H #define VEKTOR_H class Vektor { int meret, *mut; public: Vektor(int meret); int szamlal(int
- 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
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
Programozás C++ -ban 2007/7
Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum
1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok
Számítógépes szimulációk 1. Bevezetés BME Fizika Intézet 2015. szeptember 9. Bevezetés A félév menete C-ismétlés, 1. rész Oktatók: Nagyfalusi Balázs: nagyfalusi@phy.bme.hu, F3 211. : tcsaba@eik.bme.hu,
Információs Technológia
Információs Technológia (Struktúra, mutatók, függvényhívás) Fodor Attila Pannon Egyetem Műszaki Informatika Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010 október 14/21. Struktúra
Bevezetés a programozásba. 9. Előadás: Rekordok
Bevezetés a programozásba 9. Előadás: Rekordok ISMÉTLÉS Függvényhívás #include #include #include #include using using namespace namespace std; std; double double terulet(double
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
Bevezetés a programozásba Előadás: Fordítási egység
Bevezetés a programozásba 2 5. Előadás: Fordítási egység ISMÉTLÉS Tagfüggvény kiemelése struct Particle { int x,y; unsigned char r,g,b; void rajzol(); }; void Particle::rajzol() { gout
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
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2019. augusztus 29. Feladat: írjuk ki az els 10 természetes szám négyzetét! #i n c l u d e i n t main ( v o i d ) { p r
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek
OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető
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,
Dr. Schuster György október 14.
Real-time operációs rendszerek RTOS 2011. október 14. A fordítás vázlata prog.c Előfeldolgozó Átmenti állomány Fordító prog.obj más.obj-tek könyvtárak indító kód Linker futtatható kód Ismétlés Előfeldolgozó
Bevezetés a programozásba I.
Bevezetés a programozásba I. 6. gyakorlat C++ alapok, szövegkezelés Surányi Márton PPKE-ITK 2010.10.12. Forrásfájlok: *.cpp fájlok Fordítás: a folyamat, amikor a forrásfájlból futtatható állományt állítunk
FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET
FUNKCIONÁLIS PROGRAMOZÁS ELŐADÁS JEGYZET Szerkesztette: Balogh Tamás 2013. május 30. Ha hibát találsz, kérlek jelezd a info@baloghtamas.hu e-mail címen! Ez a Mű a Creative Commons Nevezd meg! - Ne add
Programozás II gyakorlat. 4. Öröklődés
Programozás II gyakorlat 4. Öröklődés Feladat Egy játékfejlesztő cég olyan programot fejleszt, amely nyilvántartja az alkalmazottai adatait. Tároljuk minden személy: Nevét (legfeljebb 50 karakter) Születési
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás 4.11. A C előfeldolgozó rendszer A fordítás első lépése a C esetében a különböző nyelvi kiterjesztések feldolgozása: másik állomány tartalmának
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
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ő
A C# programozási nyelv alapjai
A C# programozási nyelv alapjai Tisztán objektum-orientált Kis- és nagybetűket megkülönbözteti Ötvözi a C++, Delphi, Java programozási nyelvek pozitívumait.net futtatókörnyezet Visual Studio fejlesztőkörnyezet
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
Kifejezések. Kozsik Tamás. December 11, 2016
Kifejezések Kozsik Tamás December 11, 2016 Kifejezések Lexika Szintaktika Szemantika Lexika azonosítók (változó-, metódus-, típus- és csomagnevek) literálok operátorok, pl. + zárójelek: (), [], {},
Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása
Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 10. gyakorlat C++: alprogramok deklarációja és paraméterátadása 2011.11.22. Giachetta Roberto groberto@inf.elte.hu
Programozás. C++ típusok, operátorok. Fodor Attila
Programozás C++ típusok, operátorok Fodor Attila Pannon Egyetem Műszaki Informatikai Kar Villamosmérnöki és Információs Rendszerek Tanszék foa@almos.vein.hu 2010. március 4. Deklaráció és definíció C++
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények. Dr. Bécsi Tamás 6. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Függvények Dr. Bécsi Tamás 6. Előadás Bevezetés Egy idő után az egyetlen main(){ függvénnyel megírt programunk túl nagy méretű lesz. Vannak
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 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
Programozás 1. Dr. Iványi Péter
Programozás 1. Dr. Iványi Péter 1 C nyelv B.W. Kernighan és D.M. Ritchie, 1978 The C Programming language 2 C nyelv Amerikai Szabványügy Hivatal (ANSI), 1983 X3J11 bizottság a C nyelv szabványosítására
C programozási nyelv
C programozási nyelv Előfeldolgozó utasítások Dr Schuster György 2011 május 3 Dr Schuster György () C programozási nyelv Előfeldolgozó utasítások 2011 május 3 1 / 15 A fordítás menete Dr Schuster György
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)
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
Bevezetés a programozásba I.
Bevezetés a programozásba I. 5. gyakorlat Surányi Márton PPKE-ITK 2010.10.05. C++ A C++ egy magas szint programozási nyelv. A legels változatot Bjarne Stroutstrup dolgozta ki 1973 és 1985 között, a C nyelvb
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
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás
Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás 5.3. Mutatók,tömbök A mutató vagy pointer olyan változó, amely egy másik változó címét tartalmazza. A C nyelvű programokban gyakran használják a
Készítette: Nagy Tibor István
Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke
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,
1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;
Rövid elméleti összefoglaló 1. Gyakorlat A C++ nyelv hatékony, általános célú programozási nyelv, amely hagyományos fejlesztőeszközként és objektum-orientált programozási nyelvként egyaránt használható.
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
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()
Maximum kiválasztás tömbben
ELEMI ALKALMAZÁSOK FEJLESZTÉSE I. Maximum kiválasztás tömbben Készítette: Szabóné Nacsa Rozália Gregorics Tibor tömb létrehozási módozatok maximum kiválasztás kódolása for ciklus adatellenőrzés do-while
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
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök. Dr. Bécsi Tamás 4. Előadás
Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Előfeldolgozó rendszer Tömbök Dr. Bécsi Tamás 4. Előadás A?: operátor Nézzük meg a következő kifejezést: if (a>b) z=a; else z=b; Ez felírható
Mintavételes szabályozás mikrovezérlő segítségével
Automatizálási Tanszék Mintavételes szabályozás mikrovezérlő segítségével Budai Tamás budai.tamas@sze.hu http://maxwell.sze.hu/~budait Tartalom Mikrovezérlőkről röviden Programozási alapismeretek ismétlés
C# nyelv alapjai. Krizsán Zoltán 1. Objektumorientált programozás C# alapokon tananyag. Általános Informatikai Tanszék Miskolci Egyetem
C# nyelv alapjai Krizsán Zoltán 1 Általános Informatikai Tanszék Miskolci Egyetem Objektumorientált programozás C# alapokon tananyag Tartalom Bevezetés Lokális változó Utasítások Szójáték Why do all real
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
8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
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 alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double
Programozás alapjai C nyelv 4. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.10.10.. -1- Mit tudunk már? Típus fogalma char, int, float,
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-
Emlékeztető: a fordítás lépései. Szimbólumtábla-kezelés. Információáramlás. Információáramlás. Információáramlás.
Emlékeztető: a fordítás lépései Forrás-kezelő (source handler) Szimbólumtábla-kezelés Fordítóprogramok előadás (A, C, T szakirány) Lexikális elemző (scanner) Szintaktikus elemző (parser) Szemantikus elemző