Documente Academic
Documente Profesional
Documente Cultură
DE DATE
Variabile dinamice
Tipul referin. Definire
Operaii admisibile
MEMORIA CALCULATORULUI
PROGRAM Test;
VAR A,B: Integer;
BEGIN
...
A := 12;
B := 5;
...
END.
Declarare
variabile
Atribuire
valori
12
VARIABILE STATICE
Toate variabilele pentru care n momentul crerii programului se
poate evalua cantitatea de memorie necesart stocrii acestora se
numesc variabile statice
Variabilele declararte n program i notate printr-un identificator
(nume) se numesc variabile statice
Variabilele care exist pe toat durata de execuie a blocului n
care au fost declarate se numesc variabile statice
VARIABILE DINAMICE
Variabilele care sunt create i distruse pe parcursul execuiei programului se numesc variabile dinamice
ine minte!!!
1. Variabilele dinamice nu se declar ntr-o seciune VAR deci nu se
pot identifica prin nume.
Variabila REFERIN
Variabila DINAMIC
p^
DEFINIRI, DECLARRI
^
Identificator_tip_de_baza
POINTER
EXEMPLE
TYPE
SubRange=1..25;
RefSub=^Subrange;
Enumerated=(Rosu, Galben, Verde);
RefEnum=^Enumerated;
Vector=Array[1..10] of Real;
RefVec=^Vector;
RefData=^DataNast;
DataNast=RECORD
Zi : 1..31;
Luna : 1..12;
An : 1900..2050;
end;
RefXXX=POINTER;
VAR
p : RefSub;
p1 : RefEnum;
p2 : RefVec;
p3 : RefData;
a : ^Integer;
r : ^Real;
ch : ^Char;
Variabilele p, p1, p2, p3, a, r,
ch sunt variabile referin,
sau variabile reper. Pentru ele
se aloc la compilare un
spaiu de memorie de 4 bytes
(conine adresa de memorie a
variabilei dinamice referite)
s conin referina
(adresa) la o variabil
dinamic
?
p^
sau
NIL
1. ATRIBUIREA
TYPE IdTip = ...;
VAR p, q : ^ IdTip;
BEGIN
...
p := q ;
...
p := NIL ;
...
END.
p
q
p
Locaie de
memorie
2. COMPARATIA
VAR R, RR : ^ Real;
Ri, Rc : ^ Integer;
logic : Boolean;
BEGIN
...
logic := Ri <> NIL ;
...
If (R=RR) OR (logic) Then ... ;
...
END.
Variabilele referin pot fi
3. PARAMETRI
VARIABILA DINAMIC
CREARE
NEW(p);
...
p^
End.
Adresa lui p^
MEMORIA
p^
Program
Zon variabile
statice
Zon variabile
dinamice (HEAP)
VARIABILA DINAMIC
DISTRUGERE
...
DISPOSE(p);
p:=NIL;
End.
2. Creare
A^
NEW (A);
NEW (B);
B^
3. Atribuire de valori
A^
A^ := 8;
B^ := 6;
-6
B^
-6
A^
A^ := B^ ;
-6
B^
5. Atribuire NIL
-6
A^
B := NIL;
6. Atribuire de valori
A^
A^ := Round(3.14)+2;
A^
B
A
A^
1
aux
2
3
B^
A^[1]
A^[2]
A^[3]
A^[4]
Begin
...
NEW(C);
...
End.
C^.R
e
C^.Im
ERORI FRECVENTE
NODURI INACCESIBILE Structuri dinamice cu referine
la ele pierdute (ldia ncuiat cu cheia pierdut) apar dup utilizarea procedurii NEW sau instruciunii de atribuire
PN
DUP
A^
NEW(A);
A^
B^
A := B;
A^
A^
B^
ERORI FRECVENTE
REFERINE SUSPENDATE Indicatori ce conin
referine la locaii de memorie eliberate cu DISPOSE
PN
DUP
DISPOSE(A);
A^
B^