Pointer bisa diartikan sebagai sebuah variabel, tetapi variabel yang bersifat dinamis. Kenapa kok disebut dinamis? karena jenis variabel ini dapat didealokasikan apabila tidak digunakan lagi. Variabel pointer adalah suatu variabel yang menunjuk ke alamat memori yang digunakan untuk menampung data yang akan diproses. Perbedaan pointer dengan array ialah kalau array itu bersifat statis, tidak dapat diubah alokasinya saat program berjalan, kalau pointer bersifat dinamis dan dalam artian kalau dibutuhkan baru digunakan kalau tidak ya tidak digunakan.
Pointer bisa dideklarasikan menggunakan variabel, misalkan:
var
nama_var : ^type data;
contoh:
var
bisa juga diimplementasikan menggunakan record, misalkan:
type
nama_pointer = ^nama_record
nama_record = record
datafield1 : typedata;
datafieldn : typedata;
end;
contoh implementasi
uses wincrt;
var
p : ^integer;
m,n : integer;
begin
m := 10;
n := 15;
writeln('m = ',m,' , n = ',n);
writeln;
p := @m; {p menunjuk ke m}
p^ := 12; {samadengan m = 12}
p := @n;
p^ := 20;
writeln('m = ',m,' , n = ',n);
end.
Kalau dijalankan maka akan mendapatkan hasil sebagai berikut:
Deklarasi awal bahwa m = 10 dan n = 15, tetapi p sebagai variabel pointer digunakan untuk mereferensikan ke variabel m dengan cara @m. kemudian p^ = 12 dalam artian inputan 12 tersebut akan masuk kedalam variabel m jadi sekarang m = 12.
begitu juga dengan perintah p := @n artinya sekarang pointer menunjuk ke variabel n, p^ = 20 dalam artian inputan 20 tersebut akan masuk kedalam variabel n jadi sekarang n = 20.
Membuat Record dengan Pointer
sebelumnya kita harus pahami bahwa pointer ini adalah variabel yang bersifat dinamis yang bisa dialokasikan dan didealokasikan apabila sudah tidak ddigunakan lagi.
untuk mengalokasikan sebuah pointer kita bisa menggunakan perintah New(nama_pointer); dan untuk men-dealokasikanya kita bisa menggunakan perintah dispose(nama_pointer);
Contoh Implementasi
Ok kita langsung aja ke lapangan dan saya punya script seperti berikut:
uses wincrt;
type
pointer = ^pekerja;
pekerja = record
nama : string[10];
posisi : string[10];
gaji : longint;
end;
var
p : pointer;
i : integer;
begin
new(p); {mengalokasikan memori}
p^.nama := 'Farara';
p^.posisi := 'Manager';
p^.gaji := 3000;
writeln('masukan nama :' );readln(p^.nama);
writeln('masukan posisi : '); readln(p^.posisi);
writeln('masukan gaji : '); readln(p^.gaji);
writeln(p^.nama ,' ',p^.posisi,' ',p^.gaji);
dispose(p); {dealokasi memori}
end.
pada contoh diatas saya new(p) untuk mengalokasikan memori yang nantinya akan digunakan untuk menyimpan nilai dari pointer, kemudian saya menampilkan 2 cara yang bisa digunakan untuk memasukan nilai kedalam pointer yang pertama secara langsung pada:
untuk mengalokasikan sebuah pointer kita bisa menggunakan perintah New(nama_pointer); dan untuk men-dealokasikanya kita bisa menggunakan perintah dispose(nama_pointer);
Contoh Implementasi
Ok kita langsung aja ke lapangan dan saya punya script seperti berikut:
uses wincrt;
type
pointer = ^pekerja;
pekerja = record
nama : string[10];
posisi : string[10];
gaji : longint;
end;
var
p : pointer;
i : integer;
begin
new(p); {mengalokasikan memori}
p^.nama := 'Farara';
p^.posisi := 'Manager';
p^.gaji := 3000;
writeln('masukan nama :' );readln(p^.nama);
writeln('masukan posisi : '); readln(p^.posisi);
writeln('masukan gaji : '); readln(p^.gaji);
writeln(p^.nama ,' ',p^.posisi,' ',p^.gaji);
dispose(p); {dealokasi memori}
end.
pada contoh diatas saya new(p) untuk mengalokasikan memori yang nantinya akan digunakan untuk menyimpan nilai dari pointer, kemudian saya menampilkan 2 cara yang bisa digunakan untuk memasukan nilai kedalam pointer yang pertama secara langsung pada:
p^.nama := 'Farara';
p^.posisi := 'Manager';
p^.gaji := 3000;
dan yang kedua adalah input dari masukan keybord pada:
writeln('masukan nama :' ); readln(p^.nama);
writeln('masukan posisi : '); readln(p^.posisi);
writeln('masukan gaji : '); readln(p^.gaji);
setelah selesai diakhir program saya kasih perintah dispose(p); dengan tujuan supaya memori yang dialokasikan pertama kali di hapus atau dilepaskan lagi.
Tidak ada komentar:
Posting Komentar