bevezet s a c programoz si nyelvbe
Download
Skip this Video
Download Presentation
Bevezet é s a C++ programozási nyelvbe

Loading in 2 Seconds...

play fullscreen
1 / 32

Bevezet é s a C++ programozási nyelvbe - PowerPoint PPT Presentation


  • 168 Views
  • Uploaded on

Bevezet é s a C++ programozási nyelvbe. Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék. Története. A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése. Az ANSI-C nyelvet - néhány megszorítással - valódi részhalmazaként tartalmazza.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Bevezet é s a C++ programozási nyelvbe' - diem


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
bevezet s a c programoz si nyelvbe

Bevezetés a C++ programozási nyelvbe

Ficsor Lajos

Miskolci Egyetem

Általános Informatikai Tanszék

t rt nete
Története
  • A C++ programozási nyelv a C programozási nyelv objektum orientált kiterjesztése.
  • Az ANSI-C nyelvet - néhány megszorítással - valódi részhalmazaként tartalmazza.
  • Első implementáció: AT&T Bell Labs, Bjarne Stroustrup, a nyolcvanas évek eleje.
    • Ez egy pre-compiler volt, amely a C++ kódot C kódra fordította, ami aztán a szokásos C fordítóval volt feldolgozható.

Bevezetés a C++ programozási nyelvbe

t rt nete folyt
Története(folyt.)
  • ANSI szabványtervezet: 1996. december 2.
  • A hivatalos szabvány szám: ISO/EIC 14882.
  • Általánosan elterjedt programozási nyelv
  • Gyakorlatilag minden architektúra támogatja
  • Számos előre definiált osztálykönyvtár
  • Sok fejlesztőeszköz épül erre a nyelvre

Bevezetés a C++ programozási nyelvbe

haszn lat nak m djai
Használatának módjai
  • funkcionális szemléletű programok készítésére, kényelmi szolgáltatásokkal ellátott C nyelvként
    • az osztály és objektum használata nélkül
  • funkcionális szemléletű programok készítésére, tetszőleges típusokkal bővíthető nyelvként
    • kihasználva a C++ szinte valamennyi nyelvi konstrukcióját
  • objektum orientált szemléletű programok implementálására

Bevezetés a C++ programozási nyelvbe

nem objektum orient lt kiterjeszt sek
Nem objektum orientált kiterjesztések
  • Nem igénylik az osztály fogalmát. Új vagy módosított szabályok vonatkoznak az alábbiakra
    • megjegyzés
    • definíció
    • hivatkozás típus
    • felsorolás, struktúra és unió típusú objektumok
    • típuskonverzió
    • dinamikus memóriakezelés
    • új alaptípusok
    • függvényekre vonatkozó kiterjesztések

Bevezetés a C++ programozási nyelvbe

megjegyz s comment
Megjegyzés (comment)
  • A // (dupla törtvonal) olyan megjegyzés elejét jelzi, amelynek a vége a következő sorváltás karakter.
  • Bárhol alkalmazható.

Bevezetés a C++ programozási nyelvbe

a defin ci
A definíció
  • A definíció végrehajtható utasításnak számít, így bárhol előfordulhat, ahol utasítás írható.
  • Alapszabályként a definiált objektum hatásköre a definíciótól az azt magábanfoglaló blokk végéig terjed.
  • Kivétel
    • afor utasításban foglalt első két kifejezésben
    • az if, while és switch utasítások feltételében

deklarált azonosítók ezen utasításokra nézve lokálisak

Bevezetés a C++ programozási nyelvbe

a defin ci folyt

index

betu

A definíció (folyt.)
  • Példa a kivételre:

for (int index=1; index<8; index++)

{

printf ("%d ",index);

char betu = index+65;

printf ("%c\n",betu);

}

  • betu és indexegyaránt lokális a ciklusmagra nézve

Bevezetés a C++ programozási nyelvbe

a defin ci folyt1
A definíció (folyt.)
  • Mivel a betudefiníciója ténylegesen a ciklusmag belsejében van, így a ciklusmag minden végrehajtásakor létrejön, a végén pedig megszűnik
  • Az index az őt tartalmazó kifejezés kiértékelésekor létrejön, és a ciklusból való kilépéskor megszűnik
  • Megjegyzések:
    • A most hatályos szabvány előtt nem létezett ez a kivétel!
    • A kétféle értelmezés között kapcsolókkal lehet választani.
    • Nem egységes a fordítók alapértelmezése!

Bevezetés a C++ programozási nyelvbe

hivatkoz s t pus
Hivatkozás típus
  • C: minden alaptípusból pointer típus származtatható
  • C++ : minden típusbólhivatkozás típusis származtatható
  • Formája:

típusnév &

  •  A hivatkozás valamely objektum alternatív neveként szerepel, mindig kötelező tehát inicializálni.

Bevezetés a C++ programozási nyelvbe

hivatkoz s t pus folyt
Hivatkozás típus (folyt.)
  • Egy hivatkozás típusú változó szabályos definíciója például:

int valt;

int& masik = &valt;

  • A hivatkozás típust a leggyakrabban a függvény paraméterének és visszatérési értékének típusaként használjuk.
  • A hivatkozás típuscímet tárol de értékként(indirekció nélkül) hivatkozhatunkrá.

Bevezetés a C++ programozási nyelvbe

felsorol s strukt ra uni t pus objektumok deklar l sa
Felsorolás, struktúra, unió típusú objektumok deklarálása
  • A C++ a fenti típusú objektumok deklarálása esetén nem követeli meg a deklarációban az enum, struct illetve unionkulcsszavak alkalmazását, az adatszerkezetek deklarációjában szereplő nevek önmagukban típusnévként használhatók

Bevezetés a C++ programozási nyelvbe

f elsorol s strukt ra uni t pus objektumok deklar l sa folyt
Felsorolás, struktúra, unió típusú objektumok deklarálása (folyt.)
  • Példa:

struct datum {

int ev;

char honap[15];

int nap;

};

// a "struct" alapszó elmaradhat

datum ma,holnap,szulinap;

Bevezetés a C++ programozási nyelvbe

t puskonverzi
Típuskonverzió
  • A cast stílusú típuskonverzió helyett használható az alábbi forma is:

típusnév(kifejezés)

  • Tehát pl. (char)a helyett char(a) is írható
  • A két forma keverhető egy programon belül.

Bevezetés a C++ programozási nyelvbe

dinamikus mem riakezel s
Dinamikus memóriakezelés
  • A C programokban megszokott memóriakezelő függvények (malloc(), free() és társai) helyett a C++ két új operátort vezet be:

new

delete

Bevezetés a C++ programozási nyelvbe

a new oper tor
A new operátor
  • Formája:

new típusnév

  • vagy

new típusnév[elemek száma]

  • Az operátor a típusnév (és ha adott, az elemek száma) által meghatározott méretű helyet kísérel meg lefoglalni a memóriában
  • Ha sikeres volta művelet, eredménye egy típusnev*típusú érték, amely a lefoglalt terület kezdőcímét adja, egyébként az eredmény 0.

Bevezetés a C++ programozási nyelvbe

a new oper tor folyt
A new operátor(folyt.)
  • Egyszerű példák:

// helyfoglalás egy egész értéknek

int *p=new int;

// helyfoglalás egy 200 elemű egész

// tömbnek

int *pp;

pp = new int[200];

Bevezetés a C++ programozási nyelvbe

a delete oper tor
A delete operátor
  • Egy objektum törlése és az általa elfoglalt hely felszabadítása a memóriából:

delete pointer;

  • Egy tömb törlése:

delete [] pointer;

  • Csak a new operátorral értéket kapott pointerrel alkalmazható, egyébként az eredménye definiálatlan.

Bevezetés a C++ programozási nyelvbe

a delete oper tor folyt
A delete operátor (folyt.)
  • A NULL pointerre alkalmazva hatástalan.
  • Tömb törlése az egyszerű formájú operátorral, vagy egy objektum törlése a tömbökre vonatkozó formával definiálatlan hatású.

Bevezetés a C++ programozási nyelvbe

az ansi c helyfoglal f ggv nyei
Az ANSI-C helyfoglaló függvényei
  • A C++ ismeri az ANSI-C helyfoglaló függvényeit is, tehát (elsősorban kompatibilitási okokból) azok is használhatóak.
  • Tilos azonban a két allokációs mechanizmus együttes alkalmazása egy programon belül: ennek hatása definiálatlan.

Bevezetés a C++ programozási nyelvbe

a bool alapt pus
A bool alaptípus
  • Az alaptípus logikai értékek tárolására szolgál
  • Értéke igaz(nem 0) vagy hamis(0) lehet
  • A C++ nyelvben a logikai kifejezések végeredménye bool típusú.
  • Integrális típus
  • Ha szükséges, egy bool típusú érték a C konvenció értelmében a 0 vagy 1 értékre, egy egész érték pedig 0 esetén a hamis, nem 0 esetén az igaz értékre konvertálódik.

Bevezetés a C++ programozási nyelvbe

a wchar t alapt pus
A wchar_t alaptípus
  • Az egy byte-nál hosszabb kódú karaktereket alkalmazó karakterkészletek egy elemét tárolni képes típus. Szintén integrális típus.

Bevezetés a C++ programozási nyelvbe

hivatkoz s c m szerinti param ter tad s
Hivatkozás (cím) szerinti paraméterátadás
  • Az adott formális paramétert hivatkozási típusúnak kell deklarálni
  • Az aktuális paraméter kompatibilis típusú balérték
  • A hivatkozás szerinti paraméternek a címe adódik át
  • A függvényben nem kell indirekciót alkalmazni a változó értékének elérésére.
  • Ha a függvény értékadást tartalmaz a formális paraméterrre, akkor azzal az aktuális paraméterének az értékét is megváltoztatja.

Bevezetés a C++ programozási nyelvbe

hivatkoz s szerinti param ter tad s p lda
Hivatkozás szerinti paraméterátadás (példa)

void csere (int &a, int &b)

{

int i;

i=a; a=b; b=i;

}

main()

{int a=5, b=10;

csere (a,b);

printf ("%d %d\n",a,b);

}

Bevezetés a C++ programozási nyelvbe

alap rtelmez s szerinti param ter rt k 1
Alapértelmezés szerinti paraméter érték 1.
  • Ha egy formális paraméterhez = jellel egy kifejezést kapcsolunk, az a paraméter híváskor elmaradhat, de a kifejezésnek megfelelő kezdőértéket veszi fel.
  • Az alapértelmezés szerinti paraméterérték megadása formálisan is egy inicializálásnak felel meg.

Bevezetés a C++ programozási nyelvbe

alap rtelmez s szerinti param ter rt k 2
Alapértelmezés szerinti paraméter érték 2.
  • Szabályok:
    • Ha egy paraméternek van alapértelmezés szerinti (default) értéke, akkor az utána következő valamennyi paraméternek kell legyen.
    • A kifejezés értékének típusa a paraméter típusával kompatibilis kell legyen.
    • Egy adott paraméter default értékét vagy a prototípusban, vagy a definícióban kell megadni, mindkét helyen tilos!

Bevezetés a C++ programozási nyelvbe

alap rtelmez s szerinti param ter rt k 3
Alapértelmezés szerinti paraméter érték 3.
  • Szokásos eljárás, hogy valamennyi default értéket a prototípusban adunk meg, hiszen az mindig publikus, a függvény definíció pedig nem mindig az.
  • A kifejezés kiértékelése a hívás során futási időben történik.
  • Default értékkel nem rendelkező formális paraméter helyére kötelező aktuális paramétert írni.

Bevezetés a C++ programozási nyelvbe

alap rtelmez s szerinti param ter rt k 4
Alapértelmezés szerinti paraméter érték 4.
  • Egy példa:

int kobtart (int hossz, int szel=3, int mag=5);

main ()

{int x=10, y=12, z=2, k;

k = kobtart (x,y,z);

k = kobtart (x,y); //k=kobtart(x,y,5)

k = kobtart (x); //kobtart(x,3,5)

k = kobtart (); // Ez hibás!

}

Bevezetés a C++ programozási nyelvbe

az inline f ggv ny
Az inline függvény
  • Egy függvényt a deklarációjában az inline minősítővel láthatunk el
  • Ezzel feljogosítjuk a fordítóprogramot arra, hogy a függvény hivását a definícióból és az aktuális paraméterekből készített kódsorozattal helyettesítse.
  • Az inline függvény függvény törzse annyiszor kerülhet bemásolásra a kódba, ahányszor a hívása szerepel.

Bevezetés a C++ programozási nyelvbe

az inline f ggv ny folyt
Az inline függvény(folyt.)
  • Mire lehet jó?
    • A C++-ban gyakori anagyon rövidfüggvénytörzs. Ilyenkor a hívás helyén történő kódgenerálás rövidebb kódot eredményezhet, mint a paraméterátadás adminisztrálása és az ugrás majd visszatérés.
    • Jól használható a makrók kiváltására. Az inline függvényt nem az előfeldolgozó, hanem a fordítóprogram dolgozza fel, amely képes a típusellenzőrzésre.
  • Az inline minősítő nem kötelezi a fordítót az inline módú hivás-feldolgozásra

Bevezetés a C++ programozási nyelvbe

f ggv ny overloading 1
Függvény overloading1.

Azonos hatáskörben

  • azonos névvel
  • különböző paraméterszignatúrával
  • különböző függvényeket definiálhatunk.
  • Paraméterszignatúra: a formális paraméterek száma és típus-sorrendje.
  • A polimorfizmus egyik implementációs formája
    • "környezet": paraméter szignatúra

Bevezetés a C++ programozási nyelvbe

f ggv ny overloading 2
Függvény overloading2.
  • A függvény hívásakor a fordítóprogram az aktuális paraméterek szignatúráját sorban egyezteti az összes azonos nevű definíció formális paramétereinek szignatúráival. Ennek az egyeztetésnek az alábbi eredményei lehetnek:
    • Pontosan egy illeszkedőt talál: ilyenkor az ennek megfelelő függvény hívását fordítja be.
    • Egyetlen illeszkedőt sem talál: hibajelzést ad
    • Több egyformán illeszkedőt talál: hibajelzést ad
  • Korai kötés (early binding)

Bevezetés a C++ programozási nyelvbe

ad