1 / 25

Adatállományok

Adatállományok. Az állományok használatára a Turbo Pascal tartalmuk szerint három lehetőséget kínál: Szöveges (text) Típusos fájl Típus nélküli fájl. Típusos állomány : -direkt szervezésű állomány. -a kiírás/beolvasás egysége a komponens

janae
Download Presentation

Adatállományok

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Adatállományok

  2. Az állományok használatára a Turbo Pascal tartalmuk szerint három lehetőséget kínál: Szöveges (text) Típusos fájl Típus nélküli fájl

  3. Típusos állomány: -direkt szervezésű állomány. -a kiírás/beolvasás egysége a komponens -a komponensek egyforma típusúak, mely típus az állományra jellemző -a komponens hosszát a típus határozza meg -a komponensek sorszámozva vannak 0-tól -akármelyik sorszámú elemre közvetlenül pozícionálhatunk -szekvenciálisan is feldolgozhatjuk a komponensek fizikai sorrendjében (sorszámok szerint)

  4. Típusnélküli állomány: -direkt szervezésű állomány -a komponensek hosszúsága tetszőlegesen megadható, azt nem a típus határozza meg -akkor használjuk amikor csak az számít, hogy hány byte- ot írunk ki/ olvasunk be egyszerre Szöveges állomány: -soros szervezésű állomány -sorokból, karakterekből, „sor vége” jelből áll -a kiírt/ beolvasott adatok váltakozó hosszúságúak, fizikai címét nem lehet sorszám alapján megállapítani, ezért az adatokat nem lehet direkt módon elérni

  5. Ahhoz hogy a Pascalból használni tudjunk egy fájlt, szükség van: • a fájlváltozót a fájl típusától függően deklaráljuk: változónév: text; {szöveges} változónév: file oftípus;{típusos} változónév: file;{típus nélküli}

  6. a fájlváltozó létrehozása után, az assign eljárással összekell rendelni a fájlváltozót egy létező vagy egy új állomány nevével: assign (fájlváltozó, fájlnév); A file neve előtt a fájlhoz vezető utat is megadhatjuk, nem haladhatja meg a 79 karaktert. Az elérési utat mindig meg kell adni, ha az állomány nem az aktuális könyvtárban van. Pl. var a: text; b: file of integer; begin … assign(a, ‘kerdesek.txt’); assign(b, ‘c:\dolgozat\adatok.dat’); … end.

  7.  a felhasználni kívánt állományok megnyitása: reset (fájlváltozó); rewrite (fájlváltozó); append (fájlváltozó);

  8. Reset= létező állomány nyitható meg. A nyitás után az eof függvény true értékkel jelzi, ha a fájl üres. A fájlpozíció az állomány elején van. Rewrite= új állomány létrehozása, vagy már meglévő állomány újraírása. A fájlpozíció az állomány elején van. Append= létező szöveges állomány megnyitása hozzáírásra. A fájlpozíció az állomány végén van.

  9. Munkánk végeztével a fájlt a close eljárással kell lezárni: close (fájlváltozó); Ez a lépés különösen fontos, ha az adatállomány tartalmát módosítottuk. A close eljárás felfrissíti az állományt, így az utoljára végzett műveletek eredménye is megjelenik a lemezen tárolt állományban.

  10. 2.Szöveges állományok (szövegfájlok) -karaktereket tartalmazó különböző hosszúságú sorokból épülnek fel -minden sort az EOLN(End Of Line, billentyűzetről: Enter) jel zár le, az egész állományt pedig az EOF(End Of File, billentyűzetről: Ctrl+Z) jel zárja (hiányozhat a file végéről) -tetszőleges szövegszerkesztővel hozhatjuk létre, módosíthatjuk -tartalmát mindig a legelső sortól kezdve egyesével olvashatjuk, írhatjuk (kivétel az append eljárással hozzáírásra nyitott állományok, mivel ekkor az írás a már meglévő fájl utolsó sora után kezdődik).

  11. -A szövegfájl deklarálása: varfájlváltozó: text; -megnyitása előtt meg kell mondanunk, hogy a fájlváltozóhoz melyik külső állományt rendeljük: assign (fájlváltozó, fájlnév); -írásra, hozzáírásra vagy olvasásra nyithatjuk meg a szövegfájlt: rewrite (fájlváltozó); {létező állomány} append (fájlváltozó); {létező állomány} reset (fájlváltozó); {új fájlt hozunk létre}

  12. A szöveges állományok I/O műveletei: • ha a fájlt írásra nyitottuk meg (rewrite, append): write és writeln: write( fájlváltozó, kifejezéslista); • ha a fájlt olvasásra nyitottuk meg: read és readln: read(fájlváltozó, kifejezéslista); A sorok végének érzékelése: eoln( fájlváltozó) ; seekeoln( fájlváltozó); A fájl végének ellenőrzése: eof( fájlváltozó); seekeof( fájlváltozó);

  13. Az állományt soronként olvasó program fő ciklusa: while not eof(f) do begin readln(f, sor); … end; Ha az állomány biztosan tartalmaz sorokat, akkor: repeat readln(f, sor); … until eof(f);

  14. Szöveges állományt feldolgozó Pascal programok szerkezete: Program Textfile; Type ptype=array[1..4096] of char; Var f :text; {a fájlváltozó f, típusa text} puffer :ptype; {4 kilobájtos fájlpuffer} v1, v2 :integer; Begin assign(f, ‘szov.txt’); {a Pascal fájlváltozó és a DOS állomány összerendelése} settextbuf(f,puffer); {I/O puffer hozzárendelése az állományhoz} reset(f); {az állomány megnyitása: olvasásra, vagy rewrite(f); létrehozással írásra append(f); hozzáírásra} read(f, v1, v2); {a fájlkezelés lépései: -a reset után: adatok olvasása a fájlból readln(f, v1, v2); teljes sor olvasása a fájlból if eof(f) then … a fájl végének tesztelése, vagy if seekeof(f) then … if eoln(f) then … a sor végének tesztelése if seekeoln(f) then … write(f, v1, v2+30); -a rewrite és az append után: adatok írása a fájlba writeln(f, v, v2+7); teljes sor írása a fájlba} flush(f); {a puffertartalom kiírása a fájlba} close(f); {bármely megnyitási mód esetén a fájl programok lezárása} End.

  15. program olvaso;{Megadott szöveges állomány tartalmát jeleníti meg a pernyőn} Vartf : text; fn, sor : string; puffer : array[1..5120] of char; { 5K puffer } begin write('Kérem a fá jl nevét: '); readln(fn); assign(tf,fn); settextbuf(tf,puffer); {$I-} reset(tf); {ellenőrzési direktívák} if ioresult<>0 then begin writeln('A(z) ',fn,' nevű fájl nem olvasható!'); exit; end; {$I+} while not eof(tf) do begin readln(tf,sor); writeln(sor); end; close(tf); readln; end.

  16. Feladatok: Mátrix Olvassatok be egy mátrixot a matrix.txt nevű fájlból. A fájl a következőket tartalmazza: -az első sorban m sor és n oszlop -minden sorban a mátrix elemei szóközzel vannak elválasztva egymástól. Cseréljétek fel a mátrix két sorát, majd a kapott mátrixot írassátok ki a matrixki.txt fájlba.} Gyakorló feladatok 1 Kérjetek be mondatokat, úgy, hogy az a képernyőn is megjelenjen. Egy mondat bármilyen hosszú lehet, végét az enter leütése jelzi(#13). Írjátok fel a mondatokat egy szöveges állományba, úgy hogy minden mondat végéhez hozzáfűzitek a STOP szöveget. A felvitel akkor fejeződik be, ha leütötték a CTRL+Z (#26) billentyűt. Ha az állomány már létezett akkor bővítsed azt.

  17. Gyakorló feladat 2 Hozzatok létre egy olyan szöveges állományt, mely sorokból áll és a sorok számokat tartalmaznak. A számokat legalább egy szóköz vagy Tab választja el. Írjatok egy programot, amely az előbbi szöveges állományban található számokat soronként átlagolja és kiírja az eredményeket a sor számával együtt. Gyakorló feladat 3 A szoveg_be.txt állomány szavakat tartalmaz, mindenik sorban egy-egy szó. A szavak száma nem ismert. A szovek_ki.txt állományban írassátok ki az eltérő szavakat egyszer és azok előfordulásának számát is. Tehát mindenik sorban egy szó áll, mellette pedig az előfordulásának értéke, egy szóközzel elválasztva egymástól. pl. 'szoveg_be.txt' 'szovek_ki.txt' jó jó 3 szuper szuper 2 jó jeles 1 jeles szuper jó

  18. Gyakorló feladat 4 Számsorozatot olvasunk ki a sorozatbe.txt szöveges állományból.A sorozat mindenik elemét egy- egy sorba írtuk, szóközzel elválasztva egymástól. Az elemek száma nem ismert. A sorozatki.txt állományba írassunk ki két számsorozatot az alábbi módon: - az első sorba a páros számok, míg a második sorba a páratlan számok kerülnek. Gyakorló feladat 5 Egy szöveges állományban tároljátok el egy vállalat dolgozóinak adatait: - az első sorban írjátok be hogy hány dolgozó adatait dolgozzuk fel - a következő sorokban egymás alá, minden dolgozó nevét és minden név mellé feltüntetve a bérét. Olvassátok be a szöveges állomány tartalmát és dolgozzátok fel az adatokat: - kinek van a legkisebb fizetése, és a legnagyobb - mi lesz a vállalat átlegbére

  19. Gyakorló feladat 6 Egy 'teljesnegyzet.txt' nevű szöveges állományban írassatok ki az összes n-nél kisebb vagy egyenlő természetes számokat, amelyre teljesül a következő feltétel: -a szám és a szám tükörképének összege egy teljes négyzet pl. 29+92=121 és 121 egy teljes négyzet, gyökei: +11 es -11 Minden sorban egy-egy szám szerepeljen.

  20. 3. Típusos fájlok -azonos típusú adatelemekből épülnek fel, amelyek a fájl és az objektumtípus kivételével bármilyen lehet -az adatelemek azonos mérete lehetővé teszi, hogy az adatokat szekvenciálisan és közvetlen (direkt) módon is elérjük -a fájlban tárolt adatelemek a felírás sorrendjében 0-tól kezdve egyesével sorszámozódnak; a sorszám felhasználásával az állomány tetszőleges elemére pozícionálhatunk. 0.adatelem 1.adatelem A típusos fájl szerkezete … n. adatelem A különböző fájlkezelő rendszerek az állományok adatelemeit általában rekordnak nevezik, azonban a típusos fájlok rekordjainak jelölésére az elem és az adatelem szavakat használjuk.

  21. A típusos fájlok esetén felhasználható Turbo Pascal eljárások és függvények: Program típusos_file; Type tipus= record{a file típusa} a : integer; s : string[30]; end; var f: file of tipus; {fájlváltozó} a,b: típus; p: longint; Begin assign(f, ‘adat.dat’); {összerendelések} reset(f); {létező állomány megnyitása írásra/ olvasásra} rewrite(f); {új állomány megnyitása írásra/ olvasásra} write(f, a, b); {fájlműveletek:-írás a file- ba read(f, a); -olvasás a file- ból seek(f, 2); -pozicionálás a file-ban truncate(f); -a file csonkitása:a fájl végéről eltávolítjuk a fölösleges elemeket} p:=filepos(f); { információs függvények: -aktuális fájlpozició p:=filesize(f); -a fájlban található elemek száma} if eof(f) then … {a fájl végének tesztelése} close(f); {a file lezárása} End.

  22. 4. Típus nélküli fájlok A típusnélküli fájlok használata segítséget jelent ismeretlen, nem szabályos szerkezetű állományok feldolgozásában. A számítógépen tárolt állományok többsége nem tagolható szövegsorokra és a bennük tárolt adatelemek mérete sem azonos. Az ilyen állományokat sem szöveges, sem pedig típusos fájlként nem kezelhetjük. A típusnélküli fájlokkal végzett műveletek során egyetlen lépésben elérhető adategység az adatblokk. A blokkméret alapértelmezés szerint 128 bájt, de ez a fájl nyitásakor a reset és a rewrite eljárások második paraméterével módosítható. (leghatékonyabb a fájlkezelés ha a blokkméret 512 vagy ennek többszöröse) pl.: assign(f, ‘akármi.dat’); reset(f, 512);

  23. Típusnélküli fájlok kezelése: Program Tipus_nelkuli_file; Const bs= 512; {blokkméret} pm= 4; {a puffer mérete blokkokban} Var f: file; {a fileváltozó} p: longint; {fájlpozició} puf: array[1..pm*bs] of byte; {puffer} nok: word; {sikeres blokkok száma} Begin assign(f, ‘fájlnév’); {összerendelés} reset(f); {az állománymegnyitása: - létező fájl írásra/olvasásra vagy reset(f, bs); rewrite(f); - új fájl írásra/olvasásra vagy rewrite(f, bs);} blockwrite(f, puf, pm); {fájlműveletek:-blokkok írása a fileba blockwrite(f, puf, pm, nok); blockread(f, puf, pm); -blokkok olvasása a file-ból blockread(f, puf, pm, nok); seek(f, p); -poziciónálás a fileban truncate(f); -a fájl csonkítása} p:=filepos(f); {aktuális fájlpozició} p:=filesize(f); {a fájlban található blokkok száma} if eof(f) then … {a file végének tesztelése} Close(f); {a file lezárása} End.

  24. Összefoglaló feladatok: Írj programot! Az első program hozza létre és töltse fel a következő típusú rekordokat tartalmazó állományt: type szg= record {számítógép rekord} tipus: string[12]; ear: real; {egység ár} db: integer; memkb: integer; {memória Kb} end; A másik program jelenítse meg a fájl tartalmát és összegezze a rekordok ear nevű mezőjét.

  25. Példafeladat típusos fájlok használatára: Adott szerkezetű állomány létrehozása és elérése: Írj egy programot (keszit.pas), amely létrehozza és feltölti a meres.dat állományt, majd egy másik programot (dolgoz.pas) amely feldolgozza és megjelenití a képernyőn a meres.dat állományban tárolt adatokat.

More Related