Pointer dan Variabelnya dalam Pascal


  Pointer Merupakan Variabel khusus yang berisi suatu addres (alamat) di lokasi lain didalam Memory. Suatu Variabel yang points (menunjuk) ke sesuatu sehingga disebut Pointer.

Ada dua macam Pointer :
- Typed (Tertentu) : Merupakan Pointer yang menunjuk pada tipe data tertentu pada Variabel
- Generic (Umum) : Merupakan Pointer yang tidak menunjuk pada tipe data tertentu pada Variabel

Contoh Deklarasi Pointer :

var p : ^integer;

Contoh diatas merupakan Deklarasi variabel p Sebagai pointer dari Integer. Dengan menambahkan tanda Caret (^) didepan nama tipe data Variabel yang dideklarasikan :

Contoh :

program contoh_pointer1;
uses wincrt;
var p : ^integer;
m, n : integer;
begin
     m:=10;
     n:=15;
     p:=@m; {p sekarang menunjuk ke m}
     p^:=12; {hal ini sama dengan m:=12;}
     p:=@n; {p sekarang menunjuk ke n}
     p^=m; {hal ini sama dengan n:=m;}
writeln('m = ',m,', n = ',n); { m = 12, n = 12}
end.

Ketika p menunjuk ke m (p:=@m), mengakses p^ sama dengan mengakses m. Dalam membuat program, dalam pengguna pointer kita memerlokan alokasi memori tertentu, ketika kita mendeklarasikan variabel pointer dalam "var" sehingga merupakan suatu static variabel, yang mana static variabel ini dibatasi oleh kapasitas 64kb untuk tiap module. yang berarti dalam program utama kita hanya bisa menggunakan hanya 64kb dan tiap unit pascal hanya bisa memakai 64kb. Sehingga kita perlu memecahkan program persoalan ini adalah seperti program berikut.

program contoh_pointer2;
uses wincrt;
type Pemployee = ^Temployee;
Temployee = record Name : String[10];
Position : char;
Salary : longint;
end;

Var p : pemployee;
begin
     new(p);
     p^.name:='Saddam';
     p^.position:='S';
     p^.Salary:=3000;
writeln(p^.name,' ',p^.position,' ',p^.Salary);
dispose(p);
end.

Pada blok begin...end blok, kita bisa melihat meskipun p tidak menunjuk pada suatu variabel tetapi dapat diisi dengan nilai. Pernyataan new(p); tidak memerlukan alokasi memori. Setelah itu kita bisa melakukan apapun pada variabel tersebut sampai kita membuang dari memori dengan memakai perintah dispose(p);  Variabel dengan cara ini dinamakan dengan Dynamic Variabel.
Generic Pointer adalah Pointer tanpa tipe data tertentu. Biasanya pointer berkaitan dengan tipe data khusus, Sedangan Generic Pointer tidak.

Deklarasi :

var p : pointer;

Dipergunakan sebagai buffer sementara (tidak permanen). Sehingga kita bisa melepasnya untuk suatu saat tidak diperlukan. untuk itu pointer sangat bagus karena sifatnya yang dinamis. Tetapi, Generic Pointer tidak sama dengan typed pointer. Typed pointer menggunakan "new" untuk menampung memori dan "dispose" untuk melepasnya, Generic Pointer menggunakan "getmem" untuk mendapatkan memori dan "fremem" untuk melepasnya. Pada pointer dengan tipe tertentu, Program Pascal mengetahui ukuran dari memori yang harus dilokasikan, sedangkap tipe umum (generic pointer) pascal tidak bisa, karena pascal tidak mengetahui variabel pada yang dipakai. Sehingga dengan getmem kita perlu untuk menentukan beberapa besar memori yang akan kita alokasikan. Ukuran terbesar adalah 65532 bytes (hampir 64k).

program contoh_pointer2;
uses wincrt;
var p : pointer;
begin
     getmem(p,8192); {Reserve 8192 bytes}{We use it then}
     freenem(p,8192); {Release it, 8192 bytes}
end.

http://www.tutorialumum.com/

Subscribe to receive free email updates:

0 Response to "Pointer dan Variabelnya dalam Pascal"

Post a Comment