SlideShare a Scribd company logo
Tipul de date pointer
Mulţimea de valori ale tipului predefinit de date
pointer (indicator) constă din adrese şi
valoarea specială nil.
Operaţiile care se pot face cu valori de tipul de
date pointer sînt = şi <>. Valorile de acest tip
nu pot fi citite de la tastatură şi afişate pe
ecran.
O variabilă de tip pointer se introduce printr-o
declaraţie forma:
var p : pointer;
Program PI 34; { Tipul de date pointer }
var p : pointer;
i, j : ^integer;
x, y : ^ real;
r, s : ^ string;
begin
{ p va identifica o variabilă dinamică de tipul integer }
new(i); i^:=1;
P^ = i ;
new(i); i ^ :=2;
j :=p;
writeln('j^=', j^);
{ p va identifica o variabilă de tip real }
new (x); x^: =1 ;
p:=x;
new (x); x^:=2;
y:=p;
Writeln(y^=' y^); {se afişează 1.OOOOOOOOOOE+00 }
{ p va identifica o variabilă dinamică de tipul string }
new (r); r^: = 'AAA';
p:=r;
new (r); r^:=‘BBB';
s:=p;
writeln ('s^=', s^); { se afişează AAA }
end.
Domeniul principal de utilizare a variabilelor de
tip pointer este gestionarea memoriei interne
a calculatorului.
Alocarea variabilelor dinamice se execută întro zonă specială a memoriei interne numită
heap (grămadă). Adresa de început a heapuluii este depusă în variabila predefinită de
tip pointer HeapOrg. Variabila de tip pointer
HeapPtr conţine adresa
primei locaţii libere, numită vîrful heap-ului.
Apelul procedurii mark are forma:
mark(p)
unde p este o variabilă de tip pointer. Procedura
memorează adresa vîrfului din HeapPtr în
variabila p.
Apelul procedurii release are forma:
release(p)
Această procedură reface adresa vîrfului în
starea înregistrată anterior cu procedura mark:
valoarea conţinută în variabila de tip pointer p
este depusă în indicatorul HeapPtr.
1) se memorează adresa vîrfului cu procedura
mark;
2) se creează variabilele dinamice cu procedura
new;
3) se utilizează variabilele dinamice create;
4) cînd variabilele dinamice nu mai sînt necesare,
spaţiul ocupat din heap este eliberat cu
procedura release.
1. Care este mulţimea de valori ale tipului de date pointer?
Ce operaţii pot fi
efectuate cu aceste valori?
2. Comentaţi următorul program:
Program PI36;
{ Eroare }
var i : ^integer;
j, k : integer;
p : pointer;
begin
new (i); i^:=1;
p:=i;
new (i) ; i^ :=2;
j:=i^; k:=p^;
writeln('j+k=', j+k);
end.
Program P137;
var i, j, k, m, n : ^integer;
p : pointer;
begin
{ crearea variabilelor i^, j^, k^ }
new(i); new(j); new(k);
i^:=1; j^:=2; k^:=3;
p:=j; { p reþine adresa din j }
{ distrugerea variabilei j^ ºi crearea
variabilei m^ }
dispose(j); new(m); m^:=4;
j:=p; { refacerea adresei din j }
writeln('i^=', i^, ' j^=', j^, ' k^=', k^);
{ distrugerea variabilei m^ si crearea
variabilei n^ }
dispose(m); new(n); n^:=5;
writeln('i^=', i^, ' j^=', j^, ' k^=', k^);
readln;
end.

Program P138;
var i, j, k, m : ^integer;
begin
{ crearea variabilelor i^, j^ }
new(i); new(j);
i^:=1; j^:=2;
{ eliberarea memoriei heap-ului }
release(HeapOrg);
{ crearea variabilelor k^ øi m^ }
new(k); new(m);
k^:=1; m^:=2;
writeln('k^=', k^, ' m^=', m^);
i^:=3; j^:=4;
writeln('k^=', k^, ' m^=', m^);
readln;
end.
Program P138;
var i, j, k, m : ^integer;
begin
{ crearea variabilelor i^, j^ }
new(i); new(j);
i^:=1; j^:=2;
{ eliberarea memoriei heap-ului }
release(HeapOrg);
{ crearea variabilelor k^ øi m^ }
new(k); new(m);
k^:=1; m^:=2;
writeln('k^=', k^, ' m^=', m^);
i^:=3; j^:=4;
writeln('k^=', k^, ' m^=', m^);
readln;
end.

More Related Content

PPSX
Functii in pascal
PPTX
Domeniul de viziblilitate.Efecte colaterale
PPSX
Variabile dinamice. Tipul referinta.
PPSX
Variabile dinamice
PPTX
Tutorial C++
PDF
Test i
Functii in pascal
Domeniul de viziblilitate.Efecte colaterale
Variabile dinamice. Tipul referinta.
Variabile dinamice
Tutorial C++
Test i

Viewers also liked (8)

PDF
Manualul profesorului
PPTX
Тип данных Pointer
DOCX
Baza de date relatioala
DOCX
документ Microsoft office_word
PPT
Structuri De Date Alocate Dinamic
PPT
презентация Microsoft office_power_point_(3)[1]
PPTX
Sir de caractere in turbo pascal
PPT
Analiza algoritmilor. Masurarea volumului
Manualul profesorului
Тип данных Pointer
Baza de date relatioala
документ Microsoft office_word
Structuri De Date Alocate Dinamic
презентация Microsoft office_power_point_(3)[1]
Sir de caractere in turbo pascal
Analiza algoritmilor. Masurarea volumului
Ad

Similar to Tipul de date pointer (20)

PDF
Pointeri şi tablouri
PDF
Tipuri de date tablou
PDF
17 pointeri
PDF
17 pointeri
DOC
Functii, tablouri si pointeri in c si c++
PPT
Tipuri de date definiteutilizator
PPT
Studierea limbajului pascal
PPTX
Proiect tic a_2b_popescu_eugen
PPTX
Vectori
PPT
Curs asm 3
PDF
Practici comune pentru limbajul de programare în C
PPT
Initiere in turbo pascal
ODP
PPTX
Vectori c1
PDF
Tehnologii Java
PPTX
DOCX
Variabile constante
PPTX
Proiect2
Pointeri şi tablouri
Tipuri de date tablou
17 pointeri
17 pointeri
Functii, tablouri si pointeri in c si c++
Tipuri de date definiteutilizator
Studierea limbajului pascal
Proiect tic a_2b_popescu_eugen
Vectori
Curs asm 3
Practici comune pentru limbajul de programare în C
Initiere in turbo pascal
Vectori c1
Tehnologii Java
Variabile constante
Proiect2
Ad

More from Colegiul de Industrie Usoara (20)

PPTX
Analiza chestionarelor absolventilor grupelor M
PPTX
Analiza chestionarelor absolventilor grupelor F
PPTX
Analiza chestionarelor absolventi MT
PPTX
Darea de seama a catedrei Stiinte reale 2017 2018
PPTX
Raport privind vizita de lucru în România 29.06.17
PPTX
Raport de autoevaluare. Carauș V. 04.07.2017
PPT
Aspecte teoretice evaluarea externa 13.03.17
PPTX
Diseminarea bunelor practice 22.05.17
PDF
Orar profesori 1.09.2017
PPTX
понятия и концепты о данных и о базах данных
PPTX
72330 ,,Modelarea, proiectarea şi tehnologia confecţiilor din ţesături”
PPTX
Modelarea și tehnologia tricotajelor
PPTX
Masini si aparate
PPTX
Frizerie și cosmetică
PPTX
Filatura si tesatorie
PPTX
формы и отчеты
PPTX
метод хорд
PPTX
PPTX
Переменный ток
Analiza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventi MT
Darea de seama a catedrei Stiinte reale 2017 2018
Raport privind vizita de lucru în România 29.06.17
Raport de autoevaluare. Carauș V. 04.07.2017
Aspecte teoretice evaluarea externa 13.03.17
Diseminarea bunelor practice 22.05.17
Orar profesori 1.09.2017
понятия и концепты о данных и о базах данных
72330 ,,Modelarea, proiectarea şi tehnologia confecţiilor din ţesături”
Modelarea și tehnologia tricotajelor
Masini si aparate
Frizerie și cosmetică
Filatura si tesatorie
формы и отчеты
метод хорд
Переменный ток

Tipul de date pointer

  • 2. Mulţimea de valori ale tipului predefinit de date pointer (indicator) constă din adrese şi valoarea specială nil. Operaţiile care se pot face cu valori de tipul de date pointer sînt = şi <>. Valorile de acest tip nu pot fi citite de la tastatură şi afişate pe ecran. O variabilă de tip pointer se introduce printr-o declaraţie forma: var p : pointer;
  • 3. Program PI 34; { Tipul de date pointer } var p : pointer; i, j : ^integer; x, y : ^ real; r, s : ^ string; begin { p va identifica o variabilă dinamică de tipul integer } new(i); i^:=1; P^ = i ; new(i); i ^ :=2; j :=p; writeln('j^=', j^); { p va identifica o variabilă de tip real } new (x); x^: =1 ; p:=x; new (x); x^:=2; y:=p; Writeln(y^=' y^); {se afişează 1.OOOOOOOOOOE+00 } { p va identifica o variabilă dinamică de tipul string } new (r); r^: = 'AAA'; p:=r; new (r); r^:=‘BBB'; s:=p; writeln ('s^=', s^); { se afişează AAA } end.
  • 4. Domeniul principal de utilizare a variabilelor de tip pointer este gestionarea memoriei interne a calculatorului. Alocarea variabilelor dinamice se execută întro zonă specială a memoriei interne numită heap (grămadă). Adresa de început a heapuluii este depusă în variabila predefinită de tip pointer HeapOrg. Variabila de tip pointer HeapPtr conţine adresa primei locaţii libere, numită vîrful heap-ului.
  • 5. Apelul procedurii mark are forma: mark(p) unde p este o variabilă de tip pointer. Procedura memorează adresa vîrfului din HeapPtr în variabila p. Apelul procedurii release are forma: release(p) Această procedură reface adresa vîrfului în starea înregistrată anterior cu procedura mark: valoarea conţinută în variabila de tip pointer p este depusă în indicatorul HeapPtr.
  • 6. 1) se memorează adresa vîrfului cu procedura mark; 2) se creează variabilele dinamice cu procedura new; 3) se utilizează variabilele dinamice create; 4) cînd variabilele dinamice nu mai sînt necesare, spaţiul ocupat din heap este eliberat cu procedura release.
  • 7. 1. Care este mulţimea de valori ale tipului de date pointer? Ce operaţii pot fi efectuate cu aceste valori? 2. Comentaţi următorul program: Program PI36; { Eroare } var i : ^integer; j, k : integer; p : pointer; begin new (i); i^:=1; p:=i; new (i) ; i^ :=2; j:=i^; k:=p^; writeln('j+k=', j+k); end.
  • 8. Program P137; var i, j, k, m, n : ^integer; p : pointer; begin { crearea variabilelor i^, j^, k^ } new(i); new(j); new(k); i^:=1; j^:=2; k^:=3; p:=j; { p reþine adresa din j } { distrugerea variabilei j^ ºi crearea variabilei m^ } dispose(j); new(m); m^:=4; j:=p; { refacerea adresei din j } writeln('i^=', i^, ' j^=', j^, ' k^=', k^); { distrugerea variabilei m^ si crearea variabilei n^ } dispose(m); new(n); n^:=5; writeln('i^=', i^, ' j^=', j^, ' k^=', k^); readln; end. Program P138; var i, j, k, m : ^integer; begin { crearea variabilelor i^, j^ } new(i); new(j); i^:=1; j^:=2; { eliberarea memoriei heap-ului } release(HeapOrg); { crearea variabilelor k^ øi m^ } new(k); new(m); k^:=1; m^:=2; writeln('k^=', k^, ' m^=', m^); i^:=3; j^:=4; writeln('k^=', k^, ' m^=', m^); readln; end.
  • 9. Program P138; var i, j, k, m : ^integer; begin { crearea variabilelor i^, j^ } new(i); new(j); i^:=1; j^:=2; { eliberarea memoriei heap-ului } release(HeapOrg); { crearea variabilelor k^ øi m^ } new(k); new(m); k^:=1; m^:=2; writeln('k^=', k^, ' m^=', m^); i^:=3; j^:=4; writeln('k^=', k^, ' m^=', m^); readln; end.