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
  
felso sarok kategória jobb felso sarok
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
bal also sarok   jobb also sarok
felso sarok   jobb felso sarok
 




































 
bal also sarok   jobb also sarok

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: 1068