online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

Dinamikus valtozók és adatszerkezetek (lista, fa). Tarfelosztas és targazdalkodas.

számítógépes



felso sarok

egyéb tételek

jobb felso sarok
 
Digitalis rendszerek tervezése a VHDL nyelv segítségével
A szamítógép-halózatok hasznalata
Objektumok atméretezése, tükrözése
Assembly Design - CATIA V5 - Start
A Pascal program szerkezete
Bűvész programok, utility-k
Relaciós adatbaziskezelő nyelvek
Képekkel kapcsolatos szóhasznalat
Adatmanipulaciós nyelv
Adatdefiníciós nyelv
 
bal also sarok   jobb also sarok

Dinamikus változók és adatszerkezetek (lista, fa). Tárfelosztás és tárgazdálkodás.


Az eddig megismert adattípusoknál a program a globális változók deklarálásával egy idõben lefoglalja a memóriából a szükséges mennyiségû byte-ot a változó számára. A lefoglalt memóriaterület csak a program lefutása utá 525i85f n szabadul fel, akkor is, ha csak egy rövid programrészletben használjuk a változót. A dinamikus változók nagy elõnye, hogy a memóriából csak addig foglalnak le helyet, amíg a program használja õket. A dinamikus változók élettartamát a programozó szabályozza.


Egyszerû mutató
Dinamikus változót a pointer kulcsszóval, vagy a típusmegnevezés elé írt ^ jellel deklarálhatunk.

    var  p1,p2:pointer;      
         p_int:^integer;     

A mutatók - vagy pointerek - tartalma egy (4 byte-os) memóriacím, ahol a dinamikus változó értéke megtalálható. A deklaráció után a mutató még semmilyen címet nem tartalmaz, nem mutat sehova. A pointereknek a halomtárban (heap) foglalunk helyet a New eljárással:

    New(dinamikus_valtozo);

Az eljárás a deklarációban megadott típus tárolásához szükséges byte-ot foglal le. Hely-foglalás elõtt leellenõrizhetjük, hogy van-e elegendõ memória a halomtárban a pointer számára.

    maxblokk:=Maxavail;     
    summemo:=Memavail;      

A maxblokk nevû, longint típusú változó értéke a halomtár legnagyobb szabad blokkjának mérete, míg a summemo szintén longint típusú változó értéke a halomtár összes szabad memóriaterületének mérete lesz.
        Egy dinamikus változóknál az értékadás során a mutatott memóriacímtõl kezdõdõen kerül tárolásra a megadott érték.

    p_int^:=107;
    p_int^:=3*p_int^;
    p_int^:=p_int^+13;

A értékadásnál a ^ jel jelentése: "értéke". A fenti értékadások tehát így értelmezhetõk:

  • p_int értéke legyen 107,
  • p_int értéke legyen 3-szor a p_int értéke,
  • p_int értéke legyen p_int értéke plussz 13.

Egy mutató típusú változó felveheti a nil értéket, mely az érték nélküli pointert jelöli. Ha már nincs szükségünk egy dinamikus változóra, akkor fel kell szabadítani az általa lefoglalt memóriát a halomtárban a Dispose paranccsal:

    Dispose(dinamikus_valtozo);

Értelemszerûen, ha egy dinamikus változó azelõtt próbálunk használni, hogy helyet foglalnánk neki, vagy az után, hogy a változó helyét felszabadítottuk, akkor a program futása hibához vezet.


Láncolt listák
Amikor egy tömböt használunk, néha elõfordul, hogy több adatot szeretnénk tárolni, mint amennyit a tömb mérete megenged. Ha tetszõleges mennyiségû adatok sorozatát akarjuk a memóriában tárolni, akkor használunk láncolt listákat.
A listaelem két részbõl álló rekord: egyik rész az adat, másik a következõ listaelemre mutató pointer.

type mutato=^sor;
     sor=record
          s:string;
          kovetkezo:mutato;
     end;

var elso,utolso:mutato;

A példában a mutato típus egy sor típusú pointer. A sor típus egy olyan rekord, mely egy s stringbõl és egy mutato típusú dinamikus változóból áll. Az elso nevû változó a lista legelsõ elemére fog mutatni, az utolso pedig az utoljára beillesztett listaelemre.


Fa

A fa olyan adatszerkezet, ahol egy elemnek több leszármazottja lehet, de csak egy őse (illetve a fa gyökerének nincs őse). A levél leszármazott nélküli elem. A fát több­nyire hierarchia ábrázolására használjuk (pl. a gyökér a vezérigazgató, a köz­vet­len beosz­tottak közvetlen leszármazottak a fában, vagy a DOS könyvtár-struktúrája).

A legegyszerűbb fa a bináris fa, ahol egy elemnek legfeljebb két (egy bal- és egy jobboldali) leszármazottja lehet. A bináris fát ábrázolhatjuk táblázattal, ahol mutató adja meg egy elem jobb- és baloldali leszármazottjának helyét.


Tárgazdálkodás

A változó jellemzôje, hogy adott idôpontban létrehozzák, és esetleg valamikor késôbb tör­lik. A létrehozás és a törlés közötti idôintervallum a változó élettartama. Az élettartam gya­kor­lati okból fontos, u.i. csak élô változónak kell helyet fenntartani a tárban. Egy változó tör­lé­se után a felszabaduló helyet más változó foglalhatja le. Ez a tárgazdálkodás (strorage al­lo­cation) feladata.




Találat: 1118


Felhasználási feltételek