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



Hasonló dokumentumok
Programozás C és C++ -ban

Programozás C++ -ban 2007/1

Programozás C és C++ -ban

Programozás C és C++ -ban

1. Alapok. Programozás II

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

Bevezetés a programozásba. 8. Előadás: Függvények 2.

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

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Programozási nyelvek I. 5. előadás (Gregorics Tibor anyagának felhasználásával)

Szövegek C++ -ban, a string osztály

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

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

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

Bevezetés a programozásba I.

1. Írjunk programot mely beolvas két egész számot és kinyomtatja az összegüket.

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

0.1. Mi az a standard be- és kimenet? A két mintafeladat leírása

Bevezetés a programozásba I.

Pénzügyi algoritmusok

Programozás C++ -ban

Bevezetés Kiíratás Beolvasás Formázás Fájlkezelés Gyakorló feladatok C++ I/O. Bevezetés. Izsó Tamás február 20. Izsó Tamás C++ I/O / 1

Maximum kiválasztás tömbben

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

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r

Bevezetés a programozásba I.

Programozási alapismeretek :: beadandó feladat. Felhasználói dokumentáció. Molnár Tamás MOTIABT.ELTE

A C++ nyelvben a függvény nevek túlterhelésével biztonságosabbá tehetnénk az adatok kiírását és beolvasását.

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

INFORMATIKA tétel 2018

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Bevezetés a programozásba. 9. Előadás: Rekordok

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

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

Programozás I. 5. Előadás: Függvények

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Programozás C++ -ban

Pénzügyi algoritmusok

C programozási nyelv

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

Programozás C++ -ban 2007/7

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

Bevezetés a programozásba. 11. Előadás: Esettanulmány

C++ programok fordítása

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

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

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

Bevezetés a C++ programozási nyelvbe

Bevezetés a programozásba I.

Algoritmizálás + kódolás C++ nyelven és Pascalban

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

Informatika terméktervezőknek

Programozás I gyakorlat. 10. Stringek, mutatók

PROGRAMOZÁSI NYELVEK - CPP. GYAKORLAT JEGYZET

Bevezetés a programozásba. 6. Előadás: C++ bevezető

117. AA Megoldó Alfréd AA 117.

Programozás C++ -ban

Alprogramok, paraméterátadás

Programozás I gyakorlat

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Programozás I gyakorlat

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

C programozás. 1 óra Bevezetés

Bevezetés a C++ programozásba

Java II. I A Java programozási nyelv alapelemei

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

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. Függvények. Függvények(2)

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

15. Programok fordítása és végrehajtása

Java II. I A Java programozási nyelv alapelemei

1. Gyakorlat. Rövid elméleti összefoglaló. <tárolási osztály>típus <típus > változónév <= kezdőérték><, >;

Programozás C++ -ban 2007/4

Programozás. C++ típusok, operátorok. Fodor Attila

INFORMATIKA tétel 2017

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

Mintavételes szabályozás mikrovezérlő segítségével

Programozás II. 6.Öröklés Dr. Iványi Péter

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

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

tétel: különböző típusú adatokat csoportosít, ezeket egyetlen adatként kezeli, de hozzáférhetünk az elemeihez is

Típusok és konstansok

Programozás I gyakorlat

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

C++ Gyakorlat jegyzet 7. óra

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

7. fejezet: Mutatók és tömbök

5. Gyakorlat. struct diak {

Occam 1. Készítette: Szabó Éva

Programozás I. gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Osztályok. 4. gyakorlat

Stack Vezérlés szerkezet Adat 2.

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

500. AA Megoldó Alfréd AA 500.

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

Bevezetés a programozásba I 8. gyakorlat. C++: szövegfolyamok, intelligens tömbök

Algoritmizálás + kódolás C++ nyelven és Pascalban

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

Átírás:

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 Ma már önálló nyelv, de felülről kompatibilis 2

Ötletek: C++ Simula67: osztályok, származtatott osztályok Algol68: operátor kiterjesztés Ada: template-k Egyéb Minden C program lefordítható C++-ban, de nem biztos hogy ugyanaz a tárgykód lesz. 3

Előnyök C++ Támogatja a kód újrahasznosítást Új adattípus létrehozása könnyebb Memória kezelés könnyebb Erősebb szintaktikai ellenőrzés Adat elrejtés jobb Persze lehet és kell is kritikával fogadni az előnyöket! 4

Ugyanaz mint C-ben /* valami */ Megjegyzések Egy soros megjegyzés // valami 5

bárhol definiálhatóak Változók deklarálása double b; b = 2.14; double c; c = b + 4.5; 6

Függvények A fordító pontosan ellenőrzi, hogy egyezik-e a definícióval. int func(); C -ben: Egy függvény aminek a visszatérési értéke egész, argumentuma bármi C++ -ban: Nincs argumentuma!!! 7

include file-ok C-ben #include <stdio.h> C++ -ban #include <iostream> Más név Kiterjesztés nélkül 8

iostream printf, scanf helyett az input-output függvények itt vannak deklarálva Kimeneti csatorna : cout Például: cout << Hello ; 9

#include <iostream> iostream int main() std::cout << "Hello World! I am "; std::cout << 8; std::cout << " Today!" << std::endl; return 0; Azt is meg kell adni, hogy mely csomagból vesszük a csatornát! Az adat típusa bármi lehet! 10

iostream #include <iostream> using namespace std; int main() cout << "Hello World! I am " << 8; cout << " Today!" << endl; return 0; A teljes csomagot használjuk, minden elemét, függvényét, stb. 11

iostream #include <iostream> using namespace std; int main() cout << "egy decimalis szam: " << dec << 15 << endl; cout << "egy oktalis szam: " << oct << 15 << endl; cout << "egy hexadecimalis szam: " << hex << 15 << endl; return 0; Kulcsszót is betölthetünk ami kontrollálja a kiírást. 12

Érvényességi kör operátor :: (hatókör operátor) A program tetszőleges pontjából hivatkozhatunk globális változóra, melynek ugyanaz a neve mint a lokális változónak Használni fogjuk még: Osztályoknál (lásd később) Névtartományoknál (lásd később) 13

Érvényességi kör operátor #include <iostream> using namespace std; double a = 1.5; int main() double a = 2.3; cout << Lokalis: << a << endl; // 2.3 cout << Globalis: << ::a << endl; // 1.5 return 0; 14

#include <iostream> using namespace std; Beolvasás int main () int number; cout << "Adj meg egy decimalis szamot: "; cin >> number; cout << "a szam hexadecimalis erteke = 0x"; cout << hex << number << endl; return 0; 15

C -ben Karakter tömb Nehézkes kezelés C++ -ban szövegek Új adattípus: string #include <string> 16

szövegek #include <string> #include <iostream> using namespace std; int main() string s1, s2; // ures szovegek string s3 = "Hello World."; // szoveg kezdeti ertekkel string s4("i am"); // van kezdeti ertek s2 = "Today"; // Ertekadas s1 = s3 + " " + s4; // Szovegek osszefuzese s1 += " 8 "; // cout << s1 + s2 + "!" << endl; return 0; 17

#include <iostream> #include <cstring> using namespace std; char name[30]; szövegek int main( ) strcpy(name, "Sam"); cout << "The name is " << name << '\n'; return (0); 18

File-ok kezelése <fstream> include file File-ok olvasására az ifstream és írására az ofstream csatornák használhatók Egy sor beolvasásához a getline függvényt lehet használni 19

File-ok kezelése #include <string> #include <fstream> using namespace std; int main() ifstream in("test.dat"); // Megnyitas olvasasra ofstream out("testout.dat"); // Megnyitas irasra string s; while(getline(in, s)) out << s << "\n"; return 0; // Olvassunk be egy sort // irjuk ki a masik fileba 20

Igaz és hamis C -ben Adattípusok: char, int, float, double hamis: nulla igaz: nem nulla C++ -ban bool típus, értéke: true, false 21

Igaz és hamis #include <iostream> using namespace std; int main() bool felt; int a; felt = false; if(felt) // ez hamis lesz a = 1; else a = 2; // ez a rész hajtódik végre cout << a << endl; return 0; 22

Érték szerinti paraméterátadás #include <iostream> using namespace std; void f(int a) cout << "a = " << a << endl; a = 5; cout << "a = " << a << endl; 47 5 int main() int x = 47; cout << "x = " << x << endl; f(x); cout << "x = " << x << endl; return 0; 47 47 23

Mutatók #include <iostream> using namespace std; void f(int *a) cout << "a = " << *a << endl; *a = 5; cout << "a = " << *a << endl; 47 5 int main() int x = 47; cout << "x = " << x << endl; f(&x); cout << "x = " << x << endl; return 0; 47 5 24

Referenciák #include <iostream> using namespace std; void f(int &a) cout << "a = " << a << endl; 47 // itt közvetlenül a változóba írunk, nem a címére!!! a = 5; cout << "a = " << a << endl; 5 int main() int x = 47; cout << "x = " << x << endl; f(x); cout << "x = " << x << endl; return 0; Nehezebb megmondani, hogy változik-e a paraméter 47 5 25

C-ben írt függvények extern "C" void *xmalloc(unsigned size); Több deklaráció esetén: extern "C" #include <valami.h> int *fvg(int a); 26

C include file C++ -ban #ifdef cplusplus extern "C" #endif // a függvények és változók ide jönnek, - // például: void *xmalloc(unsigned size); #ifdef cplusplus #endif 27

Többértelműség 2. int main() int a; unsigned char b; cout << "Adj meg egy 0 es 255 kozotti szamot"; cin >> a; b = a; PrintBinary(b); cout << endl; return 0; 28

Többértelműség 1. #include <iostream> using namespace std; void PrintBinary(const unsigned char val) for(int i = 7; i >= 0; i--) if(val & (1 << i)) cout << "1"; else cout << "0"; 29

Függvényekmég egyszer Emberi kommunikáció: egy szó több mindent jelenthet Programban: egy tevékenység egy név De mi van ha csak a típusa különböző print_char, print_int, print_double 30

Function overloading Az overloading általánosan azt jelenti, hogy az adatokon valamilyen operáció végrehajtását végző szimbólumhoz (például függvényazonosítóhoz, operátorhoz) több, különböző típusra vonatkozó különböző jelentést rendelünk. Valamilyen adaton mely műveletet hajtjuk végre függ az adat szignatúrájától (típusától) 31

Function overloading #include <stdio.h> void show(int val) printf("integer: %d\n", val); void show(double val) printf("double: %lf\n", val); void show(char *val) printf("string: %s\n", val); int main() show(12); show(3.1415); show("hello World\n!"); 32

Function overloading A forrás kódban azonos a nevük a fordítás után nem Name mangling void show(int) void show(char *) @@showi @@showcp Különböző mangling -et használnak a fordítók 33

Function overloading Ne használjuk, ha a két függvény teljesen mást csinál A függvényeknél nem elég ha csak a visszatérési értékben különböznek (mivel azt nem kötelező figyelembe venni) show( hello ); A függvény overloading néha meglephet bennünket. Melyik függvényt hívjuk meg? show(0); Egész számként nyomtatja. 34

Alap argumentum Még egy kényelmi lehetőség Ha nem adunk meg értéket akkor a programozó által megadott értéket veszi fel egy függvény argumentuma 35

Alap argumentum #include <stdio.h> void showstring(char *str = "Hello World!\n"); int main() showstring("ez egy explicit argumentum.\n"); showstring(); // valójában ez: // showstring("hello World!\n"); 36

Alap argumentum void two_ints(int a = 1, int b = 4); int main() two_ints(); // argumentumok: 1, 4 two_ints(20); // argumentumok: 20, 4 two_ints(20, 5); // argumentumok: 20, 5 Több módon használhatjuk, de ez hibás two_ints(,6) 37