Toate tipurile de date structurate, cu care ne-am familiarizat deja, sunt colecții de același tip. Tipul de date combinat este un tip structurat, constând dintr-un număr fix de componente (câmpuri) de diferite tipuri. Tipul combinat are un alt nume - înregistrare.
În mod tipic, o înregistrare conține o colecție de diferite tipuri de atribute care aparțin unui singur obiect. De exemplu, informațiile personale despre un student universitar pot fi prezentate sub forma unei structuri de informații (Figura 35).
Această structură se numește arbore pe două nivele. În Pascal, aceste informații pot fi stocate într-o singură variabilă a tipului Record. Puteți defini tipul și descrie variabila corespunzătoare după cum urmează:
Cursuri: 1..5; (sau elemente)
Var Student: Anketa1;
O astfel de înregistrare, precum și arborele corespunzător, se numește înregistrare pe două nivele.
Fiecare element al unei înregistrări poate fi accesat folosind un nume compus, care are următoarea structură:
<имя переменной>.<имя поля>
De exemplu, student. FIO; elev. dat și așa mai departe. Dacă, de exemplu, doriți ca câmpul să atribuie o valoare de 3, atunci acesta se va face astfel:
Câmpurile de intrare pot fi de orice tip, în special pot fi înregistrări. Această posibilitate este utilizată atunci când este necesară prezentarea unui copac pe mai multe nivele (mai mult de 2 nivele). De exemplu, aceleași informații despre elevi pot fi afișate de un arbore pe trei nivele (figura 36).
O astfel de organizare a datelor va permite, de exemplu, să se facă selecții de informații prin anul nașterii sau în orașul în care trăiesc studenții. În acest caz, descrierea intrării corespunzătoare va arăta astfel:
Var Student: Anketa2;
Câmpurile unei astfel de înregistrări, situate la al treilea nivel, sunt identificate printr-un nume triplu compus.
De exemplu, student.Dat.God; student.Adres.Gorod.
Oferim un program structurat al unei sarcini de tip combinat (figura 37).
Programul poate folosi o serie de înregistrări. Dacă facultatea are 500 de studenți, atunci toate datele personale pe ele pot fi reprezentate în matrice:
Var Student: Array [1..500] De Anketal;
În acest caz, de exemplu, anul nașterii celui de-al cincilea student din listă este stocat în variabila student [5] .Dat.God.
Orice procesare de înregistrări, inclusiv de intrare și de ieșire, este efectuată element-cu-element. De exemplu, introducerea informațiilor despre 500 de elevi poate fi organizată după cum urmează:
Pentru I: = 1 Atunci 500 face
Cu Studentul [Eu] fac
Scrieți ("Sex (m / f): '); ReadLn (Pol);
Scrieți ("Data nașterii:"); ReadLn (Dat);
Scrieți ("Bursă (rub.): '); ReadLn (Stip)
În acest exemplu, este utilizat operatorul de îmbinare. care are următoarea formă:
cu <переменная типа запись> face <оператор>;
Acesta vă permite, odată cu specificarea numelui unei variabile de înregistrare de tip după cuvintele Cu, de lucru în numele câmpurilor operatorului ca variabile obișnuite, t. E. Nu pentru a scrie numele compuse voluminoase.
Lucrează cu fișiere de înregistrări. Cel mai adesea, înregistrările sunt folosite ca elemente ale fișierelor care alcătuiesc sistemele informatice informatice. Să examinăm exemplele de programe care funcționează cu fișierele de înregistrare.
Exemplu 1. Generați un fișier FM.dat care conține fișa de examinare a grupului de elevi. Înregistrările de fișiere constau din următoarele elemente: nume, prenume, patronimic; numărul cărții; de evaluare.
Var Fstud: Dosarul Studului;
Scrieți ("Numărul studenților din grup?");
Scrieți (I: 1, "Numele IO"); ReadLn (S.FIO);
Scrieți ("Numărul cărții de evidență a elevului:"); ReadLn (S.Nz);
WriteLn ('Fișierul este terminat!');
Înainte de a trece la exemplul următor, legat de procesarea fișierului generat, vom lua în considerare încă un mijloc de lucru cu fișierele pe care nu le-am discutat încă.
Acces direct la intrările de fișiere
În standardul Pascal, este permisă doar accesul secvențial la elementele unui fișier. Una dintre caracteristicile suplimentare implementate în Turbo Pascal este accesul direct la înregistrările fișierelor.
Aici FV este numele variabilei fișierului, n este numărul de serie al elementului. În următorul exemplu, se va utiliza această procedură.
Exemplul 2. Există un fișier format din program din exemplul anterior. Lăsați unii studenți să ia din nou examenul și să obțină note noi. Efectuați un program pentru introducerea rezultatelor unei reexaminări într-un fișier. Programul va solicita numărul studentului în declarație și noua sa estimare. Lucrarea se încheie când se introduce un număr inexistent (9999).
Var Fstud: Dosarul Studului;
Scrieți ("Numărul din listă?");
În timp ce N<>9999 Nu
Scrieți ("Numărul din listă?");
Exemplul necesită o explicație. Lista de elevi din declarațiile numerotate începând de la 1, dar în înregistrările de fișiere sunt numerotate de la 0. Prin urmare, în cazul în care n - este un număr în foaia, numărul de înregistrare corespunzător în fișierul este egal cu n-1. După citirea mută înregistrarea pointer la următoarea înregistrare n-th „numărul n-1.“ Pentru a reînregistra înregistrarea corectată în același loc, se va repeta setarea indicatorului.