Dynamick premenn
This presentation is the property of its rightful owner.
Sponsored Links
1 / 21

Dynamické premenné PowerPoint PPT Presentation


  • 86 Views
  • Uploaded on
  • Presentation posted in: General

Dynamické premenné. Doc. Ing. Juraj Vaculík, PhD., Mail : [email protected] Web http://nf446.host.sk. Premenné. statické v danom segmente Max. veľkosť 64 kB dynamické v iných segmentoch dostupnej pamäte (heap, halda) veľkosť 250 - 400 kB smerník - typový, netypový. smerník.

Download Presentation

Dynamické premenné

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Dynamick premenn

Dynamické premenné

Doc. Ing. Juraj Vaculík, PhD.,

Mail : [email protected]

Web http://nf446.host.sk


Premenn

Premenné

  • statické

    • v danom segmente

    • Max. veľkosť 64 kB

  • dynamické

    • v iných segmentoch dostupnej pamäte (heap, halda)

    • veľkosť 250 - 400 kB

    • smerník - typový, netypový

Progranmovanie 2006

smerník


Smern k pointer

Smerník - pointer

  • typový - ukazuje na premennú

    Syntax : ^bazový typ

    type osoba = record...

    pole = array...

    var x:^integer;

    x:^osoba;

    x:^pole;

  • netypový - ukazuje (obsahuje) adresu niečoho (objektu, podprogramu, premennej)

Progranmovanie 2006

použitie


Pou itie dynamick ch a statick ch

Použitie dynamických a statických

type pole = array[1..1000] of real;

var p1,p2 : pole;

s1,s2 : ^pole;

begin

p1:=p2; {2 x 6000 bytov}

s1:[email protected]; s2:[email protected];

s1:[email protected]; s2:[email protected]; {výmena premenných}

s1^ je to isté ako p1 alebo prístup s1^[i| -> p1[i]

Progranmovanie 2006

dynamické


Dynamick premenn1

Dynamické premenné

  • veľké množstvo dát >64 kB

  • zreťazené štruktúry

  • new(x);

  • dispose(x); - zruší dynamickú premennú ale v smerníku sa hodnota nezmení

  • x:=nil; zmení smerník - je to lepšie

Progranmovanie 2006

príklady


Pr klad dynamick ch premenn ch

var x:^integer;

begin

new(x);

...

dispose(x);

...

type pole:array[] of type;

var x:^pole;

begin

new(x);

...

x^[j]:=obsah;

dispose(x);

end;

type osoba = record

...

end;

var x:^osoba;

begin

new(x);

...

x^.meno:=hodnota;

...

dispose(x);

end;

Príklad dynamických premenných

Progranmovanie 2006

pamäť


Pridelenie pam ti

Pridelenie pamäti

zistenie veľkosti dostupnej pamäte (haldy)

  • maxavail - celkom voľne

  • memavail – najväčší súvislý celok

  • getmem – pridelenie pamäti

Progranmovanie 2006

použitie


Pou itie

Použitie

typem=array[1..50,1..1000] of real; {cca 300 kB}

var a,b : m; {nie je možné pretože m>64 kB}

a,b : ^m;

begin

new(a);

new(b);

prístupk premenej

a[i,j] {nefunguje }

a^[i,j]{v poriadku}

Progranmovanie 2006

štruktúrované


Trkt rovan premenn

Štrktúrované premenné

type m=array[1..100, 1..200] of real; {120.000}

type riad = array [1..200] of real;

smer = array [1..100] of ^riad;

mat = ^smer;

var m : mat;

r,s : word;

begin

readln(r,s);

vytvor (x,r,s);

použitie

x^[i]^[j]

Progranmovanie 2006

predstava


Predstava matice

Predstava matice

Progranmovanie 2006

vytvor


Trkt rovan premenn vytvor

Štrktúrované premenné - vytvor

procedure vyrvor (var a : mat; n,m : word;);

var i : word;

begin

getmem(a, m*sizeof(pointer));

for i:=1 to m do

getmem(^a[i],n*sizeof(real));

...

end;

Progranmovanie 2006

zreťazené


Zre azen trukt ry

Zreťazené štruktúry

  • lineárne smerník + obsah

  • stromové smerník, smerník, obsah

  • LIFO, FIFO, LIRO, FIRO ...

Progranmovanie 2006

deklarácie


Z sobn k lifo delkar cia

Zásobník LIFO - delkarácia

program zasobnik_lifo;

type prvok = record

info : integer; {alebo niečo iné}

next : smernik;

end;

smernik : ^prvok;

var zac1, zac2: smernik;

koniec : boolean;

Progranmovanie 2006

program


Z sobn k lifo v konn as

Zásobník LIFO – výkonná časť

begin

zac:=nil;

koniec :=false;

repeat

casereadkeyof

#27 : koniec:=true;

'p' : pridaj(zac1);

'v' : vypis(zac1);

'u': uber(zac1);

end;

until koniec;

end.

Progranmovanie 2006

pridaj


Z sobn k lifo pridaj

Zásobník LIFO - pridaj

procedurepridaj ( var zac : smernik);

var pom : smernik;

begin

new(pom);

write(text); readln(pom^.info);

pom^.next:=zac;

end;

Progranmovanie 2006

postup


Postup

Postup

Progranmovanie 2006

uber


Z sobn k lifo uber

Zásobník LIFO - uber

procedureuber(var zac:smernik);

var pom : smernik;

begin

if zac<>nil thenbegin

writeln(text, zac^.info);

pom:=zac;

zac:=pom^.next;

dispose(pom);

endelse writeln(prazdny);

end;

Progranmovanie 2006

postup


Postup1

Postup

Progranmovanie 2006

uber


Z sobn k lifo v pis

Zásobník LIFO - výpis

procedure vypis(zac:smernik);

var pom : smernik;

begin

while zac<>nil thenbegin

writeln(text, zac^.info);

zac:=zac^.next;

end;

end;

Progranmovanie 2006

postup


Postup2

Postup

Progranmovanie 2006

koniec


Akujem za pozornos

Ďakujem za pozornosť

Pokračovanie:

Základnéoperácie


  • Login