my




Pointer Dalam Turbo Pascal

Pointer Dalam Turbo Pascal


  Pointer
Pointer merupakan suatu tipe data dalam Pascal yang berfungsi untuk  menunjuk dan menyimpan alamat memori. Dalam penulisan pointer biasa digambar  dengan panah, sedangkan bagian memori yang ditunjuk digambar dengan kotak, dan isinya ditulis di dalam kotak. 
Bentuk umum dari deklarasi tipe pointer:
 Untuk pointer bertipe:
 <nama_var> : ^<tipe_data>;
 Untuk pointer tidak bertipe:
 <nama_var> : pointer;
Suatu pointer dapat menunjuk ke data bertipe elementerterstrukturpointer yang lain, atau tidak bertipe. Jika suatu pointer tidak menunjuk ke mana-mana, pointer itu dinamakan dangling, sedangkan bagian memori yang tidak dapat diakses karena tidak ada pointer yang menunjuk dinamakan garbage (sampah).
                Dalam Pascal, pointer dapat diisi dengan nilai yang berasal dari:
  1. NIL
  2. Fungsi Ptr
  3. Operator @
  4. Prosedur New dan GetMem

Reserved word NIL
      NIL merupakan reserved word dalam Pascal, di mana pointer yang bernilai NIL dianggap tidak menunjuk alamat memori manapun.NIL biasa digambarkan dengan lambang ground.
Fungsi Ptr
      Sintaks:
                  Function Ptr(Seg, Ofs : word) : pointer;
      dengan Seg      : segmen memori.
                  Ofs       : offset memori.
Fungsi Ptr mengembalikan pointer dari segmen dan offset yang dimasukkan. Operator @
      Sintaks:
                  <nama_var>:=@<variabel_yang_alamatnya_diambil>;
      Operator ini digunakan untuk mengambil alamat variabel yang akan ditunjuk.
Prosedur New dan GetMem
      Sintaks:
                  New(var P : pointer);
         GetMem(var P : pointer, size : word);
      Dengan P        : pointer yang akan diisi.
                  Size      : ukuran yang dipesan.
      Prosedur New digunakan untuk memesan memori untuk pointer bertipe, sedangkan prosedur GetMem untuk pointer tidak bertipe. Kedua prosedur ini akan membentuk suatu variabel dinamik yang diletakkan dalam Heap. Heap adalah memori-memori di komputer yang belum dialokasikan, yaitu memori yang tidak digunakan oleh DOS, oleh program-program resident, oleh program Turbo Pascal, internal stack yang digunakan oleh Turbo Pascal dan variabel-variabel di data segmen.
      Pointer yang belum digunakan sebaiknya diisi dengan NIL, dan untuk pointer yang telah menunjuk sebuah alamat yang sudah dipesan memorinya, isinya dapat dimanipulasi melalui pointer.

Mendeklarasikan Variabel Pointer
Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut :
tipe *nama_variabel
dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab sebelumnya, maupun bab-bab berikutnya. Adapun nama_variabel adalah nama dari variabel pointer.
Sebagai contoh :
int *px; //contoh 1
char *pch1, *pch2; //contoh 2
Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char.
Bentuk umum deklarasi pointer :
Type Pengenal = ^simpul ;
Simpul = tipe data ;

dengan pengenal : nama pengenal yang menyatakan tipe data pointer
simpul : nama simpul
tipe data : tipe data dari simpul
Tanda ^ di depan simpul harus ditulis apa adanya karena itu menunjukkan bahwa pengenal bertipe pointer. Tipe data dari simpul dapat berupa tipe data sebarang, misalnya char, integer, atau real.
Contoh :
Type Str30 = string[30] ;
Point = ^Data ;
Data = record
Nama_Peg : Str30 ;
Alamat : Str30 ;
Pekerjaan : Str30 ;
End ;
Var
P1, P2 : Point ;
A, B, C : Str30 ;

Mengatur Pointer agar Menunjuk ke Variabel Lain
Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel. Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka: &x . Berarti “alamat dari variabel x”. Adapun contoh pemberian alamat x ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu : px = &x;
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.

Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol * (bersifat unary).
Contoh penerapan operator * yaitu : *px
Yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” . Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut:
px = &x;
y = *px;
y akan berisi nilai yang sama dengan nilai x. Kedua pernyataan di atas sebenarnya dapat digantikan dengan sebuah pernyataan berupa :
y = x;
Seandainya pada program di atas tidak terdapat pernyataan:
px = &x;
namun terdapat pernyataan
y = *px;
maka y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk ke variabel x.
Hal seperti ini harap diperhatikan. Kalau program melibatkan pointer, dan pointer belum diinisialisasi, ada kemungkinan akan terjadi masalah yang dinamakan “bug” yang bisa mengakibatkan komputer tidak dapat dikendalikan (hang). Selain itu tipe variabel pointer dan tipe data yang ditunjuk harus sejenis. Bila tidak sejenis maka akan terjadi hasil yang tidak diinginkan.

Artikel Berhubungan


Share this artikel and Subscribe Free Update articel by email :
Di posting oleh : Kang Arys , Update pada : 11:55 AM | ► 0 komentar

No comments :

Post a Comment

feedburner
Salam bloger .. !!
Pergunakan fasilitas yang dapat membantu anda pada halaman blog ini.

1. Komentar SPAM Akan secepatnya dihapus
2. Pastikan untuk " Berlangganan Lewat Email " untuk membangun kreatifitas blog ini
3. Cek komentar masuk sebelum bertanya.
4. Link aktiv tidak akan berpungsi.
5. Dilarang menyebarluaskan artikel tanpa persetujuan dari saya.
6. Untuk mengajukan pertanyaan diluar postingan diatas, silahkan klik " Forum Diskusi "
7. Bergabung dengan kami untuk menjadi member Klik "Join to Member "
8. Bila komentar anda mengandung code HTML silahkan anda konversikan terlebih dulu
silahkan klik " Konversi Kode "

Konversi Kode Forum Diskusi Join to Blog SITE MAP GPLUS FACEBOOK TWITTER

  • SITE INFO

  • indahnya---berbagi.blogspot.com Alexa/PageRank
  • indahnya---berbagi.blogspot.com Real PR
hubungi sayaGunadarmaMy Youtube