Limba de programare Pascal - lecție 10

Structurile de date considerate anterior erau statice.

Aceasta înseamnă că memoria pentru aceste date a fost alocată în etapa de compilare. Această alocare a memoriei nu este întotdeauna convenabilă, deoarece Este dificil să se prevadă în avans, de exemplu, dimensiunea matricei pentru sortare sau numărul de ecuații din sistem. Prin urmare, în Turbo Pascal, există posibilitatea de a aloca memorie nu la etapa de compilare, ci la stadiul de execuție al programului - memorie dinamică.







Procedura de alocare a memoriei este asociată procedurii de eliberare după utilizare. În Turbo Pascal există trei perechi de proceduri pentru alocarea și eliberarea memoriei. Nou - Dispose, GetMem - FreeMem, Mark - Release. Cea mai frecvent utilizată pereche este Nou pentru alocarea memoriei și Dispose pentru ao elibera. Trebuie subliniat faptul că memoria heap utilizarea Evacuați pentru a elibera alocate nu este obligatorie, după memoria dinamică a programului este eliberat în mod automat, dar utilizarea frecventă a procedurii de alocare a memoriei, fără eliberarea ei ar putea duce la imposibilitatea de alocare suplimentară de memorie și pentru a opri programul.







La începutul programului se introduc 5 înregistrări ale pacienților. Intrarea primei înregistrări este descrisă separat de celelalte pentru a inițializa indicii (în special, indicatorul predic la înregistrarea anterioară, care nu exista înainte și este determinată numai după ce a fost introdusă prima înregistrare). Pentru fiecare înregistrare, la început câmpul de referință v este atribuit cu zero, ceea ce înseamnă că nu mai există o înregistrare ulterioară. În viitor, când următoarea memorie este alocată procedurii noi, indicatorul curent este scris în acest câmp, dar nu pentru cel curent, ci pentru înregistrarea anterioară. În ultima înregistrare a locului v, rămâne zero.

Apoi, programul descrie ștergerea înregistrărilor pacientului cu presiuni mai mari de 140. O listă cu o singură legătură este privită de la început, pentru care pointerului tek curent i se atribuie valoarea perv indicatorului la prima înregistrare. Presiunea de câmp tek ^ .davl este căutată pentru înregistrarea curentă și dacă este mai mare de 140, intrarea va fi ștearsă. În acest caz, acțiunile sunt diferite, indiferent dacă înregistrarea care este șters este prima sau nu.

Dacă înregistrarea care trebuie șters este ultima (tek ^ .v = nil), atunci în partea de referință a înregistrării anterioare, setați atributul end-of-list pred ^ .v: = nil. dacă această înregistrare anterioară există (lista nu este goală, adică nu au fost șterse toate înregistrările). Dacă toate înregistrările sunt șterse, trebuie să setați perv: = zero.

Apoi programul ar trebui să imprime restul înregistrărilor, dacă lista nu este goală. Setați cursorul curent la prima înregistrare și afișați câmpurile de informații fio și davl. apoi treceți la următoarea înregistrare tek: = tek ^ .v.







Articole similare

Trimiteți-le prietenilor: