Adatállományok.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Advertisements

 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Feladat 1 •Tekintsük a prim alprogramot, amely az n, (n≤32000) paraméteren keresztül egy természetes számot kap és visszatéríti az 1–et, ha n prímszám.
Gyakorló feladatsor eljárásokra Készítette: Rummel Szabolcs Elérhetősé:
Összefoglalás 1. Pascal program szerkezete 2. Pascal típusai
Körlevél készítése.
Cells(sor száma, oszlop száma)
Programozás alapjai.
Turbo Pascal Változók.
Programozás alapjai.
Dinamikus tömbök.
Sztringek.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Fájlkezelés, IO Kivételkezelés Belső osztályok
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
C A C nyelv utasításai.
Egydimenziós tömbök. Deklarálás: var valtozónév:array[kezdőérték..végsőérték]of típus; type típusnév = array [kezdőérték..végsőérték] of típus; var valtozónév:
Nat Pedellus Informatika 8. osztály óra.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Az Input-Output használata Az input-outputot a nyelv előredefiniált csomagokon keresztül valósítja meg. Mindegyik csomag az Ada alapcsomag gyereke.
C++ alapok, harmadik óra
Operációs rendszerek gyakorlat sed, awk parancsok.
Delphi programozás 8. ELŐADÁS ADO ActiveX Data Objects.
Programozás I. Adatállományok dr Póder Margit f. docens Rendszer és Szoftvertechnológia Tanszék.
Egyszerű típusok csoportosítása
Összetett adattípusok
Alapszint 2.  Készíts makrót, ami a kijelölt cellákat egybenyitja, a tartalmat vízszintesen és függőlegesen középre igazítja és 12 pontos betűméretűre.
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Karakterláncok Páll Boglárka.
Összetett adattípusok a Pascal nyelvben
Programozási nyelvek Páll Boglárka.
A Pascal programozási nyelv alapjai
Ciklusok: 1. Számlálós ciklus
A REKORD TIPUS Páll Boglárka. Ismétlés: Feladat Készítsünk kimutatást a XI.B osztály tanulóiról. Minden tanuló esetén a következő adatokat tartjuk nyilván:
A Pascal programozási nyelv alapjai
J.Zs.Cs.: Vizuális programozás (c) 2010 Vizuális programozás Fájl- és állományrendszer kezelés Névtér: System.IO.
Tömbök és programozási tételek
Programozási nyelvek, Pascal
Rendezések és szövegkezelő függvények
Fájlkezelés Pascalban
Ciklusok (iterációk).
Szintaktikai, szemantikai szabályok
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Összetett adattípusok
Kétdimenziós tömbök Mátrixok
A képernyő kezelése: kiíratások
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Fák.
Egy szövegszerkesztő legegyszerűbb szolgáltatásai
Java programozási nyelv Filekezelés
File- típus-konstrukciók Szlávi Péter ELTE Informatika Szakmódszertani Csoport
Pole (array of...).  Zložený datový typ na ukladanie viacerých premených  Zápis: var meno_pola : array [ konce intervala ] of základný typ ; Základné.
Feladatok (értékadás)
Mintapélda Készítsünk programot, amely beolvas egy egész számot, és eldönti arról, hogy prímszám-e. Készítsünk programot, amely beolvas egy egész számot,
Nat Pedellus Free Pascal Elágazások..
C Programozási alapok.
Mappa- és fájlműveletek
Free pascal feladatok
Vnorené cykly.  Pri riešení problémov sa stáva, že použijeme viac cyklov za sebou, alebo jeden cyklus vnorený do druhohého.
Algoritmusok és Adatszerkezetek Egy kifejezés lengyelformára hozása - bemutató.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Memóriakezelés feladatok Feladat: 12 bites címtartomány. 0 ~ 2047 legyen mindig.
Excel programozás (makró)
Fájlszervezés Adatbázisok tervezése, megvalósítása és menedzselése.
Fájlkezelés Programozási tételek
Az 5,6,7 laborok VBA anyagának összefoglalása
Informatikai gyakorlatok 11. évfolyam
Cache példák 2019 (IMSC).
Előadás másolata:

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 -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)

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

változónév: file of típus; {típusos} változónév: file; {típus nélküli} 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 of típus; {típusos} változónév: file; {típus nélküli}

assign (fájlváltozó, fájlnév); a fájlváltozó létrehozása után, az assign eljárással össze kell 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.

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

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.

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.

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).

-A szövegfájl deklarálása: var fá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}

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ó);

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 until eof(f);

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.

program olvaso; {Megadott szöveges állomány tartalmát jeleníti meg a pernyőn} Var tf : 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 writeln('A(z) ',fn,' nevű fájl nem olvasható!'); exit; end; {$I+} while not eof(tf) do readln(tf,sor); writeln(sor); end; close(tf); readln; end.

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.

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ó

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

n-nél kisebb vagy egyenlő természetes számokat, amelyre teljesül a 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.

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.

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.

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);

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ány megnyitá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.

Ö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.

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.