Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Összetett adattípusok 8/b tétel Készítette: Kovács Nándor KONRACB.PTE.

Hasonló előadás


Az előadások a következő témára: "Összetett adattípusok 8/b tétel Készítette: Kovács Nándor KONRACB.PTE."— Előadás másolata:

1 Összetett adattípusok 8/b tétel Készítette: Kovács Nándor KONRACB.PTE

2 Adattípusok Típusok Összetett típusok Iterált típusok Unio típusok Direktszorzat típusok Stb. Elemi típusok Skalár típusok Diszkrét típusok Felsorolási típusok Egész típusok Valós típusok Lebegőpontos típusok Fixpontos típusok Mutató típusok

3 A C++-ban leggyakrabban használt alaptípusok: Egész számok típusa: int, short int, long int Egész számok típusa: int, short int, long int Lebegopontos számok típusa: float, double, long double Lebegopontos számok típusa: float, double, long double Logikai típus: bool Logikai típus: bool Karakter típus: char Karakter típus: char Karakterlánc típus: string Karakterlánc típus: string

4 Típuskonstrukciók A típuskonstrukciós eszközök lehetőséget biztosítanak arra, hogy az alap típusokból újakat hozzunk létre. A típuskonstrukciós eszközök lehetőséget biztosítanak arra, hogy az alap típusokból újakat hozzunk létre. Nyelvenként nagyon eltérő, hogy milyen eszközöket használhatunk. Nyelvenként nagyon eltérő, hogy milyen eszközöket használhatunk. Általában besorolhatóak az alábbi csoportosításba: Általában besorolhatóak az alábbi csoportosításba: Iterált típus Iterált típus Unió típus Unió típus Direktszorzat típus Direktszorzat típus

5 Iterált típus Egy meglévő típus elemeiből szeretnénk halmazokat vagy sorozatokat készíteni. Egy meglévő típus elemeiből szeretnénk halmazokat vagy sorozatokat készíteni. A programozási nyelvek általában több megoldást is kínálnak rá: A programozási nyelvek általában több megoldást is kínálnak rá: Vektor (egydimenziós tömb) Vektor (egydimenziós tömb) Többdimenziós tömb Többdimenziós tömb Halmaz Halmaz Lista Lista Hasítótábla Hasítótábla Fájl Fájl

6 Iterált típus Vektor Vektor Sorszám (index) szerint akarunk hivatkozni az elemekre. Sorszám (index) szerint akarunk hivatkozni az elemekre. Típusértékhalmaz eltérő a nyelvekben: Típusértékhalmaz eltérő a nyelvekben: C jellegű nyelvek: Elemszámot kell megadni. 0-tól indexelődik. C jellegű nyelvek: Elemszámot kell megadni. 0-tól indexelődik. Pascal jellegű nyelvek: Egy tetszőleges diszkrét típus, tetszőleges nem üres részhalmaza lehet az indexhalmaz. Pascal jellegű nyelvek: Egy tetszőleges diszkrét típus, tetszőleges nem üres részhalmaza lehet az indexhalmaz.

7 Iterált típus Vektor Vektor Műveletek: Műveletek: Szelekció: Szelekció: V[i], amely viszont lehet balérték is, így rajta keresztül megváltoztatható a vektor. V[i], amely viszont lehet balérték is, így rajta keresztül megváltoztatható a vektor. Értékadás: Értékadás: Általában ciklusban kell átadni az egyes értékeket. Általában ciklusban kell átadni az egyes értékeket. A Pascal jellegű nyelvek megengedik a vektorok közötti értékadást is. A Pascal jellegű nyelvek megengedik a vektorok közötti értékadást is.

8 A tömb típus A tömb típus a tömb absztrakt adatszerkezet megjelenése típus szinten. A tömb típus a tömb absztrakt adatszerkezet megjelenése típus szinten. A tömb statikus és homogén összetett típus, vagyis tartományának elemei olyan értékcsoportok, amelyekben az A tömb statikus és homogén összetett típus, vagyis tartományának elemei olyan értékcsoportok, amelyekben az elemek száma azonos, elemek száma azonos, az elemek azonos típusúak. az elemek azonos típusúak. A tömböt, mint típust meghatározza: A tömböt, mint típust meghatározza: - dimenzióinak száma - dimenzióinak száma - indexkészletének típusa és tartománya - indexkészletének típusa és tartománya - elemeinek a típusa - elemeinek a típusa

9 Iterált típus Egyes nyelvek (pl. a C) nem ismerik a többdimenziós tömböket. Ezek a nyelvek a többdimenziós tömböket úgy képzelik el, mint olyan egydimenziós tömbök, amelyek elemei egydimenzi-ós tömbök. C jellegű nyelvek: C jellegű nyelvek: Vektorok vektora Vektorok vektora int t[42][42] int t[42][42] Pascal jellegű nyelvek: Pascal jellegű nyelvek: Valódi többdimenziós tömbök. Valódi többdimenziós tömbök.

10 Iterált típus Nyelvi specialitások Nyelvi specialitások C és C++: C és C++: A mutatók és tömbök szoros kapcsoltban vannak egymással. A mutatók és tömbök szoros kapcsoltban vannak egymással. A vektor tulajdonképpen az első elemre mutató mutatóval érhető el, és így is tárolódik. A vektor tulajdonképpen az első elemre mutató mutatóval érhető el, és így is tárolódik. Tetszőleges méretű tömböket adhatunk át az alprogramoknak, mivel tulajdonképpen csak egy mutatót fogunk átadni. Tetszőleges méretű tömböket adhatunk át az alprogramoknak, mivel tulajdonképpen csak egy mutatót fogunk átadni. A vektor nem ismeri a saját méretét, így azt nekünk kell kezelni. A vektor nem ismeri a saját méretét, így azt nekünk kell kezelni.

11 Iterált típus Halmaz Halmaz Viszonylag ritkán támogatott típuskonstrukció. Viszonylag ritkán támogatott típuskonstrukció. Ha egy nyelv támogatja is, akkor szigorú megkötésekkel él az elemtípussal szemben. Ha egy nyelv támogatja is, akkor szigorú megkötésekkel él az elemtípussal szemben. Diszkrét típusok. Diszkrét típusok. Maximált elemszámmal. Maximált elemszámmal. Pl.: hónapok nevei Pl.: hónapok nevei C-ben: enum Months{ January, February, March, April, May, June, July, August, September, October, November, December };

12 Címfüggvény Tömbök ábrázolása Tömbök ábrázolása Általában sorfolytonosan történik. Általában sorfolytonosan történik. Címfüggvény segítségével tudjuk megmondani egy adott elem tényleges helyét a memóriában. Címfüggvény segítségével tudjuk megmondani egy adott elem tényleges helyét a memóriában.pl.: C nyelven pl. egy tömb címe megegyezik a 0-s indexű elem címével. C nyelven pl. egy tömb címe megegyezik a 0-s indexű elem címével. Int tömb esetén a elemenként egy int-nyit (4 byte) kell hozzáadni a pointer értékéhez. Int tömb esetén a elemenként egy int-nyit (4 byte) kell hozzáadni a pointer értékéhez.

13 Unió típus A struktúrához hasonlóan különböző típusú adatok tárolására alkalmas, de egy adott időpillanatban csak egy fajta adata lehet. A struktúrához hasonlóan különböző típusú adatok tárolására alkalmas, de egy adott időpillanatban csak egy fajta adata lehet. Akkor használjuk, ha valamiről azonos és különböző típusú adatokat is szeretnénk tárolni. Akkor használjuk, ha valamiről azonos és különböző típusú adatokat is szeretnénk tárolni. Pl. kerekített ár, pontos ár(fillérrel). Pl. kerekített ár, pontos ár(fillérrel). A modern programozási nyelvekben kiválthatóak az öröklődéssel és a többalakúsággal. A modern programozási nyelvekben kiválthatóak az öröklődéssel és a többalakúsággal.

14 Unió típus A nyelvek egy része ettől függetlenül biztosít lehetőséget az unió típusok használatára. A nyelvek egy része ettől függetlenül biztosít lehetőséget az unió típusok használatára. Használatának helytakarékossági oka lehet, vagy valamilyen konverziós trükk. Deklarációja és használata formailag megegyezik a struktúrával.

15 Unió típus C nyelven C nyelven typedef union { int forintos; float filleres; } egyenleg;

16 Unió típus Jellemzői C-ben Jellemzői C-ben A memóriában annyi helyet foglal, amennyit a nagyobbik komponens foglalna el. A memóriában annyi helyet foglal, amennyit a nagyobbik komponens foglalna el. A szelektorok itt arra szolgálnak, hogy a memóriából a szelektornak megfelelően olvassunk ki. A szelektorok itt arra szolgálnak, hogy a memóriából a szelektornak megfelelően olvassunk ki. Azaz nem arra, hogy eldöntsük, milyen típusú adattal van dolgunk. Azaz nem arra, hogy eldöntsük, milyen típusú adattal van dolgunk. Nem kapunk támogatást arra, hogy eldöntsük, tényleg a megfelelő típusú objektum van-e a memóriában. Nem kapunk támogatást arra, hogy eldöntsük, tényleg a megfelelő típusú objektum van-e a memóriában. Ez futási hibákhoz, vagy értelmezhetetlen – és nehezen felderíthető – hibákhoz vezethet. Ez futási hibákhoz, vagy értelmezhetetlen – és nehezen felderíthető – hibákhoz vezethet.

17 Direktszorzat típus Struktúra: A struktúra egy összetett adatszerkezet, ami arra szolgál, hogy különböző típusú, de valamilyen oknál fogva összetartozó adatokat egy egységként tudjuk kezelni. A struktúrán belül tetszőleges típusokat alkalmazhatunk (kivéve a void és a függvény típust), még struktúrákat is. Azaz bizonyos megszorításokkal egy struktúra lehet rekurzív is.

18 Direktszorzat típus Deklaráció: struct struktúra_azonosító { típus1 tag1; típus2 tag2; típusN tagN; }; Az adattagok deklarációja a C nyelv szokásos deklarációs szabályai érvényesek: struct struktúra_azonosító struktúra_változó;

19 Direktszorzat típus Mikor használjuk? Mikor használjuk? Ha valamiről több – akár típusaiban eltérő – adatot akarunk tárolni. Ha valamiről több – akár típusaiban eltérő – adatot akarunk tárolni. Minden egyes hasonló dologról ugyanazokat az adatokat szeretnénk tárolni. Minden egyes hasonló dologról ugyanazokat az adatokat szeretnénk tárolni. Megkötés: Megkötés: Minden dolog esetén az összes tárolandó adatnak rendelkezésre kell állnia. Minden dolog esetén az összes tárolandó adatnak rendelkezésre kell állnia.

20 Direktszorzat típus Direktszorzat ábrázolása Direktszorzat ábrázolása Általában a komponensek megadásának sorrendjében tároljuk őket. Általában a komponensek megadásának sorrendjében tároljuk őket. Az adott komponens típusának megfelelő fizikai formában tároljuk. Az adott komponens típusának megfelelő fizikai formában tároljuk.

21 Direktszorzat típus Deklaráció C nyelven: typedef struct account { int account_number; int account_number; char *first_name; char *first_name; char *last_name; char *last_name; float balance; float balance; } account;

22 Direktszorzat típus Változó deklaráció: account szamla; account szamla;Értékadás:szamla.first_name=„Kovács”;szamla.balance= ;


Letölteni ppt "Összetett adattípusok 8/b tétel Készítette: Kovács Nándor KONRACB.PTE."

Hasonló előadás


Google Hirdetések