際際滷

際際滷Share 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 afiate 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 afieaz 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 afieaz 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 (grmad). 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 urmtorul 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

Viewers also liked (8)

Manualul profesorului
Manualul profesoruluiManualul profesorului
Manualul profesorului
natashcka
丐亳仗 亟舒仆仆 Pointer
丐亳仗 亟舒仆仆 Pointer丐亳仗 亟舒仆仆 Pointer
丐亳仗 亟舒仆仆 Pointer
Colegiul de Industrie Usoara
Baza de date relatioala
Baza de date relatioalaBaza de date relatioala
Baza de date relatioala
rojcov
亟仂从仄亠仆 Microsoft office_word
亟仂从仄亠仆 Microsoft office_word亟仂从仄亠仆 Microsoft office_word
亟仂从仄亠仆 Microsoft office_word
rojcov
Structuri De Date Alocate Dinamic
Structuri De Date Alocate DinamicStructuri De Date Alocate Dinamic
Structuri De Date Alocate Dinamic
Carmen Negrea
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
rojcov
Sir de caractere in turbo pascal
Sir de caractere in turbo pascalSir de caractere in turbo pascal
Sir de caractere in turbo pascal
Colegiul de Industrie Usoara
Manualul profesorului
Manualul profesoruluiManualul profesorului
Manualul profesorului
natashcka
Baza de date relatioala
Baza de date relatioalaBaza de date relatioala
Baza de date relatioala
rojcov
亟仂从仄亠仆 Microsoft office_word
亟仂从仄亠仆 Microsoft office_word亟仂从仄亠仆 Microsoft office_word
亟仂从仄亠仆 Microsoft office_word
rojcov
Structuri De Date Alocate Dinamic
Structuri De Date Alocate DinamicStructuri De Date Alocate Dinamic
Structuri De Date Alocate Dinamic
Carmen Negrea
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
仗亠亰亠仆舒亳 Microsoft office_power_point_(3)[1]
rojcov

More from Colegiul de Industrie Usoara (20)

Analiza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor MAnaliza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor M
Colegiul de Industrie Usoara
Analiza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventilor grupelor FAnaliza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventilor grupelor F
Colegiul de Industrie Usoara
Analiza chestionarelor absolventi MT
Analiza chestionarelor absolventi MTAnaliza chestionarelor absolventi MT
Analiza chestionarelor absolventi MT
Colegiul de Industrie Usoara
Darea de seama a catedrei Stiinte reale 2017 2018
Darea de seama a catedrei Stiinte reale 2017 2018Darea de seama a catedrei Stiinte reale 2017 2018
Darea de seama a catedrei Stiinte reale 2017 2018
Colegiul de Industrie Usoara
Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Raport privind vizita de lucru 樽n Rom但nia 29.06.17Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Colegiul de Industrie Usoara
Raport de autoevaluare. Carau V. 04.07.2017
Raport de autoevaluare. Carau V. 04.07.2017Raport de autoevaluare. Carau V. 04.07.2017
Raport de autoevaluare. Carau V. 04.07.2017
Colegiul de Industrie Usoara
Aspecte teoretice evaluarea externa 13.03.17
Aspecte teoretice evaluarea externa 13.03.17Aspecte teoretice evaluarea externa 13.03.17
Aspecte teoretice evaluarea externa 13.03.17
Colegiul de Industrie Usoara
Diseminarea bunelor practice 22.05.17
Diseminarea bunelor practice  22.05.17Diseminarea bunelor practice  22.05.17
Diseminarea bunelor practice 22.05.17
Colegiul de Industrie Usoara
Orar profesori 1.09.2017
Orar profesori 1.09.2017Orar profesori 1.09.2017
Orar profesori 1.09.2017
Colegiul de Industrie Usoara
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
Colegiul de Industrie Usoara
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
Colegiul de Industrie Usoara
Modelarea i tehnologia tricotajelor
Modelarea i tehnologia tricotajelor Modelarea i tehnologia tricotajelor
Modelarea i tehnologia tricotajelor
Colegiul de Industrie Usoara
Masini si aparate
Masini si aparateMasini si aparate
Masini si aparate
Colegiul de Industrie Usoara
Frizerie i cosmetic
Frizerie i cosmeticFrizerie i cosmetic
Frizerie i cosmetic
Colegiul de Industrie Usoara
Securitatea
Securitatea Securitatea
Securitatea
Colegiul de Industrie Usoara
Filatura si tesatorie
Filatura si tesatorieFilatura si tesatorie
Filatura si tesatorie
Colegiul de Industrie Usoara
仂仄 亳 仂亠
仂仄 亳 仂亠仂仄 亳 仂亠
仂仄 亳 仂亠
Colegiul de Industrie Usoara
仄亠仂亟 仂亟
仄亠仂亟 仂亟仄亠仂亟 仂亟
仄亠仂亟 仂亟
Colegiul de Industrie Usoara
Metoda coardelor
Metoda coardelorMetoda coardelor
Metoda coardelor
Colegiul de Industrie Usoara
亠亠仄亠仆仆亶 仂从
亠亠仄亠仆仆亶 仂从亠亠仄亠仆仆亶 仂从
亠亠仄亠仆仆亶 仂从
Colegiul de Industrie Usoara
Analiza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor MAnaliza chestionarelor absolventilor grupelor M
Analiza chestionarelor absolventilor grupelor M
Colegiul de Industrie Usoara
Analiza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventilor grupelor FAnaliza chestionarelor absolventilor grupelor F
Analiza chestionarelor absolventilor grupelor F
Colegiul de Industrie Usoara
Darea de seama a catedrei Stiinte reale 2017 2018
Darea de seama a catedrei Stiinte reale 2017 2018Darea de seama a catedrei Stiinte reale 2017 2018
Darea de seama a catedrei Stiinte reale 2017 2018
Colegiul de Industrie Usoara
Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Raport privind vizita de lucru 樽n Rom但nia 29.06.17Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Raport privind vizita de lucru 樽n Rom但nia 29.06.17
Colegiul de Industrie Usoara
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
仗仂仆亳 亳 从仂仆亠仗 仂 亟舒仆仆 亳 仂 弍舒亰舒 亟舒仆仆
Colegiul de Industrie Usoara
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
72330 ,,Modelarea, proiectarea i tehnologia confec釘iilor din 釘esturi
Colegiul de Industrie Usoara

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 afiate 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 afieaz 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 afieaz 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 (grmad). 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 urmtorul 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.