Az adatkezelési szintjei
Adattípus¶
Ahogy az korábban elhangzott, az imperatív nyelvekben a programozó lépésről lépésre megadja azt az utasítássorozatot, amelyet a program végigjár, miközben megváltoztatja az állapotát (adatainak értékét). Miután már láttuk, hogy milyen vezérlési módokat tudunk megkülönböztetni, foglalkoznunk kell azzal is, hogy pontosan milyen adatokkal tudunk dolgozni.
Az adattípus a programnak egy olyan komponense, amely két összetevője, az értékhalmaz és az értékhalmaz elemein végezhető műveletek által meghatározott. Minden adattípus vagy elemi, vagy összetett, amelyeket más (akár elemi, akár összetett) adat kombinációjaként hozhatunk létre.
A számítógépes problémamegoldás során az adatkezelésnek különböző szintjeit különíthetjük el attól függően, hogy a problémamegoldás mely fázisában kell az adott adatot megjeleníteni. Az adatkezelés szintjei így különböző absztrakciós szinteknek felelnek meg.
- Probléma szintje: a felhasználó ezen a szinten fogalmazza meg a megoldandó problémát, a bemenő és kimenő adatokat, valamint a bemeneti-kimeneti feltételt.
- Szaktudományos és matematikai szint: a probléma megoldásához a kiindulópontot a szaktudomány és/vagy matematikai modell képezi. Ezen a szinten azonban csak arra a kérdésre kapunk választ, hogy milyen adatok szerepelnek a problémában és milyen összefüggések érvényesülnek.
- Absztrakt adattípus szint: az algoritmustervezés során határozzuk meg, hogy milyen műveleteket kell alkalmazni a problémában szereplő adatokon ahhoz, hogy a megoldást megkapjuk. Ezt a szintet azért nevezzük absztrakt szintnek, mert még nem döntöttünk arról, hogy az adatokat hogyan tároljuk és a műveleteket milyen algoritmusok valósítják meg. A tárolásról és a műveletek megvalósításáról csak akkor szabad dönteni, amikor a tervezésben az összes információ rendelkezésünkre áll ahhoz, hogy a legmegfelelőbb, leghatékonyabb megvalósítást kiválasszuk.
- Virtuális adattípus szint: a probléma megoldását adó algoritmust valamely programozási nyelven írjuk le. A programozási nyelvet virtuális gépnek tekinthetjük, amely rendelkezik eleve adott adattípusokkal és típusképzésekkel. Az absztrakt adattípusokat tehát virtuális adattípusok felhasználásával valósítjuk meg.
- Fizikai adattípus szint: az adatokat végső soron fizikai eszköz, a memória tárolja és a műveleteket fizikai gépi műveletek valósítják meg. A memória a legtöbb gép esetében bájtok (bitek) véges sorozata, tehát végső soron minden adattípust e lineáris szerkezetű tárolóval kell reprezentálni.
A vízesés modell és az adatkezelési szintek kapcsolata¶
Az adatkezelési szintek a fejlesztési folyamat különböző szintjein használatosak:
C adattípusok¶
A továbbiakban bemutatjuk a C nyelv virtuális adattípusait és típusképzési lehetőségeit. Az egyes adattípusok bemutatásakor a legtöbb esetben az absztrakt adattípusokat vezetjük be először. Azaz megmondjuk, hogy mit várunk el az adott adattípustól, milyen értékei lehetnek, milyen műveleteket kell tartalmazzon, és az egyes műveleteknek mi a szerepe.
Ennek az az oka, hogy maguk az absztrakt adattípusok olyan általános programozási fogalmak, amelyek akkor is használhatók algoritmusok tervezése során, ha a megvalósítás nyelve nem a C. Ekkor a választott nyelv virtuális adattípusainak felhasználásával kell az absztrakt adattípusokat megvalósítani. Persze egyes esetekben az a mód, ahogyan a C reprezentálja az adott adattípust igen érdekes és tanulságos, mert ezáltal egy csomó olyan dolgot megérthetünk, amivel hatékonyabbá tehetjük a C programjainkat. Ilyenkor a fizikai adattípus szintjén is bemutatjuk az adott adattípust, vagyis megnézzük, hogy egy "virtuális" érték hogyan (milyen bitsorozatként) tárolódik a fizikai memóriában.
A C (és sok más hasonló programozási) nyelv alapvető tulajdonsága, hogy rendelkezik néhány eleve definiált adattípussal továbbá típusképzési mechanizmusokkal. Így a már (eleve vagy a programozó által) definiált adattípusok felhasználásával újabbakat definiálhatunk. Első körben érdemes megismerkedni ezekkel az elemi típusokkal.