Kombinált adattípus
Minden strukturált adattípus, amellyel már megismerkedtünk, ugyanolyan típusú gyűjtemények. Kombinált adattípus strukturált típus, amely egy meghatározott számú különböző típusú elemekből (mezőkből) áll. A kombinált típusnak van egy másik neve - rekordja.
Jellemzően egy rekord egy-egy objektumhoz tartozó különböző típusú attribútumok gyűjteményét tartalmazza. Például az egyetemi hallgatók személyes adatait információs struktúra formájában lehet bemutatni (35. ábra).
Ezt a struktúrát kétszintű fának nevezik. A Pascal-ban ez az információ a Rekord típus egy változójában tárolható. Meghatározhatja a típust és leírhatja a megfelelő változót az alábbiak szerint:
Curs: 1..5; (vagy elemek)
Var Hallgató: Anketa1;
Az ilyen rekordot, valamint a megfelelő fát kétszintű rekordnak nevezik.
A rekord minden egyes eleme egy összetett név használatával érhető el, amelynek szerkezete a következő:
<имя переменной>.<имя поля>
Például hallgató. fio; diák. dat és így tovább. Ha például azt szeretné, hogy a mező hozzárendeljen egy 3 értéket, akkor ez így történik:
A beviteli mezők bármilyen típusúak lehetnek, különösen rekordok lehetnek. Ez a lehetőség akkor használható, ha többszintű (több mint 2 szintet) tartalmazó fa bemutatására van szükség. Például a diákokról ugyanazokat az információkat lehet megjeleníteni egy háromszintű fa segítségével (36.
Az ilyen adatok szervezése lehetővé teszi például az információ kiválasztását a születési év vagy a városban, ahol a diákok élnek. Ebben az esetben a megfelelő bejegyzés leírása így fog kinézni:
Var Hallgató: Anketa2;
Az ilyen rekord mezõit, amelyek a harmadik szinten találhatók, három összetett név azonosítja.
Például: student.Dat.God; student.Adres.Gorod.
Egy kombinált típusú feladat strukturált programját adjuk meg (37.
A program feljegyzések tömbjeit használhatja. Ha a karnak 500 diákja van, akkor az összes személyes adat megjeleníthető a tömbben:
Var Student: Array [1..500] Anketal;
Ebben az esetben például a listában szereplő ötödik diák születési éve a változó diákban [5] .Dat.God.
A rekordok feldolgozását, beleértve a bemenetet és a kimenetet, elemenként történik. Például 500 diákra vonatkozó információ beírása az alábbiak szerint szervezhető:
I: = 1, majd 500 do
A diákokkal [I] Do
Írj ('Szex (m / f):'); ReadLn (Pol);
Írás ("Születési idő:"); ReadLn (Dat);
Írás ('Ösztöndíj (dörzsölje):'); ReadLn (Stip)
Ebben a példában a csatlakozási operátor használatban van. amely a következő formában van:
Az <переменная типа запись> csinál <оператор>;
Lehetővé teszi, hogy a "With" után a típustípus-változó nevének megadása után a kezelőn belül tevékenynevekkel dolgozhassanak, mint rendes változókkal, azaz ne írjunk nagyteljesítményű összetett neveket.
Munka a rekordok fájljaival. Leggyakrabban a nyilvántartásokat számítógépes információs rendszereket alkotó fájlelemekként használják. Nézzük meg a rekordfájlokkal együttműködő programok példáit.
Példa 1. Hozzon létre egy FM.dat fájlt, amely a hallgatói csoport vizsgálati lapját tartalmazza. A fájl bejegyzések a következő elemekből állnak: vezetéknév, utónév, utónév; a nyilvántartási szám; értékelést.
Var Fstud: File Of Stud;
Írjon ("A tanulók száma a csoportban?");
Írjon (I: 1, 'ut, Vezetéknév IO'); ReadLn (S.FIO);
Írjon ('A hallgatói nyilvántartási könyv száma:'); ReadLn (S.Nz);
WriteLn ('A fájl kész!');
Mielőtt továbblépünk a következő példához, a létrehozott fájl feldolgozásához kapcsolódóan egy további eszközt fogunk fontolóra venni a fájlok kezelésére, amelyekről még nem tárgyaltunk.
Közvetlen hozzáférés a fájlbejegyzésekhez
A Pascal szabványban csak egy fájl elemekhez való sorozatos elérése engedélyezett. A Turbo Pascal egyik kiegészítő funkciója a fájlok közvetlen elérése.
Itt az FV a fájlváltozó neve, n az elem sorozatszáma. A következő példában ezt az eljárást fogjuk használni.
2. példa: A program által létrehozott fájl az előző példából származik. Engedélyezze néhány diákot, hogy újból elvégezhesse a vizsgát és szerezzen új osztályokat. Állítson be egy programot egy újraellenőrzés eredményeibe egy fájlba. A program kérni fogja a hallgató számát a nyilatkozatban és az új becslésben. A munka befejeződik, ha nincs megadva egy szám (9999).
Var Fstud: File Of Stud;
Írjon ('A szám a listában?');
Míg N<>9999 Do
Írjon ('A szám a listában?');
A példa néhány magyarázatot igényel. A lapban lévő diákok listája 1-től kezdődik, a bejegyzés a 0. számmal van számozva. Ezért ha n a szám a lapon van, akkor a fájl megfelelő bejegyzésének száma n-1. Az "n-1 szám" beolvasása után a mutató a következő n-edik rekordra ugrik. A korrigált bejegyzés ugyanazon a helyen történő újbóli felvételéhez a mutató beállítás ismétlődik.