Összetett adattípusok a Pascal nyelvben Páll Boglárka Apáczai Csere János Elméleti Líceum
Ismétlés
Ismétlés A Pascal nyelv eddig tanult beépített típusai: Egyszerű típusok Boolean, Shortint, Integer, Longint, Byte, Word, Real, Single, Double, Extended, Char Összetett típusok String Array [indextip1, indextip2] of elemtipus;
A szöveges fájlok*
Bevezetés A Pascal programok futtatása után a vátlozókban tárolt adatok és eredmények nem maradnak meg, hanem más adatokkal íródnak felül. Ha bizonyos adatokat vagy eredményeket többszöri feldolgozásra, hosszú távon meg szeretnénk őrizni, ezt a szöveges fájlok segítségével tehetjük meg.
A szöveges fájlok felépítése Kiterjesztésük .txt (valami.txt) Sorokból épülnek fel, minden sort sorvégjel zár. (#13#10 [Enter]) Szöveges fájlok végén a fájlvégjel található. (#26 [Ctrl+Z])
Szöveges fájlok kezelésének lépései a szöveges fájlok megnyitása a szöveges fájlok tartalmának feldolgozás a szöveges fájlok bezárása
Szöveges fájlok megnyitása deklarálnunk kell egy, a szöveges fájlt azonosító változót var fájlazonosító:Text; Pl: var f:Text; a deklarált változót, hozzá kell rendelni a fizikai állományhoz assign(fájlazonosító, fájlnév) Pl: assign(f,’szoveg.txt’)
Szöveges fájlok megnyitása Pascalban a szöveges fájlokat három eljárással nyithatjuk meg: Reset(fájlazonosító) – létező állományt nyit meg olvasásra; Rewrite(fájlazonosító) – új állományt hozhatunk létre, vagy régit írhatunk felül Append(fájlazonosító) – létező állomány megnyitása bővítés céljából
Írás a szöveges fájlokba A write és a writeln eljárásokkal valósíthatjuk meg, azzal a különbséggel, hogy meg kell adnunk a fájl azonosítóját is. write(fájlazonosító,kifejezés1,...,kifejezésn); writeln(fájlazonosító,kifejezés1,...,kifejezésn);
Olvasás a szöveges fájlokból A read és a readln eljárásokkal valósíthatjuk meg, azzal a különbséggel, hogy meg kell adnunk a fájl azonosítóját is. read(fájlazonosító,változónév1,...,változónévn); readln(fájlazonosító,váltnév1,...,váltnévn);
Szöveges fájlok bezárása miután egy szöveges fájlt feldolgoztunk be kell zárnunk, erre szolgát az alábbi eljárás: close(fájlazonosító); Pl: close(f);
Kimenet:
Feladat Tároljunk egy egydimenziós tömböt egy szöveges fájlban. A tömb első sora a tömb méretét, a következő sorok a tömb elemeit tartalmazzák. Olvassuk be a tömböt a fájlból és számítsuk ki az elemek összegét, majd az összeget írjuk vissza a fájl utolsó sorába.
Szöveges fájlok függvényei Eoln(fájlazonosító); sor végenek az ellenörzése; a függvény true értéket térít vissza, ha a következendő beolvasandó karakter a sorvégjel Pl: 3 4 5 6 7 8 2 3 4 5 6 7 8 while not Eoln(f) do read(f,x);
Szöveges fájlok függvényei Eof(fájlazonosító); fájl végenek az ellenörzése; a függvény true értéket térít vissza, ha a következendő beolvasandó karakter a fájlvégjel Pl: 3 4 5 6 7 8 2 3 4 5 6 7 8 5 7 8 9 23 while not Eof(f) do read(f,x);
Feladat: Olvassuk be a XIB.txt nevű szöveges fájlból az osztálynévsort egy tömbbe. Mondjuk meg melyik diákok fognak ma felelni: generáljunk 5 véletlen számot 1-30 között írjuk ki a tömbből azok neveit akik sorszáma megegyezik a generált számmal
Felelnek: (véletlen számok: [1..30]) 3, 20, 11, 4, 19 ... t: array [1..30] of string 1 Ajtai Robert 2 Balazs Gabor 3 Balla Aron 4 Bartok Tamas Karoly 5 Benko Klara 6 Butyka Julia 7 Csergezan Zoltan 8 Debreczeni Istvan 9 Feher Krisztina 10 Fogarasi Brigitta ... 21 Miklos Dorottya 22 Nagy Sandor 23 Simon Blanka 24 Szasz Norbert 25 Szilagyi Imre 26 Szekely Csaba 27 Tamas Zsolt 28 Toth Tamas 29 Torok Eniko 30 Torok Zoltan Felelnek: (véletlen számok: [1..30]) 3, 20, 11, 4, 19 3 Balla Aron 20 Lorinc Marta 11 Gergely Szabolcs 4 Bartok Tamas Karoly 19 Laszlo Robert