Pointer

Setelah mengikuti pelatihan dalam modul ini Anda diharapkan telah memiliki kemampuan :
– memahami konsep pointer
– mendeklarasikan tipe data pointer
– memanfaatkan pointer dalam pemecahan masalah

Pengantar
Tipe data primitive (integer, string, boolean) termasuk tipe data statis artinya bahwa tipe data tersebut memiliki keterbatasan cakupan (range) nilai. Sebagai contoh bahwa tipe data integer hanya memiliki nilai antara -32786 s.d 32767. Keterbatasan cakupan nilai pada tipe data statis dapat diatasi dengan menggunakan tipe data pointer.
Jika pada tipe data statis suatu pengenal langsung menyimpan data yang ada di memory maka tipe pointer akan menunjuk ke suatu alamat di memory dan alamat memory tersebut yang menunjuk nilai tertentu di memory. Pengenal yang bertipe pointer selanjutnya dapat menunjuk pengenal bertipe pointer lainnya tanpa batas sehingga akan membentuk suatu pengenal yang dapat menunjuk pengenal lainnya hingga tak terhingga. Keterbatasan hubungan (link) antar pengenal hanya karena kapasitas memory.

Deklarasi Tipe Data Pointer
Setiap pengenal yang bertipe pointer harus terlebih dahulu dideklarasikan/dikenalkan. Misalkan diinginkan suatu pengenal bertipe pointer Integer maka deklarasinya dapat seperti berikut ini:

var
luas : ^integer;
begin
luas^:=50;
writeln(luas^);
end.

Mengalokasikan Memory di Heap
Heap merupakan tempat di memory di komputer yang digunakan sebagai tempat pengalokasian pengenal pointer. Untuk mengalokasikan pengenal pointer digunakan prosedur New.

var
luas : ^integer;
begin
new(luas);
luas^:=50;
writeln(luas^);
end.

Mendealokasikan Memory di Heap
Heap merupakan tempat di memory di komputer yang digunakan sebagai tempat pengalokasian pengenal pointer. Untuk mengalokasikan pengenal pointer digunakan prosedur Dispose.

var
luas : ^integer;
begin
new(luas);
luas^:=50;
writeln(luas^);
dispose(luas);
end.

Latihan 1. Menjumlahkan dua buah bilangan integer dengan pengenal pointer

Program Jumlah(A,B);
Uses Crt;
Var
A,B,C : ^integer;
Begin
Clrscr;
New(A);
New(B);
New(C);
write(‘Nilai A = ‘);readln(A^);
write(‘Nilai B = ‘);readln(B^);
C^:=A^+B^;
writeln(‘ A + B = ‘,C^);
dispose(A);
dispose(B);
dispose(C);
readln;
end.

Pointer Berantai
Suatu pengenal pointer dapat menunjuk ke pengenal pointer lainnya sehingga membentuk hubungan (link) yang berantai sehingga sering disebut dengan link list.
Misalkan diinginkan untuk menyimpan data mahasiswa dengan rekord seperti berikut ini:
Nim : string[8];
Nama : string[30];
maka deklarasi pengenal pointer rekord mahasiswa tersebut dapat didefenisikan sebagai berikut:

 Type Simpul = ^Data
         Data = Record
         Nim : String[8];
         Nama : String[30];
         Berikut : Simpul;
        End;

Var
  Mahasiswa : Simpul;

Dalam deklarasi Type didefenisikan suatu pengenal baru yang bernama simpul. Pengenal simpul menunjuk ke suatu pengenal ^Data yang bertipe rekord. Rekord terdiri atas 3 field yaitu nim, nama dan berikut. Field berikut merupakan field yang digunakan untuk menunjuk (link) ke pengenal simpul yang lainnya.

Latihan 2. Buat program untuk menyimpan data mahasiswa dengan menggunakan pengenal pointer berkait

Program Data_Mahasiswa;
Uses Crt;
Type Simpul = ^Data
         Data = Record
         Nim : String[8];
         Nama : String[30];
         Berikut : Simpul;
        End;
Var
  MahasiswaA,MahasiswaB : Simpul;
  Bantu : Simpul;
Begin
 Clrscr;
 New(MahasiswaA);
 MahasiswaA^.Nim:='10010001';
 MahasiswaA^.Nama:='Irvan Aginta Ginting';
 MahasiswaA^.Berikut:=Nil;
 New(MahasiswaB);
 MahasiswaB^.Nim:='10010002';
 MahasiswaB^.Nama:='Irvan Aginta Ginting';
 MahasiswaB^.Berikut:=MahasiswaA;

 Bantu:=MahasiswaB;
 While (Bantu^.Berikut<Ni>l) Do
 Begin
   Writeln(Bantu^.Nim, Bantu^.Nama);
   Bantu:=Bantu^.Berikut;
 End;

Readln;
End.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: