1 gyakorlat ELTEIK Programozsi nyelvek I Vadsz Pter

  • Slides: 18
Download presentation
1. gyakorlat ELTE-IK, Programozási nyelvek I. - Vadász Péter

1. gyakorlat ELTE-IK, Programozási nyelvek I. - Vadász Péter

Tárgy céljai • Átfogó ismereteket adni a C++ programozási nyelvről • Programnyelvi fogalmak •

Tárgy céljai • Átfogó ismereteket adni a C++ programozási nyelvről • Programnyelvi fogalmak • Programok fordításának alapjai

Témák • • • programnyelvek típusai C++ fordító működése, fajtái, kapcsolói pointerek, pointer-aritmetika tömbkezelés

Témák • • • programnyelvek típusai C++ fordító működése, fajtái, kapcsolói pointerek, pointer-aritmetika tömbkezelés operátorok függvények, paraméterátadása STL osztályok: konstruktor, destruktor, öröklődés, absztrakt osztály generikusok (template) …

Követelmények • 3 röp zh (+, 0, -), az eredmények az év végi vizsga

Követelmények • 3 röp zh (+, 0, -), az eredmények az év végi vizsga beugrójába számítanak • Gyakorlatok anyagából • Gyakorlati kérdés, egyszerű fogalommagyarázat, ~5 perc • Opcionális beadandó, gyakorlás • Félév végén vizsga • Elméleti beugró (előadás anyaga), 15 kérdés • Gyakorlati rész, 3 óra, általában sablon (template) • Jegy a két rész átlagából

Segédanyagok, elérhetőség • Bjarne Strostrup: A C++ programozási nyelv • Scott Meyers: Hatékony C++

Segédanyagok, elérhetőség • Bjarne Strostrup: A C++ programozási nyelv • Scott Meyers: Hatékony C++ • www. vadaszfoto. hu/cpp

Fordítás • Magas szintű nyelvről gépi kódra • Előnyök • Fordítás idejű kód elleneőrzés,

Fordítás • Magas szintű nyelvről gépi kódra • Előnyök • Fordítás idejű kód elleneőrzés, kódelemzés • Optimalizálás • Figyelmeztetések potenciális hibákra • Hátrányok • Platformfüggő • C, C++, Pascal

Interpretálás • Interpreter (parancs értelmező) hajtja végre az utasításokat • Előny • Platformfüggetlen •

Interpretálás • Interpreter (parancs értelmező) hajtja végre az utasításokat • Előny • Platformfüggetlen • Hátrány • Lassabb végrehajtás • Nincs fordítás, sok hibaleheőség • Java. Script, Python, PHP, …

Byte-code • A programkód byte-code-ra fodrul • A byte-code-ot interpreter hajtja végre • Van

Byte-code • A programkód byte-code-ra fodrul • A byte-code-ot interpreter hajtja végre • Van fordítás idejű ellenőrzés, kódoptimalizálás • Platform függetlenség • Java

C vs C++ • C számos hibával, hiányossággal rendelkezik • Nincsenek osztályok • Nincsenek

C vs C++ • C számos hibával, hiányossággal rendelkezik • Nincsenek osztályok • Nincsenek stringek • … • Bjarne Strostrup, 1983 • C++ magas szintű nyelvi elemeket vezet be • Sok utasítás fordítási időben is kiértékelhető

Fordítás lépései 1. Forráskód begépelése 2. Preprocesszálási fázis 3. Nyelvi fordítás 4. Összeszerkesztés •

Fordítás lépései 1. Forráskód begépelése 2. Preprocesszálási fázis 3. Nyelvi fordítás 4. Összeszerkesztés • Fordítási egység: alapvetően egy olyan állomány, amiből tárgykód keletkezik, a fordító egy lépésben le tudja fordítani

Összeszerkesztés a. cpp void f() { … } b. cpp void f() { …

Összeszerkesztés a. cpp void f() { … } b. cpp void f() { … } c. cpp void f();

Összeszerkesztés int x = 1; int b = 1; extern int c; int x;

Összeszerkesztés int x = 1; int b = 1; extern int c; int x; extern double b = 1; extern int c;

Fejállományok • Többször használatos kódrészletek különszervezése • #include … • Általában • • Névterek

Fejállományok • Többször használatos kódrészletek különszervezése • #include … • Általában • • Névterek Osztályok Függvények …

Egyszeri definiálás szabálya (ODR) • Egy adott osztályt, struktúrát, felsorolást, sablont mindig csak egyszer

Egyszeri definiálás szabálya (ODR) • Egy adott osztályt, struktúrát, felsorolást, sablont mindig csak egyszer definiálhatunk egy programban • Több definícióról az ODR alapján csak akkor lehet szó, ha: 1. A két definíció különböző fordítási egységekben szerepel. 2. Szimbólumról, szimbólumra megegyeznek. 3. A szimbólumok jelentése minden fordítási egység esetén ugyanaz.

g++ • g++ hello. cpp • g++ a. cpp b. cpp c. obj

g++ • g++ hello. cpp • g++ a. cpp b. cpp c. obj

g++ kapcsolók • -w: figyelmeztetések • -pedantic –ansi: szabvány figyelembe vétele std: : cin

g++ kapcsolók • -w: figyelmeztetések • -pedantic –ansi: szabvány figyelembe vétele std: : cin >> k; int v[k]; //ez nem szabványos, a –pedantic jelzi • -c: nem indul el a linker, csak fordítás • -o name: alternatív név megadása a futtatható állománynak • -save-temps: megtartja a preprocesszált, fájlokat, assembly kódot

g++ kapcsolók

g++ kapcsolók

Mit ír ki? ? int i = -3; unsigned int j = 2; if

Mit ír ki? ? int i = -3; unsigned int j = 2; if (i < j) { std: : cout << „OK”; } else { std: : cout << „? ? ? ”; }