Pascal programozási nyelv - lecke 10
A korábban vizsgált adatstruktúrák statikusak voltak.
Ez azt jelenti, hogy az ezekhez az adatokhoz tartozó memória az összeállítás szakaszában került elosztásra. Ez a memóriaelosztás nem mindig kényelmes, mert Nehéz előre megjósolni, például a tömb méretét a rendezéshez vagy az egyenletek számát a rendszerben. Ezért a Turbo Pascal-ban lehetőség van arra, hogy a memória nem az összeállítás szakaszában, hanem a program végrehajtási szakaszában - a dinamikus memória.
A memóriaelosztás eljárása a használat utáni kiadási eljáráshoz kapcsolódik. A Turbo Pascal-ban három pár eljárás van a memória kiosztására és felszabadítására. Új - Szétszerelés, GetMem - FreeMem, Mark - Release. A leggyakrabban használt páros az Új, amely a memóriát elosztja, és a Dispose eltávolítja. Hangsúlyozni kell, hogy a használata dobja felszabadítjuk kiosztott kupacmemóriája nem kötelező, miután a dinamikus memória a program automatikusan kiold, de gyakori használata memóriafoglalási eljárás nélkül szabadon engedték vezethet lehetetlensége további felosztása az emlékezet és megállítani a programot.
A program elején 5 beteg nyilvántartást vezet be. Belépve az első felvétel leírt elkülönítve a többi inicializálása mutatók (különösen pred mutató az előző rekord, amely korábban nem létezett, és határozzuk meg csak az első rekord bejegyzést). Minden bejegyzés elején a hivatkozási mezőben v hozzárendelése nulla, ami azt jelenti, nincs következő rekordot. Ezt követően az elosztása a következő memória írási eljárás az új területen, a jelenlegi mutató, de nem a jelenlegi, hanem a korábbi rekordot. A v helyen az utolsó rekordban nulla marad.
Ezután a program leírja a 140-nél nagyobb nyomással rendelkező betegrekordok törlését. Az egylépcsős listát az elejétől tekintjük meg, amelyhez az aktuális mutatót a perv mutató értékhez rendelik az első rekordhoz. A tek ^ .davl mezőnyomás az aktuális rekordot keresi, és ha nagyobb, mint 140, a bejegyzést törölni kell. Ebben az esetben a műveletek eltérőek, függetlenül attól, hogy a törölni kívánt rekord először vagy sem.
Ha a törlendő rekord az utolsó (tek ^ .v = nil), akkor az előző rekord referencia részében állítsa be a pred ^ .v: = nil végső listattribútumot. ha ez a korábbi rekord létezik (a lista nem üres, azaz nem minden rekordot töröltek). Ha minden rekordot töröltek, be kell állítania a perv: = nil értéket.
Ezután a programnak ki kell nyomtatnia a fennmaradó rekordokat, ha a lista nem üres. Állítsa az aktuális mutatót az első rekordra és megjelenítse a fio és davl információs mezőket. majd keresse meg a következő rekordot tek: = tek ^ .v.