adatszerkezetek 2007/7/6 15:51 page 27 #23

Save this PDF as:
 WORD  PNG  TXT  JPG

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "adatszerkezetek 2007/7/6 15:51 page 27 #23"

Átírás

1 adatszerkezetek 2007/7/6 15:51 page 27 #23 9. FEJEZET Állományok 9.1. Alapfogalmak 9.1. definíció. Másodlagos tárolónak vagy külső tárolónak, háttértárnak, periféria tárolónak nevezzük azokat a tárolóeszközöket, amelyeken adatokat és programokat tárolunk, s amelyek adatcsatornán keresztül kapcsolódnak a központi feldolgozóegységhez. A másodlagos tárolóeszközön tárolt adatok közvetlenül nem használhatók fel, csak a belső tárba való bejuttatásuk után. Másodlagos tárolóeszközök használatára azért van szükség, mert a belső tárak kapacitása viszonylag kicsi, és csak időleges adat-, illetve programtárolásra szolgál. A modellezés során először az állomány absztrakt szerkezetét, a logikai állományt alakítjuk ki, majd ezt képezzük le a háttértárra, s így kapjuk a fizikai állományt Logikai állományokkal kapcsolatos fogalmak 9.2. definíció. Adattételnek vagy adatelemnek nevezzük azt a legkisebb, önálló névvel rendelkező adatot, amelynek a felhasználó szempontjából még önálló jelentése van. A logikai állomány legkisebb önállóan értelmezhető, atomi része. Jellemzői: név, típus és hossz. Van fix és változó hosszúságú adattétel példa. Fix hosszúságú adattétel a születési évszám (négy decimális számjegy), változó hosszúságú a születési hely definíció. Adatcsoportnak nevezzük az adattételeknek egy olyan együttesét, amelyben a tételek logikailag kapcsolódnak egymáshoz, és önálló névvel vannak ellátva. Típusai: vektor típusú: azonos darabszámú adatelemből áll; ismétlődő adatcsoport: olyan adatcsoport, amely halmazértékű (nem atomi), azaz tetszőleges számú (akár 0 darab) adatelemből áll;

2 adatszerkezetek 2007/7/6 15:51 page 28 # Állományok összetett adatcsoport: a vektor típusú és az ismétlődő adatcsoport kombinációja, ahol a vektor típusú adatcsoport legalább egy eleme ismétlődő adatcsoportot alkot megjegyzés. Az adatcsoport megkülönböztetésnek csak akkor van értelme, ha az ily módon összekapcsolódó adattételek együttesen valamilyen logikai tartalom hordozói definíció. Logikai rekordnak nevezzük adattételek és adatcsoportok rögzített sorrendű, logikailag összetartozó együttesét. Nincs önálló neve definíció. Logikai rekordazonosítónak vagy elsődleges kulcsnak nevezzük azt az adatelemet vagy adatcsoportot, amely minden egyes logikai rekordban különböző értéket vesz fel. Célja, hogy segítségével megkülönböztessük egymástól a logikai rekordokat. Lehet egyszerű, ha egyetlen adatelemből áll, és összetett, ha nem definíció. Másodlagos kulcsnak nevezünk minden olyan adatelemet vagy adatcsoportot, amelynek értékei nem feltétlenül egyediek az egyes rekordokban, de felmerülhet az igény a rekordok ezek alapján történő feldolgozására is. A logikai rekord felépítése (rekordformátuma) a következők valamelyike lehet: fix: a logikai rekordok azonos szerkezetűek és hosszúságúak (ez kizárja a változó hosszúságú adatelemeket, valamint az ismétlődő és az összetett adatcsoportokat); változó: a logikai rekordok felépítése azonos, hosszuk azonban eltérhet (ha a logikai rekord változó hosszúságú adatelemet vagy ismétlődő csoportot tartalmaz, csak ez jöhet szóba); határozatlan: a logikai rekordok szerkezete is különbözhet (bizonyos adatelemek hiányozhatnak egyes rekordokból) definíció. Logikai fájlnak vagy logikai (adat)állománynak nevezzük valamilyen feldolgozási cél, tartalom vagy forma szerint összetartozó logikai rekordok névvel ellátott együttesét. A logikai állományok szerkezete lehet: struktúra nélküli: a logikai rekordok sorrendje tetszőleges; asszociatív: a logikai rekordok valamilyen egyértelmű, diszjunkt csoportosítását el lehet végezni (logikai rekordazonosító alapján például egyelemű csoportok alakíthatók ki); szekvenciális: a logikai rekordok között valamilyen szempont szerint sorrendiséget (rendezettséget) értelmezünk, azaz minden rekord esetén meg tudjuk mondani a megelőző és a rákövetkező rekordot; hierarchikus: a logikai rekordok hierarchiát (fát) alkotnak, azaz minden rekordnak legfeljebb egy megelőzője és tetszőleges számú rákövetkezője lehet.

3 adatszerkezetek 2007/7/6 15:51 page 29 # Alapfogalmak Fizikai állományokkal kapcsolatos fogalmak Adatainkat tárolnunk kell. A tárolás egy leképezés eredményeként valósítható meg. Például a belső tár, a mágnesszalag vagy a mágneslemez eltérő hardver sajátosságokkal, eltérő címzési lehetőségekkel és ennek megfelelően eltérő tárolószerkezettel rendelkezik. Ezért különböző módon lehet adatokat tárolni rajtuk. Következésképpen a különböző tárolóeszközök igénybevételekor más-más leképezést kell alkalmaznunk. A leképezés kapcsolatot teremt a logikai adatszerkezet és a tárolószerkezet elemei között. Eredményeként létrejön a tárolóeszközön a fizikai adatszerkezet. Alapvetően fontos, hogy a leképezés során a logikai adatstruktúra ne torzuljon el. Ez a feltétel nem mindig teljesíthető, azaz egyes logikai adatszerkezetek nem képezhetők le torzulás nélkül bizonyos tárolóeszközökre. A továbbiakban a logikai adatszerkezeteknek csak a külső tárolóeszközökre való leképezésével foglalkozunk definíció. A fizikai állomány legkisebb alkotórésze a mező, amely önálló névvel van ellátva. Ez a logikai adattételnek (adatelemnek) tartalmilag megfelelő fizikai tárolási egység. A fizikai mezőnek azonban vannak csak rá jellemző fizikai tulajdonságai is (például az ábrázolási formája). Hossza bájtokban értendő definíció. A mezőcsoport a logikai adatcsoport fizikai megfelelője definíció. Fizikai rekordnak vagy blokknak nevezzük a tárolt adatoknak egy olyan egységét, amelyet a számítógép egyetlen író-olvasó utasítással képes beírni egy tárolóterületre vagy kiolvasni egy tárolóterületről megjegyzés. A számítógépes író-olvasó utasítások szempontjából ez a legkisebb egység. Mi a viszony a logikai és fizikai rekord között? Bizonyos esetekben a két fogalom egybeeshet, amikor is egy fizikai rekord egy logikai rekordot tartalmaz. Előfordulhat, hogy nem teljes az egybeesés amiatt, hogy a fizikai rekordhoz még további technikai adatok is tartoznak. Gyakoribb eset, hogy egy fizikai rekord több logikai rekordot is magában foglal, ezt nevezzük blokkolásnak. Ritkábban, de megeshet, hogy egy logikai rekord csak több fizikai rekordban helyezhető el, részekre darabolva. Ezt nevezzük szegmentálásnak. Olyankor kerülhet erre sor, ha a blokk maximális mérete valamilyen hardveres vagy szoftveres megkötés miatt rögzített, és ezt meghaladó rekordmérettel van dolgunk. A logikai rekordformátumok megvalósítása fizikai szinten a következőképpen történik: Fix rekordformátum: Az összes rekord hossza azonos, rögzített, állományra jellemző információ. nincs sem blokkolás, sem szegmentálás: Nincs szükség további információra.

4 adatszerkezetek 2007/7/6 15:51 page 30 # Állományok blokkolás: Szükséges egy plusz információ arról, hogy hány rekord kerül egy blokkba (blokkolási tényező), ami ugyancsak az állományra jellemző tulajdonság. szegmentálás: Szükséges egy plusz információ arról, hogy hány blokkra tördeljük az egyes logikai rekordokat, ami szintén az állományra jellemző tulajdonság. Változó rekordformátum: A rekordok mérete különbözhet, szerkezetük megegyezik. nincs sem blokkolás, sem szegmentálás: Egy lehetséges megoldás a fix blokkméret alkalmazása, amelyet akkorának kell választani, hogy a leghosszabb rekord is beleférjen. Ebben az esetben a blokk ki nem használt része lehet szemét, vagy feltölthetjük egy speciális értékkel. Egy másik megoldás, ha a blokkméretet nem rögzítjük. Ebben az esetben a blokk mérete megegyezik a logikai rekord méretével, s ezt az információt minden blokk elején tárolni kell. Mindkét megoldás esetén minden blokkban vagy (1) tárolni kell egy plusz információt: változó hosszúságú adatelem esetén a hosszt, ismétlődő adatcsoport esetén az adatelemek számát, vagy (2) a rekordok elején egy fejlécet alakítunk ki, amelyben az egyes adatelemekre és adatcsoportokra jellemző összes segédinformációt (hossz, darabszám, kezdőcím) tároljuk. blokkolás: Minden logikai rekord előtt tárolni kell a rekord méretét. Amennyiben ezek a rekordok méreteik szerint szabályosan követik egymást, akkor használhatunk rögzített blokkméretet és -szerkezetet. Ha a rekordok mérete véletlenszerű, akkor is dolgozhatunk azonos blokkmérettel, de ebben az esetben a blokkok szerkezete eltérő lesz. Az érkező rekordokat sorban pakoljuk a blokkba, és ha már nem fér több, akkor a következő blokkban folytatjuk, az előző blokk ki nem használt része pedig szemét marad, vagy feltöltjük egy speciális értékkel. Az is egy lehetőség, hogy nem fix blokkmérettel dolgozunk. Ekkor rögzítünk egy maximális blokkméretet, és ha az érkező rekord nem fér el az aktuális blokkban, akkor új blokkot kezdünk. Ilyenkor nincs feleslegesen lefoglalt terület, viszont tárolni kell a blokkok elején azok hosszát. szegmentálás: A blokkoláshoz hasonlóan sok plusz információ tárolásával kell dolgozni. Határozatlan rekordformátum:

5 adatszerkezetek 2007/7/6 15:51 page 31 # Állománykezelési műveletek 31 Minden egyes rekordban meg kell adni, hogy mely adatelemeket és adatcsoportokat tároljuk, vagy azt, hogy melyeket nem. Általában nincs sem blokkolás, sem szegmentálás, mert körülményes azok megvalósítása. Amennyiben azt adjuk meg, hogy mely adatelemeket (adatcsoportokat) tároljuk az adott rekordban, akkor meg kell adnunk az adatelem (adatcsoport) nevét, típusát, hosszát és értékét is definíció. Fizikai állománynak nevezzük egy (vagy több) logikai állomány logikai rekordjait tartalmazó fizikai rekordok (blokkok) önálló névvel ellátott sorozatát. A leggyakoribb, hogy egy fizikai állomány egy logikai állományt tartalmaz. Néha egy logikai állományt szét kell bontanunk két (vagy több) fizikai állományra. Előfordulhat az is, hogy több logikai állományt vonunk össze egy fizikai állományba Állománykezelési műveletek A műveletek alapja a logikai rekord Létrehozása Az állományszerkezet (szervezési mód) kiválasztását jelenti Bővítés Az állomány rekordjainak darabszáma nő Törlés Törléskor egy adott azonosítójú rekordot meg kell szüntetni, törölni kell az állományból. A törlés kétféle lehet: logikai vagy fizikai. Logikai törlésnek azt nevezzük, amikor egy rekord fizikailag a helyén marad, de valamilyen módon inaktívvá tesszük (törlőbájt használatával vagy valamelyik mező értékének cseréjével), tehát nem kereshető vissza, nem dolgozható fel. Fizikai törlésnek azt nevezzük, ha az adott rekordot fizikailag töröljük az állományból. Az adott állományszerkezet sajátossága, hogy az így felszabaduló tárolóterület újra felhasználható-e más rekord tárolására. A törlés művelete két fázisból tevődik össze: a kérdéses rekord visszakereséséből és a törlés logikai vagy fizikai végrehajtásából.

6 adatszerkezetek 2007/7/6 15:51 page 32 # Állományok Csere A rekord valamelyik mezője értékének felülírását jelenti. Ahol van elsődleges kulcs, ott az nem cserélhető Elérés Egy állomány rekordjainak elérése lehet: soros, ahol az elérés sorrendje megegyezik a rekordok állományba illesztésének fizikai sorrendjével, szekvenciális, ahol az elérés sorrendje követi az elsődleges kulcsértékek logikai sorrendjét, közvetlen, ahol egy adott elsődleges vagy másodlagos kulcsértékkel rendelkező rekord elérése közvetlenül, a környezetében lévő rekordoktól függetlenül történik Keresés Soros elérés esetén teljes, szekvenciális elérés esetén lineáris. Közvetlen elérés esetén nem beszélünk keresésről Rendezés Bizonyos állományszerkezeteknél lehetséges Feldolgozás Egy állomány feldolgozása a benne lévő rekordok feldolgozását jelenti. A feldolgozás az elérésen (keresésen) alapul Újraszervezés Egy állomány újraszervezésén értjük azt az eljárást, amelynek során az állományt változatlan szervezési móddal újra létrehozzuk egy másik tárolóeszközön vagy ugyanazon tárolóeszköz egy másik területén. Mindeközben természetesen megváltozhat az állomány fizikai szerkezete és tartalma Állományszerkezetek (szervezési módok) A továbbiakban az állományszerkezeteket az alábbi csoportosításban tárgyaljuk: egyszerű állományszerkezetek, összetett állományszerkezetek.

7 adatszerkezetek 2007/7/6 15:51 page 33 # Állományszerkezetek (szervezési módok) definíció. Egyszerűnek nevezünk egy állományszerkezetet, ha a fizikai állomány csak a logikai állomány adatelemeit tartalmazza megjegyzés. Ez azt jelenti, hogy a fizikai állomány magából az állomány adataiból kialakítható, nem szükséges hozzá technikai szerkezethordozó (strukturáló) adatokat is tárolni, illetve meglétük nem meghatározó a szerkezet szempontjából definíció. Összetett állományszerkezet esetén a fizikai állomány a logikai adatelemeken kívül szerkezethordozó adatokat is tartalmaz. Egy egyszerű állomány fizikai szerkezetét azok a szabályok határozzák meg, amelyek szerint a logikai rekordok elhelyezkednek a fizikai állományban. A szabályok alapvetően két dologra vonatkoznak: a logikai adatszerkezet elemei közötti kapcsolatokra, a logikai rekordazonosító (a logikai rekord egyedi azonosítója) és a logikai rekord által elfoglalt fizikai tárolóterület címe közötti kapcsolatra. Ezek alapján az egyszerű állományszerkezeteknek négy alapvető változata különböztethető meg: szeriális, szekvenciális, direkt, random. kapcsolat állományszerkezet szeriális szekvenciális direkt random a logikai rekordazonosítók között nincs van van nincs a rekordazonosítók és tárolási címeik között nincs nincs van van 9.1. ábra. Az egyszerű állományszerkezetek összefoglaló táblázata

8 adatszerkezetek 2007/7/6 15:51 page 34 # Állományok 9.4. Szeriális állomány Szeriális egy adatállomány szerkezete akkor, ha az állomány struktúrájának a kialakítására semmilyen szabály sem vonatkozik. Egy szeriális állományban sem a rekordazonosítók, sem pedig a rekordazonosítók és tárolási címeik között nincs összefüggés (kapcsolat). A szeriális állomány mindenféle rekordformátumot tud kezelni, a rekordok tetszőlegesen blokkolhatók vagy szegmentálhatók. A szeriális szerkezetű adatállományokat soros vagy szerkezet nélküli állományoknak is szokás nevezni Szeriális állományokkal végezhető műveletek Létrehozása lényegében véve egy üres tevékenység, mivel nincs szerkezete, amit létre kellene hozni. A bővítés igen egyszerű művelet, mivel a rekordok logikai sorrendjét nem kell figyelembe venni. A hozzáadandó rekordot egyszerűen az utolsó felírt rekord után helyezzük el. A törlés alapvetően logikai törléssel realizálható. Fizikai törlést csak közvetlen elérésű háttértároló és fix rekordformátum esetén lehet végrehajtani, a törlendő rekordot az utolsó rekorddal felülírva. Minden más esetben a fizikai törlés a törlendő rekordot kihagyva csak az állomány újraszervezésével oldható meg. A csere közvetlen elérésű háttértároló és fix rekordformátum esetén realizálható, minden más esetben csak az állomány újraszervezésével oldható meg. A rekordok elérése soros. A keresést teljes kereséssel lehel megvalósítani. Rendezés nincs. Az állomány feldolgozásakor annak rekordjait azok fizikai sorrendje szerint olvassuk végig. Az újraszervezés művelete csak cserénél merül fel, illetve akkor, ha a logikailag törölt rekordokat fizikailag is törölni akarjuk (lásd fent). A szeriális feldolgozási mód akkor jó megoldás, ha a helyigény minimális, nagyon rövid a karbantartási idő, és elfogadható a viszonylag hosszú visszakeresési idő. Ezért a szeriális állománynak minden olyan esetben hatékony az alkalmazása, ha csak létre kell hozni egy adatállományt, amit időnként bővíteni akarunk. Akkor is célszerűen alkalmazható, ha a feldolgozandó rekordok sorrendje teljesen közömbös, és a teljes állományt vagy az állományt alkotó rekordok többségét fel kell dolgoznunk.

9 adatszerkezetek 2007/7/6 15:51 page 35 # Szekvenciális állomány Szekvenciális állomány Ha egy adatállományban a logikai rekordok kívánt sorrendjét úgy érjük el, hogy a rekordokat a tárolón a kíván sorrendet meghatározó elsődleges kulcs növekvő vagy csökkenő sorrendjében, folyamatosan helyezzük el egymás után, akkor a szekvenciális állományban a rekordok közötti logikai kapcsolatot a fizikai sorrend teremti meg azáltal, hogy a rekordok logikai és fizikai sorrendje azonos. A szekvenciális állomány mindenféle rekordformátumot tud kezelni, rekordjai tetszőlegesen blokkolhatók vagy szegmentálhatók Szekvenciális állományokkal végezhető műveletek Létrehozása egy vagy két lépésben történhet. Ha egy lépésben hozzuk létre, akkor biztosítani kell a rekordok elvárt érkezési sorrendjét. Ha a rekordok érkezési sorrendje véletlenszerű, akkor először egy szeriális állományt alakítunk ki, majd ezt rendezve kapjuk a szekvenciális állományt. A bővítés csak újraszervezéssel hajtható végre. Törölni logikailag lehetséges. A fizikai törlés újraszervezéssel valósítható meg. A csere közvetlen elérésű háttértároló és fix rekordformátum esetén realizálható, minden más esetben csak az állomány újraszervezésével oldható meg. A soros és szekvenciális elérés ezúttal ugyanazt jelenti, mivel a rekordok logikai és fizikai sorrendje megegyezik. A lineáris keresés minden esetben végrehajtható, de bináris keresést is tudunk alkalmazni fix rekordformátum és közvetlen elérésű háttértároló esetén. Rendezés nincs, értelmetlen, a rekordok elsődleges kulcsuk alapján eleve rendezettek. A feldolgozás alapja a keresés. Lineáris keresést használva egyszerre több rekordot is feldolgozhatunk. Ilyenkor elegendő egyszer végigolvasni az állományt, ha a keresés előtt rendezzük a keresendő rekordokat elsődleges kulcsuk szerint. Az újraszervezés igénye bővítéskor, fizikai törléskor, illetve bizonyos esetekben cserénél merül fel (lásd fent). A szekvenciális állományszerkezet előnye, hogy soros és közvetlen elérésű háttértárolón egyaránt létrehozható, jó kapacitáskihasználást tesz lehetővé, szekvenciális módon való feldolgozása egyszerű.

10 adatszerkezetek 2007/7/6 15:51 page 36 # Állományok Hátránya, hogy nem támogatja a közvetlen elérést, aktualizálása újraszervezéssel oldható meg (kivételt képez a közvetlen elérésű háttértárolón elhelyezkedő szekvenciális állományok rekordjainak törlése vagy módosítása), létrehozását rendezés vagy összeválogatás előzi meg Direkt állomány A direkt és a random állományok asszociatív szerkezetű állományok. Felépítésük és kezelésük a korábban megismert kulcstranszformációs táblázatokéhoz hasonló. A rekordok háttértárolón elfoglalt helye egy hash függvény segítségével határozható meg, amely a logikai rekordazonosítóhoz (az elsődleges kulcshoz) rendel egy lemezcímet. Amennyiben a hash függvény kölcsönösen egyértelmű, akkor direkt állományról, ha csak egyértelmű, random állományról beszélünk. Ha egy logikai adatállományban az elméletileg számba vehető rekordok és ezen keresztül a rekordazonosítók száma közelít az állományban ténylegesen előforduló rekordazonosítók számához, azaz ha az állományt alkotó rekordazonosítók halmazának az eloszlása egyenletes vagy közel egyenletes, akkor célszerűen megvalósítható a kölcsönösen egyértelmű kapcsolatteremtés a logikai rekordok és a fizikai tárolási címek között. A nem teljesen egyenletes eloszlású rekordazonosítók esetén azt a gyakorlatot kell követnünk a kölcsönösen egyértelmű megfeleltetés érdekében, hogy az állományban ténylegesen nem létező rekordok számára is helyet foglalunk. Ezzel a megoldással a tárolóterületen felhasználatlan tárolási egységek (címek) alakulnak ki. A kölcsönösen egyértelmű hash függvény a logikai rekordazonosítók növekvő sorrendjét létrehozva állítja elő az 1., 2.,..., n. címeket. A hash függvénynek e tulajdonsága teszi lehetővé, hogy a direkt szerkezetű állományokat ne csak közvetlen eléréssel, hanem szekvenciálisan is feldolgozhassuk Direkt állományokkal végezhető műveletek A direkt szerkezetű állomány fizikailag egyetlen területből (adatterület) épül föl, és csak címezhető háttértárolón hozható létre. Az állomány helyigényét az elméletileg számba vehető rekordazonosítók darabszáma és a logikai rekordok hossza egyértelműen meghatározza. A direkt szerkezetű állományok csak fix hosszúságú rekordokból építhetők föl. Az állomány rekordjai nem blokkolhatók és nem szegmentálhatók, azaz egy blokk mérete a logikai rekordmérettel egyezik meg. Az állományt két lépésben lehet létrehozni. Az első lépésben meghatározzuk a hash függvényt, kiszámítjuk a kezelendő rekordok darabszámát, majd

11 adatszerkezetek 2007/7/6 15:51 page 37 # Random állomány 37 kialakítjuk az állomány vázát, azaz előkészítjük a tárolóterületet a rekordok befogadására. A második lépés valójában nem más, mint a már meglévő váz, vagyis az üres állomány feltöltése tartalommal, azaz a tényleges rekordokkal. A művelet végén maradhatnak üres rekordhelyek (ún. álrekordok). Szűkebb értelemben véve bővítésről nem beszélhetünk. Tágabb értelemben véve új rekordokat a leképezési eljárás (hash függvény) által meghatározott címre lehet beilleszteni. Bővítéskor tehát csak a helyére kell tenni az újonnan érkező rekordot. A szükségtelenné vált rekordokat logikailag töröljük úgy, hogy egy törlőbájttal megjelöljük, hogy az adott rekord már nem élő, vagy a teljes rekordot (esetleg csak a kulcsot) valamilyen jellel felülírjuk. A törlés következtében feleslegessé váló rekordhelyet más logikai azonosítójú rekord tárolására nem lehet felhasználni. Egy rekordban a logikai rekordazonosítón kívül bármelyik adatelem értékét lehet cserélni. A rekordok elérése közvetlen. A keresés nem értelmezett. A direkt szerkezetű állományok lehetővé teszik a bennük elhelyezkedő rekordoknak mind szekvenciális, mind pedig közvetlen elérésen alapuló feldolgozását, amely ezek szerint lehet: soros, a rekordok fizikai sorrendjében; szekvenciális, ami a hash függvény korábban említett tulajdonságából következően megegyezik a soros feldolgozással; közvetlen, a hash függvény segítségével; szakaszos szekvenciális, ahol a szakasz első rekordját közvetlenül, a továbbiakat pedig szekvenciálisan érjük el. Hagyományos értelemben véve a direkt szerkezetű állományok újraszervezésére nincsen szükség, mert az állomány létrehozásakor az elméleti rekordszámnak megfelelő helyet foglaljuk le. Felmerülhet viszont az újraszervezés igénye akkor, ha változik, azaz bővül vagy szűkül az elméletileg számba vehető logikai rekordazonosítók tartománya Random állomány A csak egyértelmű (de nem kölcsönösen egyértelmű) hash függvény miatt előfordul, hogy a különböző azonosítójú rekordok ugyanarra a címre képződnek le. A random

12 adatszerkezetek 2007/7/6 15:51 page 38 # Állományok szerkezetű állományok túlcsordult rekordjainak elhelyezéséről és kezeléséről külön technika segítségével kell gondoskodnunk Túlcsordult rekordok kezelése A túlcsordult rekordok elhelyezésére alapvetően kétféle lehetőség kínálkozik: vagy az elsődleges adatterületen, vagy független túlcsordulási területen. Nyílt címzés Segítségével a túlcsordulttá váló rekordok az elsődleges adatterületen tárolhatók. A módszer lényege, hogy a túlcsordulttá váló rekordot a leképezési eljárás által megadott címet követő címen próbáljuk elhelyezni. Ha ez nem sikerül, akkor az azt követőn, mindaddig folytatva így a keresést, míg szabad tárolóhelyet nem találunk. Az állomány vége esetén a keresés az állomány elején folytatódik, a leképezési eljárás által megadott címig. Általában e módszer akkor hatékony, ha nagy a tárolási cím kapacitása, és akkor gazdaságtalan, ha a tárolási cím kapacitása kicsi. Nagy hátránya, hogy nem szinonim rekord is túlcsordulttá válhat azáltal, hogy helyét egy előzőleg már túlcsordult rekord elfoglalta. Ez a negatív hatás az állomány két lépésben történő létrehozásával csökkenthető. Az első lépésben csak azokat a rekordokat helyezzük el azállományban, amelyek nem válnak túlcsordulttá. A túlcsorduló rekordokat átmenetileg egy munkaterületre tesszük, és egy második lépésben írjuk fel őket az adatállományba, miután minden nem túlcsordult rekordot felvittünk az állományba. A bővítések során ez a negatív hatás tovább nem csökkenthető. Láncolás A hash függvény által meghatározott eredeti helyre került rekordot és az onnan túlcsordult rekordokat egy láncba fűzzük fel a rekordokban elhelyezett mutatómező segítségével. A mutató szerkezethordozó információ, nem része a logikai rekordnak, ezzel az állományszerkezet összetetté válik. Szabad helyek nyilvántartása A módszer lényege, hogy egy külön nyilvántartást (táblázatot) vezetünk azokról a tárolási címekről, melyekhez még szabad hely tartozik. Ez a táblázat a tárban helyezkedik el, mérete kicsi. Ha a hash függvény egy újonnan érkező rekordot olyan tárolási címre képez le, amely már telített, a szabad helyekről vezetett nyilvántartás segítségével könnyen megtalálható az a tárolási cím, mely a címképző eljárás által meghatározott, de már telített tárolási címhez a legközelebb helyezkedik el. Az újonnan érkező rekordot ezen a címen tároljuk. Az újonnan belépett rekord eredeti tárolási címén elhelyezett mutató teremti meg a kapcsolatot a rekord eredeti és tényleges címe között. Ha a tárolási címhez már több túlcsordult rekord tartozik, és e címre egy újabb rekord képződik le, amelyet a szabad helyeket nyilvántartó táblázat

13 adatszerkezetek 2007/7/6 15:51 page 39 # Random állomány 39 alapján elhelyezünk az eredeti tárolási címhez legközelebb, akkor az eredeti címen már nem hagyhatunk a túlcsordultra utaló mutatót, hanem a túlcsordulási lánc utolsó rekordját tartalmazó címhez kötjük a rekordot, azaz itt helyezzük el a kapcsolathoz szükséges mutatót. (Praktikus módon minden tárolási címen két mutató elhelyezésére biztosítunk lehetőséget, az egyik mutató az adott tárolási címhez tartozó első túlcsordult rekordra mutat, míg a második a túlcsordulási lánc utolsó elemére.) A szabad helyek nyilvántartásának módszere akkor alkalmazható hatékonyan, ha a tárolási cím kapacitása viszonylag nagy, és kevés rekordot akarunk tárolni. Vyssotzky-módszer A túlcsordult rekordok elsődleges adatterületen való tárolására a nyílt címzés és a láncolás mellett használatos még az ún. Vyssotzky-módszer is. A módszer azon alapul, hogy különböző leképezései algoritmusok (hash függvények) különböző címeket eredményeznek. Ha tehát egy rekord túlcsordulttá válik, akkor ugyanazt a rekordazonosítót egy másik hash függvénnyel újabb tárolási címre (rekordhelyre) képezzük le. Ezt mindaddig ismételjük, míg a kérdéses rekord számára szabad rekordhelyet nem találunk. Ha az összes hash függvényt kimerítettük, és a rekordot még mindig nem sikerült egy, a hash függvények által meghatározott címre (tárolási cím) elhelyezni, akkor folytonos kereséssel a rekordot a legközelebbi nagyobb szabad tárolási címre írjuk. Független túlcsordulási terület használata A független túlcsordulási területet használjuk a túlcsordult rekordok elhelyezésére. Az állományt két lépésben hozzuk létre. Az elsőben kialakítjuk az állomány vázát: mind az elsődleges, mind pedig a túlcsordulási terület minden egyes rekordhelye egy külön mutatómezőt tartalmaz. Az elsődleges területen lévő rekordhelyeken a mutatómezők értéke nil lesz, a túlcsordulási területen lévő rekordhelyeket viszont a mutatómezőkben elhelyezett mutatókkal összeláncoljuk. A túlcsorulási terület első rekordját jelzőrekordként használjuk, mely mindenkor a túlcsordulási területen lévő legelső szabad tárolási címet (rekordhelyet) mutatja. A létrehozás második fázisában helyezzük el a hash függvény által meghatározott címekre a rekordokat. Ha egy rekord túlcsordulttá válik, akkor a jelzőrekord által meghatározott első szabad tárolási címre kerül a túlcsordulási területen. Az elsődleges adatterületen a hash függvény által meghatározott címen lévő rekord mutatómezőjébe (ahonnan a túlcsordulás történt) a túlcsordult rekord címét tesszük. Ezzel egyidejűleg aktualizálódik a jelzőrekord is úgy, hogy a túlcsordulási területre újonnan bevitt rekord tárolási címén lévő mutató kerül a jelzőrekordba (ami a következő szabad helyet címzi), és helyére nil érték íródik.

14 adatszerkezetek 2007/7/6 15:51 page 40 # Állományok Osztott szabad helyek módszere Ennél a módszernél az elsődleges adatterületen elkülönített túlcsordulási területeket jelölünk ki a tárolóeszköz felépítésének megfelelően. Ez sáv módban működő lemezeknél lehet például a cilinderen belül egy vagy több sáv. A módszer előnye, hogy nincs szükség külön fejmozgatási időre a túlcsordulási terület, illetve az azon lévő túlcsordult rekord eléréséhez (kivételt képez az a ritka eset, amikor egy túlcsordulási terület betelik), továbbá nincs lánc, így nem kell azt karbantartani, illetve megtakarítható a láncon való végighaladáshoz szükséges idő Random állománnyal végezhető műveletek A random állomány mindhárom rekordformátumot (fix, változó és határozatlan) tudja kezelni. A rekordokat általában nem blokkoljuk. Az állományt két lépésben lehet létrehozni. Az első lépésben meghatározzuk a hash függvényt, kiválasztjuk a túlcsordult rekordok kezelésének a technikáját, kiszámítjuk a kezelendő rekordok darabszámát, majd mindezeket figyelembe véve kialakítjuk az állomány vázát, azaz előkészítjük a tárolóterületet a rekordok befogadására. A második lépés valójában nem más, mint a már meglévő váz, vagyis az üres állomány feltöltése tartalommal, azaz a tényleges rekordokkal. Ha a túlcsordult rekordokat nem túlcsordulási területen helyezzük el, akkor célszerű először csak a nem túlcsordult rekordokat elhelyezni, mert így egy túlcsordult rekord nem foglalhatja el egy később érkező nem túlcsordult rekord helyét. A művelet végén maradhatnak üres rekordhelyek (ún. álrekordok). Az állomány bővítése új rekorddal a következőképpen történik: először a hash függvény által meghatározott rekordhelyre próbáljuk elhelyezni a rekordot, de ha az a rekordhely már foglalt, akkor a bővítő rekord az alkalmazott szinonimakezelési technika által előírt helyre fog kerülni. A szükségtelenné vált rekordokat logikailag töröljük úgy, hogy az adott rekordot először megkeressük a hash függvény és az alkalmazott szinonimakezelési technika segítségével, majd egy törlőbájttal megjelöljük, hogy a rekord már nem élő, vagy a teljes rekordot (esetleg csak a kulcsot) valamilyen jellel felülírjuk. Egy rekordban a logikai rekordazonosítón kívül bármelyik adatelem értékét lehet cserélni. Ha a rekord fix rekordformátummal rendelkezik, vagy ha a csere során csökken a rekord mérete, akkor egyszerűen felülírjuk a módosítandó rekordot a módosított értékkel. Ha viszont a csere során a módosított változat mérete meghaladja a módosítandó rekordét (változó vagy határozatlan rekordformátum esetén), akkor a módosítandó rekordot túlcsordult rekordként kell kezelni, és a bővítés folyamatával azonos módon kell elhelyezni a módosított rekordot, valamint törölni kell a módosítandó rekordot.

15 adatszerkezetek 2007/7/6 15:51 page 41 # Összetett állományszerkezetek 41 A rekordok elérése közvetlen, a hash függvényen és az alkalmazott szinonimakezelési technikán alapul. A random állomány feldolgozása alapvetően a közvetlen elérésen alapul. Lehetőség van azonban az ún. cím szerinti szekvenciális, valamint a soros feldolgozásra is. A cím szerinti szekvenciális feldolgozási mód növelheti a hatékonyságot azáltal, hogy először a keresendő logikai rekordok tárolási címeit határozzuk meg a hash függvény, illetve a szinonimakezelési technika segítségével. Ezen címek sorbarendezésével ugyanis jelentős mértékben csökkenthető az egyes rekordok eléréséhez szükséges idő. A soros feldolgozási módot gyakorlatilag csak újraszervezéskor használjuk az újraszervezendő állomány rekordjainak beolvasására. Az újraszervezési igény általában elég gyakori, hacsak nem statikus állományról van szó. Ha ugyanis nagy a rekordok fluktuációja (sok a törlés és a bővítés), akkor a hash függvény egyre több túlcsordult rekordot állít elő, így egy bizonyos ponton túl gazdaságtalanná válik a kialakított struktúra Összetett állományszerkezetek Az összetett állományszerkezeteket a feldolgozás gyorsítása, kényelmesebbé tétele érdekében alkalmazzuk. Alapját egy egyszerű szerkezetű állomány, az alapállomány képezi, amely legtöbbször szeriális vagy szekvenciális. Az alapállományra épülnek rá a plusz információhordozó adatok. Alapvetően két technikát különböztetünk meg: láncolás esetén az információhordozó adatok az állományon belül jelennek meg mutatómezők formájában, ekkor a rekordokat láncolt listába fűzzük föl; indexelés esetén a plusz információk az állományon kívül, általában egy (vagy több) indextábla formájában jelennek meg. Mivel mind a két technika lemezcímeket kezel, ezért az összetett állományszerkezetek csak közvetlen elérésű háttértárolón alakíthatók ki Indexelési technikák Egy állományt indexelhetünk a benne tárolt rekordok elsődleges vagy másodlagos kulcsa szerint. Elsődleges kulcs alapján történő indexelés esetén használhatunk egy olyan táblázatot, amelynek kulcs oszlopába az állomány rekordjaiban található elsődlegeskulcs-értékek, az érték oszlopába pedig az megfelelő rekordok lemezcímei kerülnek. Ezt a táblázatot nevezzük indextáblának. Az indextábla egy rendezett táblázat, azaz a kulcs oszlopában az alapállomány rekordjainak azonosítói növekvő sorrendben helyezkednek el. Általában kis méretű, ezért elfér a memóriában, ha mégsem, akkor szekvenciális állományként jelenik meg a háttértáron. Ha az indextábla a

16 adatszerkezetek 2007/7/6 15:51 page 42 # Állományok memóriában van, akkor bináris keresést alkalmazhatunk egy adott elsődlegeskulcsértékkel rendelkező rekord keresésére. A fenti konstrukciót elsődleges kulcsra épülő, egyszintű, teljes indexelésnek nevezzük. Amennyiben az indextáblában nem minden rekordazonosítót tüntetünk fel, akkor nem teljes (részleges) indexelésről beszélünk. A nem teljes indexelést az indextábla méretének csökkentése érdekében alkalmazzuk: az azonosítók halmazát részhalmazokra osztjuk az alapállomány címtartományának (egyenlő) részekre osztásával, és az indextáblában csak a részhalmazok első elemeit tüntetjük fel. Egy rekord keresésekor először az indextábla alapján behatároljuk a keresett azonosítót, majd a behatárolt részhalmaz kezdőcímétől kiindulva lineáris kereséssel folytatjuk a keresést az alapállományban. A nem teljes indexelés alkalmazásának feltétele, hogy az alapállomány szekvenciális legyen. Máskülönben ugyanis sem a részekre bontásnak, sem a részeken belül történő keresésnek nem lenne értelme. Nagyméretű állományok esetén célszerű lehet magát az indextáblát is indexelni. Az így kapott indextábla igény szerint ismét indexelhető, és így tovább... Ezt többszintű indexelésnek nevezzük. A második indexszinttől kezdve csak nem teljes indexelésnek van értelme. Minél magasabb indextábla-hierarchiát építünk föl, az elérés annál több transzformáción keresztül valósítható meg. Az állományt indexelhetjük egy másodlagos kulcs szerint is. Ekkor az indextábla kulcs oszlopába a rekordokban szereplő különböző másodlagoskulcs-értékeket írjuk, tehát a táblának annyi sora lesz, ahány különböző másodlagoskulcs-érték szerepel az alapállományban. Az egyes kulcsértékek mellé az érték oszlopba több lemezcím is kerülhet, azoké a rekordoké, amelyekben megtalálható az adott másodlagoskulcs-érték. Az indexelés most is lehet többszintű, ekkor azonban az első szinten csak teljes indexelésnek van értelme. A fentieket figyelembe véve a következő összetett állományszerkezeteket különböztetjük meg: láncolt szeriális állomány, indexelt szeriális állomány, indexelt szekvenciális állomány, multilista állomány és invertált állomány Láncolt szeriális állomány A szeriális alapállomány rekordjainak elsődleges kulcsa szerint felépítünk egy láncszerkezetet, amely a szeriális állomány szekvenciális feldolgozását teszi lehetővé. Minden rekordba beépítünk egy mutatómezőt, amely logikai rekordazonosító szerint növekvő vagy csökkenő sorrendbe rendezve fűzi fel a rekordokat. A mutatómező értéke megmutatja, hogy hol helyezkedik el a tárolóeszközön az adott rekordot logikailag követő rekord. A lánc kezeléséhez szükség van egy, a logikailag első rekordot címző fejmutatóra, amely nem része az állománynak.

17 adatszerkezetek 2007/7/6 15:51 page 43 # Indexelt szeriális állomány 43 kulcs technika láncolás indexelés elsődleges kulcs másodlagos kulcs láncolt szeriális állomány multilista állomány indexelt szeriális állomány indexelt szekvenciális állomány invertált állomány 9.2. ábra. Az összetett állományszerkezetek összefoglaló táblázata Láncolt szeriális állományokkal végezhető műveletek Létrehozása két lépésben történik. Első lépésben elhelyezzük a rekordokat a szeriális alapállományban. Második lépésben kialakítjuk a láncszerkezetet a mutatómezők kitöltésével. Bővítéskor az érkező új rekordot a szeriális alapállomány utolsó rekordja után helyezzük el, majd beillesztjük a láncszerkezetbe a megfelelő helyre. Rekord törlése az alapállományból a szeriális állománynak megfelelő módon történik, míg a láncszerkezetből minden esetben kiláncoljuk (fizikailag töröljük) a rekordot. A csere az alapállománynak megfelelő módon történik. Mivel logikai rekordazonosítót nem írhatunk felül, ezért nem érinti a láncszerkezetet. A rekordok elérése lehet soros (a fizikai sorrend szerint) vagy szekvenciális (a láncolási sorrend alapján). Az állomány feldolgozása az elérésen alapul, történhet a rekordok fizikai sorrendje vagy a láncolási sorrend szerint. Az újraszervezés igénye akkor merülhet fel, ha (1) a logikailag törölt rekordokat fizikailag is törölni szeretnénk az állományból, vagy ha (2) a rekordokat ellentétes irányú rendezettség alapján szeretnénk sorba láncolni Indexelt szeriális állomány Ahhoz, hogy egy kulcs szerinti rendezetlen adatállományban biztosítani lehessen az egyes rekordok közvetlen elérhetőségét, kapcsolatot kell teremteni a rekordazonosítók és a tárolási címek között. Ha ez a szükséges kapcsolatteremtés a rekordazonosítók és a tárolási címek között az indexelési technika segítségével valósul meg, akkor indexelt szeriális állományszerkezetet kapunk. Az indexelt szeriális állományszerkezet két fő részből tevődik össze: egy szeriális alapállományból és

18 adatszerkezetek 2007/7/6 15:51 page 44 # Állományok a szeriális alapállomány logikai rekordjainak azonosítóira felépített indexstruktúrából. A két összetevő együttesen alkotja magát az indexelt szeriális állományt. Az alapállomány logikai rekordjainak az indexelése csak teljes lehet, többszintű indexeléskor viszont a magasabb szinten lévő indexek értelemszerűen nem teljes indexek lesznek Indexelt szeriális állomány létrehozása Az indexelt szeriális állományokat két lépésben hozzuk létre. 1. Az alapállományt alkotó logikai rekordok háttértárolón való elhelyezésével egyidejűleg az indexszerkezet elemeit is kialakítjuk. Minden logikai rekordhoz hozzárendelünk egy elemet az indextáblában, amely a logikai rekord azonosítóját és tárolási címét tartalmazza. 2. Ez után történik az indexstruktúra első szintjének a felépítése, ami azt jelenti, hogy az indextábla első lépésben kialakított elemeit logikai rekordazonosító szerint növekvő sorrendbe rendezzük, hacsak eleve nem rendezett sorrendben tároltuk őket. Ha többszintű indexstruktúrát használunk, akkor a magasabb szintű indexeket egymás után, sorban, az előzőleg létrehozott szintre ráépítve alakítjuk ki Indexelt szeriális állomány bővítése Az újonnan érkező rekordok folyamatosan a szeriális szerkezetű alapállomány végére kerülnek. Mivel indexelt szeriális állományok esetén a legalsó szinten csak teljes indexelés valósítható meg, az érkező logikai rekordokkal egyidejűleg az új rekordokhoz tartozó elemek is elhelyezésre kerülnek az indexstruktúrában. Ha az indexstruktúra egyszintű, és az indextábla elfér a tárban, akkor az újonnan érkező rekordokhoz tartozó elemek az azonosító szerinti szekvenciális sorrendnek megfelelő helyre kerülnek az indextáblában. Ez a művelet ekkor egy rendezett táblázatba történő beszúrás. Ha az indexstruktúra többszintű, vagy az indextábla nem fér el a központi tárban, akkor egy szekvenciális szerkezetű indexállomány bővítésével állunk szemben. Ilyenkor az indexstruktúra legalsó szintjét valamilyen módon átszervezzük, és többszintű indexelés esetén a magasabb szinteken is keresztülvezetjük a változásokat. A gyakorlatban azt a megoldást alkalmazzák, hogy az indexhierarchia legalsó szintjén lévő indexrekordokat csoportokban (bucketekben) helyezik el úgy, hogy a csoportokban üres helyeket hagynak az újonnan érkező indexrekordok számára. Egy csoport meghatározott számú indexrekord befogadására alkalmas. Mérete változó, egy csoport gyakorlatilag egy blokkot jelent. Egy ilyen indexcsoportban az egyes logikai rekordokra vonatkozó indexrekordok sorrendje szekvenciális. A módszer hátránya, hogy

19 adatszerkezetek 2007/7/6 15:51 page 45 # Indexelt szeriális állomány 45 az indexcsoport telítődése után szükségessé válik az indexstruktúra újraszervezése Törlés indexelt szeriális állományból Mivel a törölt rekordok helyét nem tudjuk felhasználni, az alapállományból logikailag töröljük a törlendő rekordot. Ha az indexelési eljárás egyszintű, és az index a központi tárban van, akkor az indextáblából mint rendezett táblázatból töröljük a törlendő rekordhoz tartozó elemet. Ha az indexelés többszintű, vagy az indextábla nem fér el a tárban, akkor két lehetőség van: A törlendő rekordokat csak az alapállományból töröljük logikailag. Ekkor a későbbi feldolgozás során minden logikai rekord olvasását követően el kell döntenünk, hogy a beolvasott rekord törölt-e vagy sem. A törlendő rekord alapállományból való törlése mellett az indexállományból is töröljük a törlendő rekordhoz tartozó indexrekordot. Ez utóbbi egy szekvenciális állományból történő törlési művelet Csere Fix hosszúságú rekordokból felépülő indexelt szeriális szerkezetű állományok esetén a csere az indexstruktúrán keresztül a rekord beolvasását, és módosított változatának visszaírását jelenti. Mivel logikai rekordazonosítót nem cserélhetünk, a csere az indexszerkezetet nem érinti Elérés, feldolgozás, újraszervezés Az indexelt szeriális szerkezetű állományok rekordjainak elérése lehet soros (a rekordok fizikai elhelyezkedésének sorrendjében), szekvenciális (a rekordok logikai sorrendjének megfelelően, az indexszerkezet alapján), közvetlen (az indexszerkezet alapján). Ha csak a feldolgozási igényeket vesszük figyelembe, akkor leginkább olyankor célszerű az indexelt szeriális szerkezet alkalmazása, amikor viszonylag ritka a szekvenciális feldolgozási igény, és vagy a közvetlen, vagy a soros elérésen alapuló feldolgozás dominál. Az indexelt szeriális állományok újraszervezésére két okból van szükség: ha sok a törölt rekord az alapállományban, ha az indexstruktúra többszintű, és a legalsó szintje nem bővíthető újabb rekordokkal, ha az indexstruktúra kezelése már nem kellően hatékony.

20 adatszerkezetek 2007/7/6 15:51 page 46 # Állományok Indexelt szekvenciális állomány Egy indexelt szekvenciális állomány nem más, mint egy olyan, indexszerkezettel kibővített szekvenciális állomány, mely lehetővé teszi a közvetlen elérésen alapuló feldolgozást és karbantartást is. Az indexelt szekvenciális állomány abban hasonlít a szekvenciális állományhoz, hogy szekvenciálisan is feldolgozható, mivel a benne elhelyezkedő rekordok azonosító szerint szekvenciálisan rendezettek. Ez a szekvenciális sorrend kezdetben (lásd létrehozás) azonos a fizikai sorrenddel, később (lásd bővítés) a kettő bizonyos mértékig elválik. Az indexelt szekvenciális állomány abban hasonlít a random (direkt) állományhoz, hogy az állomány logikai rekordjai közvetlenül elérhetők, ami egy szekvenciális állomány esetén nem lehetséges. Az alapvető különbség az indexelt szekvenciális és a random (direkt) állományszerkezet között az, hogy míg a random (direkt) állománynál a közvetlen hozzáférést az azonosítóból egy algoritmussal képzett cím alapján biztosítjuk, addig az indexelt szekvenciális állományoknál a közvetlen hozzáférést az elkülönítetten kezelt és tárolt indextáblá(k)ban elhelyezett azonosító és cím közötti kapcsolat teszi lehetővé. Az indexelt szekvenciális állományszerkezet tehát két fő részből tevődik össze: egy (létrehozáskor) szekvenciális szerkezetű alapállományból és a szekvenciális alapállomány logikai rekordazonosítóira felépített indexstruktúrából. A két összetevő együttesen alkotja magát az indexelt szekvenciális állományt. Egy indexelt szekvenciális állomány csak közvetlen elérésű (címezhető) háttértárolón hozható létre. A rekordokat a szekvenciális alapállományban tároljuk, az egyes logikai rekordokat a rekordazonosítóval különböztetjük meg. Az indexstruktúra segítségével biztosítható az állomány egyes elemeihez való közvetlen hozzáférés Indexelt szekvenciális állományok létrehozása Létrehozáskor az alapállomány rekordjainak fizikai és logikai sorrendje azonos. Erre az alapállományra építjük fel létrehozáskor az indexstruktúrának megfelelő indextáblá(ka)t. Az alkalmazott indexelési eljárás lehet teljes és nem teljes is. Mindkét indexelési eljárással felépíthetünk egyszintű és többszintű indexstruktúrát Indexelt szekvenciális állományok bővítése A bővítés során továbbra is biztosítani kell mind a szekvenciális, mind pedig a közvetlen elérés lehetőségét. Erre többféle megoldás is kínálkozik: az állomány újraszervezése, független túlcsordulási terület(ek) alkalmazása,

21 adatszerkezetek 2007/7/6 15:51 page 47 # Indexelt szekvenciális állomány 47 osztott szabad helyek módszere. Bővítés újraszervezéssel Az újraszervezéssel történő bővítés csak olyan adatállományok esetén alkalmazható, amelyeknél ritka a változás, a bővítési igény, ugyanakkor gyakori a feldolgozás, melynek során fontos szempont a hatékonyság. Független túlcsordulási terület(ek) használata Ennél a módszernél független túlcsordulási terület(ek)et alkalmazunk az újonnan érkező rekordok elhelyezésére. A túlcsordulási terület(ek)en elhelyezett rekordokat láncolással vagy mutatótömb segítségével kezelhetjük. Túlcsordulási területen elhelyezett rekordok kezelése láncolással Az újonnan érkező rekordok független túlcsordulási területre helyezésével szétválik a már felépített indexelt szekvenciális állományban a rekordok logikai és fizikai sorrendje. Az adatterületen és a túlcsordulási területen lévő rekordok között már csak a logikai sorrendet lehet fenntartani. A fizikailag elkülönült rekordok közötti logikai sorrendet láncolással kétféleképpen hozhatjuk létre. Az egyik megoldás, hogy minden logikai rekordban elhelyezünk egy mutatómezőt, és ha egy új rekordot túlcsordulási területre teszünk, akkor a kialakított mutatómezőkben elhelyezendő mutatók segítségével beláncoljuk a túlcsordulási területre került rekordot az őt logikailag megelőző és rákövetkező rekordok közé. A megoldás hátránya a bonyolult lánckapcsolatok mellett, hogy a minden rekordban elhelyezett mutatómező növeli az állomány számára szükséges helyet, valamint lerontja az állomány szekvenciális módon való feldolgozásának a hatékonyságát, ha sok a pótlólag bevitt rekord. Javítható a láncolási technika hatékonysága, ha a logikai rekordokat csoportokba szervezzük, és az így kialakított csoportokhoz túlcsordulási láncokat kapcsolunk. Ez azt jelenti, hogy minden csoporthoz külön túlcsordulási lánc tartozik. A bővítések során a csoportokon belül megtartjuk a logikaival azonos fizikai sorrendet. Egy új rekord beillesztésekor a rekordot a szekvenciális sorrendnek megfelelő helyre (csoportba) írjuk úgy, hogy a csoporton belül is megtartjuk a rekordok szekvenciális sorrendjét. E művelet eredményeképpen az eredetileg a csoportban lévő legnagyobb azonosítójú rekordot helyhiány miatt nem tudjuk a csoporton belül elhelyezni. Így ezt a rekordot bekapcsoljuk a csoporthoz tartozó túlcsordulási láncba, melynek kezdőcímét az indexhierarchia legalsó szintjén lévő és az adott csoportot indexelő indexrekordban helyezzük el.

22 adatszerkezetek 2007/7/6 15:51 page 48 # Állományok Ha az újonnan érkező rekord szekvenciális sorrendnek megfelelő helye eleve valamelyik csoporthoz tartozó túlcsordulási láncba esik, akkor a rekordot a túlcsordulási láncba illesztjük, megtartva a lánc elemeinek szekvenciális sorrendjét. Azt, hogy egy érkező rekord szekvenciális sorrendnek megfelelő helye melyik csoportban van, csak akkor lehet eldönteni, ha az adatcsoportot indexelő indexrekordba a csoporthoz tartozó túlcsordulási lánc kezdőcíme mellett elhelyezzük annak a logikai rekordnak a kulcsát is, amelynek kulcsa létrehozáskor a csoportban a legnagyobb volt. Mindezek mellett az indexrekord tartalmazza a csoportban ténylegesen elhelyezkedő legnagyobb azonosítójú logikai rekord kulcsát is. Így valójában a csoportot indexelő indexrekord négy információt tárol: a csoportban lévő legnagyobb azonosítójú logikai rekord kulcsát a létrehozáskor, a csoportban ténylegesen helyet foglaló legnagyobb azonosítójú logikai rekord kulcsát, a csoporthoz tartozó túlcsordulási lánc kezdőcímét, a csoport első (a legkisebb azonosítóval rendelkező) logikai rekordjának kezdőcímét. Túlcsordulási területen elhelyezett rekordok kezelése mutatótömbök segítségével A módszer lényege, hogy az indexhierarchia legalsó szintjén lévő indexrekordba nem az indexrekord által indexelt csoporthoz tartozó túlcsordult rekordok láncának kezdőcímét helyezzük csak el, hanem a sávhoz tartozó összes túlcsordult rekord címét. A mutatótömb alkalmazása megszünteti a túlcsordulási területen lévő rekordok hosszadalmas láncon keresztüli elérését, lehetővé teszi az összes túlcsordulási területen lévő rekord közvetlen elérését. Külön kérdés annak eldöntése, hogy hány mutatónak jelöljünk ki helyet az indexrekordban. A módszer legnagyobb hátránya éppen a gyakorlati megvalósításában rejlik. Osztott szabad helyek módszere Az újonnan érkező rekordok kezelésének egy másik lehetséges módszere, hogy az állomány létrehozásakor már eleve üres helyeket hagyunk az újonnan érkező rekordok számára. Nem lenne gazdaságos a rekordok tárolásakor minden rekord között üres (szabad) helyeket hagyni, ezért a logikai rekordokat csoportokba szervezzük, és az egyes csoportokban marad üres hely az újonnan érkező rekordok számára. Az üres (szabad) helyeket tartalmazó alapállomány a későbbiekben alkalmas arra, hogy ezekre az üres helyekre a bővítések során érkező új rekordok elhelyezhetők legyenek. Az újonnan érkező rekordok elhelyezésére kétféle lehetőség is kínálkozik:

Adatszerkezetek 1. előadás

Adatszerkezetek 1. előadás Adatszerkezetek 1. előadás Irodalom: Lipschutz: Adatszerkezetek Morvay, Sebők: Számítógépes adatkezelés Cormen, Leiserson, Rives, Stein: Új algoritmusok http://it.inf.unideb.hu/~halasz http://it.inf.unideb.hu/adatszerk

Részletesebben

Egyirányban láncolt lista

Egyirányban láncolt lista Egyirányban láncolt lista A tárhely (listaelem) az adatelem értékén kívül egy mutatót tartalmaz, amely a következő listaelem címét tartalmazza. A láncolt lista első elemének címét egy, a láncszerkezeten

Részletesebben

Táblázatok fontosabb műveletei 1

Táblázatok fontosabb műveletei 1 Táblázatok fontosabb műveletei 1 - - Soros táblázat procedure BESZÚR1(TÁBLA, újelem) - - beszúrás soros táblázatba - - a táblázatot egy rekordokat tartalmazó dinamikus vektorral reprezentáljuk - - a rekordok

Részletesebben

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések) Adatszerkezetek Nevezetes algoritmusok (Keresések, rendezések) Keresések A probléma általános megfogalmazása: Adott egy N elemű sorozat, keressük meg azt az elemet (határozzuk meg a helyét a sorozatban),

Részletesebben

terminológia, értelmezések, fogalmak

terminológia, értelmezések, fogalmak terminológia, értelmezések, fogalmak Raffai Mária dr. Az információrendszer leképezése Valós folyamatok visszacsatolás információrendszer. leképezés. leképezés funkcionális modell adatmodell logikai tervmodell

Részletesebben

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája

Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból

Részletesebben

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék 9. előadás Wagner György Általános Informatikai Tanszék Leszámoló rendezés Elve: a rendezett listában a j-ik kulcs pontosan j-1 kulcsnál lesz nagyobb. (Ezért ha egy kulcsról tudjuk, hogy 27 másiknál nagyobb,

Részletesebben

Algoritmusok és adatszerkezetek 2.

Algoritmusok és adatszerkezetek 2. Algoritmusok és adatszerkezetek 2. Varga Balázs gyakorlata alapján Készítette: Nagy Krisztián 1. gyakorlat Nyílt címzéses hash-elés A nyílt címzésű hash táblákban a láncolással ellentétben egy indexen

Részletesebben

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai

Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai Informatika szigorlat 9-es tétel: Az adatbázis-kezelő rendszerek fogalmai Adatbázis: egymással valamilyen kapcsolatban lévő adatok jól szervezett halmaza, ahol az adatok számítógépen vannak tárolva úgy,

Részletesebben

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t

Ellenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,

Részletesebben

file:///d:/okt/ad/jegyzet/ad1/b+fa.html

file:///d:/okt/ad/jegyzet/ad1/b+fa.html 1 / 5 2016. 11. 30. 12:58 B+ fák CSci 340: Database & Web systems Home Syllabus Readings Assignments Tests Links Computer Science Hendrix College Az alábbiakban Dr. Carl Burch B+-trees című Internetes

Részletesebben

Programozási segédlet

Programozási segédlet Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen

Részletesebben

Alapvető fizikai tárolási szerkezetek, indexek, B-fák

Alapvető fizikai tárolási szerkezetek, indexek, B-fák Alapvető fizikai tárolási szerkezetek, indexek, B-fák Takács Gábor mérnök informatikus, okl. mérnöktanár takacsg@sze.hu http://rs1.sze.hu/~takacsg/ Adatelemek ábrázolása Adatokat bájtok sorozatával tárolunk!

Részletesebben

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás.  Szénási Sándor. B-fa Felépítés, alapvető műveletek előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar B-fa Felépítése Beszúrás művelete Törlés

Részletesebben

Adatmodellezés. 1. Fogalmi modell

Adatmodellezés. 1. Fogalmi modell Adatmodellezés MODELL: a bonyolult (és időben változó) valóság leegyszerűsített mása, egy adott vizsgálat céljából. A modellben többnyire a vizsgálat szempontjából releváns jellemzőket (tulajdonságokat)

Részletesebben

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer

Nyíregyházi Egyetem Matematika és Informatika Intézete. Fájl rendszer 1 Fájl rendszer Terminológia Fájl és könyvtár (mappa) koncepció Elérési módok Fájlattribútumok Fájlműveletek ----------------------------------------- Könyvtár szerkezet -----------------------------------------

Részletesebben

Programozás alapjai II. (7. ea) C++

Programozás alapjai II. (7. ea) C++ Programozás alapjai II. (7. ea) C++ Kiegészítő anyag: speciális adatszerkezetek Szeberényi Imre BME IIT M Ű E G Y E T E M 1 7 8 2 C++ programozási nyelv BME-IIT Sz.I. 2016.04.05. - 1

Részletesebben

Kulcs transzformációs táblázat

Kulcs transzformációs táblázat Kulcs transzformációs táblázat Ennek a táblázatnak az ábrázolása folytonos. Soros táblázat esetén egy elem helyét a beszúrás időpontja, önátrendező táblázatnál a feldolgozás gyakorisága, rendezett táblázatnál

Részletesebben

Bevezetés a programozásba. 5. Előadás: Tömbök

Bevezetés a programozásba. 5. Előadás: Tömbök Bevezetés a programozásba 5. Előadás: Tömbök ISMÉTLÉS Specifikáció Előfeltétel: milyen körülmények között követelünk helyes működést Utófeltétel: mit várunk a kimenettől, mi az összefüggés a kimenet és

Részletesebben

Láncolt listák Témakörök. Lista alapfogalmak

Láncolt listák Témakörök. Lista alapfogalmak Láncolt listák szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Lista alapfogalmai Egyirányú egyszerű láncolt lista Egyirányú rendezett láncolt lista Speciális láncolt listák Témakörök

Részletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot

Részletesebben

Adatszerkezetek 1. Dr. Iványi Péter

Adatszerkezetek 1. Dr. Iványi Péter Adatszerkezetek 1. Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot kódoltan tároljuk

Részletesebben

Adatszerkezetek I. 6. előadás

Adatszerkezetek I. 6. előadás Adatszerkezetek I. 6. előadás Táblázat A táblázat olyan halmazféleség, amelyben az elemeket kulcsértékkel azonosítjuk. A szokásos halmazműveletekből azonban csak néhányat definiálunk rá: Üres: Táblázat

Részletesebben

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat 9. Előadás Rendezések A rendezési probléma: Bemenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat Kimenet: a bemenő sorozat olyan (a 1, a 2,,a n ) permutációja, hogy a 1 a 2 a n 2 Rendezések Általánosabban:

Részletesebben

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E

5. SOR. Üres: S Sorba: S E S Sorból: S S E Első: S E 5. SOR A sor adatszerkezet is ismerős a mindennapokból, például a várakozási sornak számos előfordulásával van dolgunk, akár emberekről akár tárgyakról (pl. munkadarabokról) legyen szó. A sor adattípus

Részletesebben

NYILVÁNOS KÖNYVTÁRI KATALÓGUSOK

NYILVÁNOS KÖNYVTÁRI KATALÓGUSOK NYILVÁNOS KÖNYVTÁRI KATALÓGUSOK A bibliográfiák rendszerező jegyzékek, amelyek a dokumentumokról készült leírásokat, valamilyen nézőpont vagy elv alapján egységben láttatják, értelmezik, visszakereshetővé

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Hash tábla A bináris fáknál O(log n) a legjobb eset a keresésre. Ha valamilyen közvetlen címzést használunk, akkor akár O(1) is elérhető. A hash tábla a tömb általánosításaként

Részletesebben

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei

BGF. 4. Mi tartozik az adatmodellek szerkezeti elemei 1. Mi az elsődleges következménye a gyenge logikai redundanciának? inkonzisztencia veszélye felesleges tárfoglalás feltételes függés 2. Az olyan tulajdonság az egyeden belül, amelynek bármely előfordulása

Részletesebben

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism) Programozás alapjai C nyelv 8. gyakorlat Szeberényi Imre BME IIT Programozás alapjai I. (C nyelv, gyakorlat) BME-IIT Sz.I. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30.

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. 15. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 30. Edényrendezés Tegyük fel, hogy tudjuk, hogy a bemenő elemek (A[1..n] elemei) egy m elemű U halmazból kerülnek ki, pl. " A[i]-re

Részletesebben

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt! Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt! valós adatokat növekvő sorrendbe rendezi és egy sorba kiírja

Részletesebben

Amortizációs költségelemzés

Amortizációs költségelemzés Amortizációs költségelemzés Amennyiben műveleteknek egy M 1,...,M m sorozatának a futási idejét akarjuk meghatározni, akkor egy lehetőség, hogy külön-külön minden egyes művelet futási idejét kifejezzük

Részletesebben

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában Programozás alapjai C nyelv 8. gyakorlat Szeberényi mre BME T Programozás alapjai. (C nyelv, gyakorlat) BME-T Sz.. 2005.11.07. -1- Mutatók és címek (ism.) Minden változó és függvény

Részletesebben

Térinformatikai adatszerkezetek

Térinformatikai adatszerkezetek Térinformatikai adatszerkezetek 1. Pont Egy többdimenziós pont reprezentálható sokféle módon. A választott reprezentáció függ attól, hogy milyen alkalmazás során akarjuk használni, és milyen típusú műveleteket

Részletesebben

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I. Keresés Rendezés Feladat Keresés Rendezés Feladat Tartalom Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Részletesebben

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3

Láncolt Listák. Adat1 Adat2 Adat3 ø. Adat1 Adat2 ø Adat3 Láncolt Listák Adatszerkezetek Adatszerkezet: Az adatelemek egy olyan véges halmaza, amelyben az adatelemek között szerkezeti összefüggések vannak Megvalósítások: - Tömb, Láncolt lista, Fa, Kupac, Gráf,

Részletesebben

Adatbázis rendszerek 6.. 6. 1.1. Definíciók:

Adatbázis rendszerek 6.. 6. 1.1. Definíciók: Adatbázis Rendszerek Budapesti Műszaki és Gazdaságtudományi Egyetem Fotogrammetria és Térinformatika 6.1. Egyed relációs modell lényegi jellemzői 6.2. Egyed relációs ábrázolás 6.3. Az egyedtípus 6.4. A

Részletesebben

Mezők viszonya a relációs adatbázis tábláiban

Mezők viszonya a relációs adatbázis tábláiban Mezők viszonya a relációs adatbázis tábláiban A normalizálás megértéséhez szükségünk van néhány további fogalom ismeretére, ezért most kisebb kitérőt teszünk. Megismerjük - a funkcionális függés, - a teljes

Részletesebben

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák

Miről lesz ma szó? A PROGAMOZÁS ALAPJAI 1. Dinamikus adatszerkezetek. Dinamikus adatszerkezetek. Önhivatkozó struktúrák. Önhivatkozó struktúrák 2012. március 27. A PROGAMOZÁS ALAPJAI 1 Vitéz András egyetemi adjunktus BME Híradástechnikai Tanszék vitez@hit.bme.hu Miről lesz ma szó? Dinamikus adatszerkezetek Önhivatkozó struktúra keresés, beszúrás,

Részletesebben

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán Keresés Rendezés Feladat Keresés és rendezés A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán 2016. november 7. Farkas B., Fiala

Részletesebben

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem

A számítástudomány alapjai. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem A számítástudomány alapjai Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem Bináris keresőfa, kupac Katona Gyula Y. (BME SZIT) A számítástudomány

Részletesebben

Egyszerű programozási tételek

Egyszerű programozási tételek Egyszerű programozási tételek 2. előadás Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar 2011. szeptember 15. Sergyán (OE NIK) AAO 02 2011. szeptember 15.

Részletesebben

Generikus osztályok, gyűjtemények és algoritmusok

Generikus osztályok, gyűjtemények és algoritmusok Programozási, gyűjtemények és algoritmusok bejárása Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 bejárása 2 bejárása 2 Java-ban és UML-ben bejárása Az UML-beli paraméteres osztályok a Java

Részletesebben

Adatszerkezetek és algoritmusok

Adatszerkezetek és algoritmusok Adatszerkezetek és algoritmusok Jegyzet dr. Juhász István előadása alapján Készítette Csordás Annamária és Mohai Gábor A valós világban rendszerekről beszélünk. A dolgok összetevői egymással kölcsönhatásban

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak

Részletesebben

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8.

Algoritmuselmélet. 2-3 fák. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 8. Algoritmuselmélet 2-3 fák Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem 8. előadás Katona Gyula Y. (BME SZIT) Algoritmuselmélet 8. előadás

Részletesebben

Adatbázisok elmélete 18. előadás

Adatbázisok elmélete 18. előadás Adatbázisok elmélete 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu http://www.cs.bme.hu/ kiskat 2004 ADATBÁZISOK ELMÉLETE

Részletesebben

ADATBÁZISKEZELÉS ADATBÁZIS

ADATBÁZISKEZELÉS ADATBÁZIS ADATBÁZISKEZELÉS 1 ADATBÁZIS Az adatbázis adott (meghatározott) témakörre vagy célra vonatkozó adatok gyűjteménye. - Pl. A megrendelések nyomon követése kereskedelemben. Könyvek nyilvántartása egy könyvtárban.

Részletesebben

elektronikus adattárolást memóriacím

elektronikus adattárolást memóriacím MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása

Részletesebben

Adatszerkezetek 7a. Dr. IványiPéter

Adatszerkezetek 7a. Dr. IványiPéter Adatszerkezetek 7a. Dr. IványiPéter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér () Nincsennek hurkok!!! 2 Bináris fák Azokat a

Részletesebben

Algoritmuselmélet 2. előadás

Algoritmuselmélet 2. előadás Algoritmuselmélet 2. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Február 12. ALGORITMUSELMÉLET 2. ELŐADÁS 1 Buborék-rendezés

Részletesebben

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás.  Szénási Sándor Láncolt listák Egyszerű, rendezett és speciális láncolt listák előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Láncolt

Részletesebben

Érdekes informatika feladatok

Érdekes informatika feladatok A keres,kkel és adatbázissal ellátott lengyel honlap számos díjat kapott: Spirit of Delphi '98, Delphi Community Award, Poland on the Internet, Golden Bagel Award stb. Az itt megtalálható komponenseket

Részletesebben

Rendezések. Összehasonlító rendezések

Rendezések. Összehasonlító rendezések Rendezések Összehasonlító rendezések Remdezés - Alapfeladat: Egy A nevű N elemű sorozat elemeinek nagyság szerinti sorrendbe rendezése - Feltételezzük: o A sorozat elemei olyanok, amelyekre a >, relációk

Részletesebben

3. A FIZIKAI ADATBÁZIS HEAP SZERVEZÉS HASH-ÁLLOMÁNYOK INDEXELT ÁLLOMÁNYOK Ritka indexek

3. A FIZIKAI ADATBÁZIS HEAP SZERVEZÉS HASH-ÁLLOMÁNYOK INDEXELT ÁLLOMÁNYOK Ritka indexek Gajdos S 3 A FIZIKAI ADATBÁZIS 16 31 HEAP SZERVEZÉS 18 32 HASH-ÁLLOMÁNYOK 19 33 INDEXELT ÁLLOMÁNYOK 21 331 Ritka indexek 22 332 B*-fák, mint többszintes ritka indexek 24 333 Sűrű indexek 26 334 Invertálás

Részletesebben

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28.

10. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 10. tétel Adatszerkezetek és algoritmusok vizsga Frissült: 2013. január 28. 2-3 fák Hatékony keresőfa-konstrukció. Ez is fa, de a binárisnál annyival bonyolultabb hogy egy nem-levél csúcsnak 2 vagy 3 fia

Részletesebben

Hasító táblázatok. Hasító függvények, kulcsütközés kezelése. Programozás II. előadás. Szénási Sándor

Hasító táblázatok. Hasító függvények, kulcsütközés kezelése. Programozás II. előadás.  Szénási Sándor Hasító táblázatok Hasító függvények, kulcsütközés kezelése előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Felépítése

Részletesebben

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista.

A lista adatszerkezet A lista elemek egymásutániságát jelenti. Fajtái: statikus, dinamikus lista. Lista adatszerkezet A lista adatszerkezet jellemzői 1 Különböző problémák számítógépes megoldása során gyakran van szükség olyan adatszerkezetre, amely nagyszámú, azonos típusú elem tárolására alkalmas,

Részletesebben

Haladó rendezések. PPT 2007/2008 tavasz.

Haladó rendezések. PPT 2007/2008 tavasz. Haladó rendezések szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1 Témakörök Alapvető összehasonlító rendezések Shell rendezés Kupacrendezés Leszámláló rendezés Radix rendezés Edényrendezés

Részletesebben

Shannon és Huffman kód konstrukció tetszőleges. véges test felett

Shannon és Huffman kód konstrukció tetszőleges. véges test felett 1 Shannon és Huffman kód konstrukció tetszőleges véges test felett Mire is jók ezek a kódolások? A szabványos karakterkódolások (pl. UTF-8, ISO-8859 ) általában 8 biten tárolnak egy-egy karaktert. Ha tudjuk,

Részletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁCS BÉLA, MATEMATIKA I. KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az

Részletesebben

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával) Adatszerkezetek I. 7. előadás (Horváth Gyula anyagai felhasználásával) Bináris fa A fa (bináris fa) rekurzív adatszerkezet: BinFa:= Fa := ÜresFa Rekord(Elem,BinFa,BinFa) ÜresFa Rekord(Elem,Fák) 2/37 Bináris

Részletesebben

9. Állományok kezelése. Operációs rendszerek. Állomány (file) Könyvtár. Az állománykezelő feladatai. Az állományrendszer réteges implementációja

9. Állományok kezelése. Operációs rendszerek. Állomány (file) Könyvtár. Az állománykezelő feladatai. Az állományrendszer réteges implementációja Operációs rendszerek 9. Állományok kezelése Simon Gyula Felhasznált irodalom: Kóczy-Kondorosi (szerk.): Operációs rendszerek mérnöki megközelítésben Tanenbaum: Modern Operating Systems 2nd. Ed. Silberschatz,

Részletesebben

Felvételi tematika INFORMATIKA

Felvételi tematika INFORMATIKA Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.

Részletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1 Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,

Részletesebben

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL x 1-2x 2 6 -x 1-3x 3 = -7 x 1 - x 2-3x 3-2 3x 1-2x 2-2x 3 4 4x 1-2x 2 + x 3 max Alapfogalmak: feltételrendszer (narancs színnel jelölve), célfüggvény

Részletesebben

Adatbázis rendszerek. dr. Siki Zoltán

Adatbázis rendszerek. dr. Siki Zoltán Adatbázis rendszerek I. dr. Siki Zoltán Adatbázis fogalma adatok valamely célszerűen rendezett, szisztéma szerinti tárolása Az informatika elterjedése előtt is számos adatbázis létezett pl. Vállalati személyzeti

Részletesebben

Adatszerkezetek 2. Dr. Iványi Péter

Adatszerkezetek 2. Dr. Iványi Péter Adatszerkezetek 2. Dr. Iványi Péter 1 Fák Fákat akkor használunk, ha az adatok között valamilyen alá- és fölérendeltség van. Pl. könyvtárszerkezet gyökér (root) Nincsennek hurkok!!! 2 Bináris fák Azokat

Részletesebben

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata Pázmány Péter Katolikus Egyetem Információs Technológiai Kar Bevezetés a programozásba I 4. gyakorlat PLanG: 2011.10.04. Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Fájlok

Részletesebben

7. Gyakorlat A relációs adatmodell műveleti része

7. Gyakorlat A relációs adatmodell műveleti része 7. Gyakorlat A relációs adatmodell műveleti része Relációs algebra: az operandusok és az eredmények relációk; azaz a relációs algebra műveletei zártak a relációk halmazára Műveletei: Egy operandusú Két

Részletesebben

Operációs rendszerek. UNIX fájlrendszer

Operációs rendszerek. UNIX fájlrendszer Operációs rendszerek UNIX fájlrendszer UNIX fájlrendszer Alapegység: a file, amelyet byte-folyamként kezel. Soros (szekvenciális) elérés. Transzparens (átlátszó) file-szerkezet. Link-ek (kapcsolatok) létrehozásának

Részletesebben

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év).

2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét, amely februári keltezésű (bármely év). 1. fejezet AWK 1.1. Szűrési feladatok 1. Készítsen awk szkriptet, ami kiírja egy állomány leghosszabb szavát. 2. Készítsen awk szkriptet, amely kiírja az aktuális könyvtár összes alkönyvtárának nevét,

Részletesebben

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix

5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix 2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.

Részletesebben

Adatbáziskezelés alapjai. jegyzet

Adatbáziskezelés alapjai. jegyzet Juhász Adrienn Adatbáziskezelés alapja 1 Adatbáziskezelés alapjai jegyzet Készítette: Juhász Adrienn Juhász Adrienn Adatbáziskezelés alapja 2 Fogalmak: Adatbázis: logikailag összefüggı információ vagy

Részletesebben

A projekt idő-, erőforrás és költségterve 1. rész

A projekt idő-, erőforrás és költségterve 1. rész A projekt idő-, erőforrás és költségterve 1. rész A TERVEZÉS FOLYAMATA a projekttevékenységek meghatározása a tevékenységek közötti logikai függőségi kapcsolatok meghatározása erőforrás-allokáció és a

Részletesebben

angolul: greedy algorithms, románul: algoritmi greedy

angolul: greedy algorithms, románul: algoritmi greedy Mohó algoritmusok angolul: greedy algorithms, románul: algoritmi greedy 1. feladat. Gazdaságos telefonhálózat építése Bizonyos városok között lehet direkt telefonkapcsolatot kiépíteni, pl. x és y város

Részletesebben

ADATBÁZIS-KEZELÉS ALAPOK I.

ADATBÁZIS-KEZELÉS ALAPOK I. ADATBÁZIS-KEZELÉS ALAPOK I. AZ ADATBÁZIS FOGALMA Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei egy meghatározott tulajdonságuk alapján összetartozónak tekinthetők. Az adatbázis-kezelőknek

Részletesebben

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Magas szintű adatmodellek Egyed/kapcsolat modell I. Magas szintű adatmodellek Egyed/kapcsolat modell I. Ullman-Widom: Adatbázisrendszerek. Alapvetés. 4.fejezet Magas szintű adatmodellek (4.1-4.3.fej.) (köv.héten folyt.köv. 4.4-4.6.fej.) Az adatbázis modellezés

Részletesebben

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció

DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció H - 1161 Budapest Rákóczi út 76. Tel./Fax.: +36-1-4010159 http://www.pageos.hu toni@pageos.hu DAT adatcserefájl AutoCAD MAP DWG mapobject konvertáló program dokumentáció A program használható a TOPOBASE

Részletesebben

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv:

5. Gyakorlat. 5.1 Hálós adatbázis modell műveleti része. NDQL, hálós lekérdező nyelv: 5. Gyakorlat 5.1 Hálós adatbázis modell műveleti része NDQL, hálós lekérdező nyelv: A lekérdezés navigációs jellegű, vagyis a lekérdezés megfogalmazása során azt kell meghatározni, hogy milyen irányban

Részletesebben

POSZEIDON dokumentáció (1.2)

POSZEIDON dokumentáció (1.2) POSZEIDON dokumentáció (1.2) Bevezetés a Poszeidon rendszer használatába I. TELEPÍTÉS Poszeidon alkalmazás letölthető: www.sze.hu/poszeidon/poszeidon.exe Lépések: FUTTATÁS / (FUTTATÁS) / TOVÁBB / TOVÁBB

Részletesebben

Utolsó módosítás:

Utolsó módosítás: Utolsó módosítás: 2011. 09. 08. 1 A tantárggyal kapcsolatos adminisztratív kérdésekkel Micskei Zoltánt keressétek. 2 3 4 5 6 7 8 9 10 11 12 13 14 Erősen buzzword-fertőzött terület, manapság mindent szeretnek

Részletesebben

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1

Halmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1 Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival

Részletesebben

4. Fejezet : Az egész számok (integer) ábrázolása

4. Fejezet : Az egész számok (integer) ábrázolása 4. Fejezet : Az egész számok (integer) ábrázolása The Architecture of Computer Hardware and Systems Software: An Information Technology Approach 3. kiadás, Irv Englander John Wiley and Sons 2003 Wilson

Részletesebben

Táblázatkezelés Excel XP-vel. Tanmenet

Táblázatkezelés Excel XP-vel. Tanmenet Táblázatkezelés Excel XP-vel Tanmenet Táblázatkezelés Excel XP-vel TANMENET- Táblázatkezelés Excel XP-vel Témakörök Javasolt óraszám 1. Bevezetés az Excel XP használatába 4 tanóra (180 perc) 2. Munkafüzetek

Részletesebben

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének

6. Függvények. Legyen függvény és nem üreshalmaz. A függvényt az f K-ra való kiterjesztésének 6. Függvények I. Elméleti összefoglaló A függvény fogalma, értelmezési tartomány, képhalmaz, értékkészlet Legyen az A és B halmaz egyike sem üreshalmaz. Ha az A halmaz minden egyes eleméhez hozzárendeljük

Részletesebben

Adatbázis, adatbázis-kezelő

Adatbázis, adatbázis-kezelő Adatbázisok I. rész Adatbázis, adatbázis-kezelő Adatbázis: Nagy adathalmaz Közvetlenül elérhető háttértárolón (pl. merevlemez) Jól szervezett Osztott Adatbázis-kezelő szoftver hozzáadás, lekérdezés, módosítás,

Részletesebben

Programozás I. - 11. gyakorlat

Programozás I. - 11. gyakorlat Programozás I. - 11. gyakorlat Struktúrák, gyakorlás Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 16, 2009 1 tar@dcs.vein.hu Tar

Részletesebben

Láthatósági kérdések

Láthatósági kérdések Láthatósági kérdések Láthatósági algoritmusok Adott térbeli objektum és adott nézőpont esetén el kell döntenünk, hogy mi látható az adott alakzatból a nézőpontból, vagy irányából nézve. Az algoritmusok

Részletesebben

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI statisztika 10 X. SZIMULÁCIÓ 1. VÉLETLEN számok A véletlen számok fontos szerepet játszanak a véletlen helyzetek generálásában (pénzérme, dobókocka,

Részletesebben

Access gyakorlati feladatok lépésről lépésre

Access gyakorlati feladatok lépésről lépésre Access gyakorlati feladatok lépésről lépésre 1. feladat: Hajómenetrend A balatoni hajómenetrend rendelkezésünkre áll a menetrend.txt állományban. Készítsen új adatbázist HAJO néven! A mellékelt adatállományt

Részletesebben

Hierarchikus adatszerkezetek

Hierarchikus adatszerkezetek 5. előadás Hierarchikus adatszerkezetek A hierarchikus adatszerkezet olyan < A, R > rendezett pár, amelynél van egy kitüntetett r A gyökérelem úgy, hogy: 1. r nem lehet végpont, azaz a A esetén R(a,r)

Részletesebben

1. számú ábra. Kísérleti kályha járattal

1. számú ábra. Kísérleti kályha járattal Kísérleti kályha tesztelése A tesztsorozat célja egy járatos, egy kitöltött harang és egy üres harang hőtároló összehasonlítása. A lehető legkisebb méretű, élére állított téglából épített héjba hagyományos,

Részletesebben

KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ

KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ KÖNYVTÁRI KATALÓGUS HASZNÁLATI ÚTMUTATÓ Mi az OPAC? Az OPAC az Online Public Access Catalogue rövidítése. Jelentése olyan számítógépes katalógus, mely nyilvános, bárki számára közvetlenül, általában ingyen

Részletesebben

Számítógép Architektúrák

Számítógép Architektúrák A virtuális memória Horváth Gábor 2016. március 30. Budapest docens BME Hálózati Rendszerek és Szolgáltatások Tanszék ghorvath@hit.bme.hu Virtuális tárkezelés Motiváció: Multitaszking környezet Taszkok

Részletesebben

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1

MS ACCESS 2010 ADATBÁZIS-KEZELÉS ELMÉLET SZE INFORMATIKAI KÉPZÉS 1 SZE INFORMATIKAI KÉPZÉS 1 ADATBÁZIS-KEZELÉS MS ACCESS 2010 A feladat megoldása során a Microsoft Office Access 2010 használata a javasolt. Ebben a feladatban a következőket fogjuk gyakorolni: Adatok importálása

Részletesebben

Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék INFORMATIKA 2 ADATBÁZISOK

Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék INFORMATIKA 2 ADATBÁZISOK Budapesti Műszaki és Gazdaságtudományi Egyetem Automatizálási és Alkalmazott Informatikai Tanszék INFORMATIKA 2 ADATBÁZISOK Iváncsy Szabolcs és Vajk István 2007 Október Tartalomjegyzék Ábrák jegyzéke Táblázatok

Részletesebben

HVK Adminisztrátori használati útmutató

HVK Adminisztrátori használati útmutató HVK Adminisztrátori használati útmutató Tartalom felöltés, Hírek karbantartása A www.mvfportal.hu oldalon a bejelentkezést követően a rendszer a felhasználó jogosultsági besorolásának megfelelő nyitó oldalra

Részletesebben

IT - Alapismeretek. Megoldások

IT - Alapismeretek. Megoldások IT - Alapismeretek Megoldások 1. Az első négyműveletes számológépet Leibniz és Schickard készítette. A tárolt program elve Neumann János nevéhez fűződik. Az első generációs számítógépek működése a/az

Részletesebben

IT - Alapismeretek. Feladatgyűjtemény

IT - Alapismeretek. Feladatgyűjtemény IT - Alapismeretek Feladatgyűjtemény Feladatok PowerPoint 2000 1. FELADAT TÖRTÉNETI ÁTTEKINTÉS Pótolja a hiányzó neveket, kifejezéseket! Az első négyműveletes számológépet... készítette. A tárolt program

Részletesebben