Bevezet s a c programoz si nyelvbe
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

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


  • 95 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

Bevezet é s a C++ programozási nyelvbe

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


  • Login