Struktur Data Series - Pointer

Setelah mempelajari Array kita akan membahas Pointer, Pointer merupakan tipe data yang berisi alamat memori dari sebuah variabel, untuk lebih mudah memahami ini, Kita akan coba membahas terlebih dahulu bagaimana bahasa pemrograman lain menyimpan nilai dari sebuah variabel. Ketika kita akan mendeklarasikan sebuah variabel (misalkan variabel angka’), bahasa pemrograman akan menyiapkan sebuah tempat di memory komputer. Tempat ini memiliki alamat, yang berfungsi untuk menandai lokasi variabel tersebut. 


Contoh Ilustrasi tipe data pointer, bayangkan memory komputer sebagai sebuah lemari besar. Variabel disimpan di dalam setiap laci lemari. Setiap laci tentunya memiliki nomor agar mudah diakses. Nomor laci inilah yang akan disimpan sebagai pointer.


Cara Penggunaan Pointer

Untuk dapat membuat pointer, kita harus menyesuaikan dengan variabel yang ingin kita akses Maksudnya seperti ini, Jika kita mendeklarasikan sebuah variabel ‘angka’ :

Disini variabel ‘angka’ disiapkan untuk menampung tipe data integer.Disini variabel ‘angka’ 


Angka : integer


disiapkan untuk menampung tipe data integer.Untuk bisa menampung alamat memori dari variabel ‘angka’ ini, kita harus membuat pointer yang juga di-set untuk menampung tipe data pointer integer. Berikut cara penulisannya 


pointer_angka : ^integer


Perhatikan tanda ‘topi’ atau ‘caret’. Inilah cara pendeklarasian tipe data pointer di dalam bahasa pemrograman. ^integer berarti kita mempersiapkan sebuah pointer untuk variabel integer.


Jika kita butuh pointer ke tipe data lain, penulisannya juga akan berbeda. Misalnya, untuk membuat pointer ke alamat variabel yang bertipe data char, bisa ditulis sebagai berikut:


pointer_kata : ^char


Di dalam Bahasa Pemrograman, biasanya kita membutuhkan karakter untuk memanggil alamat memori sebuah variabel, Pada bahasa Pascal menggunakan karakter ‘@’, atau pada bahasa C/C++ menggunakan ‘&’.


angka : integer

poiter_angka : ^integer

pointer_angka = @angka (pada Pascal)

pointer_angka = &angka (pada C/C++)


Baris terakhir: pointer_angka:= @angka adalah kode yang ‘mengaitkan’ kedua variabel ini. Sekarang, variabel pointer_angka akan berisi alamat memori dari variabel ‘angka’. Silahkan anda pahami sebentar maksud kalimat ini.


Apabila ditampilkan, variabel pointer_angka akan berisi: 40960. Inilah alamat memory yang dipergunakan pascal untuk menyimpan variabel ‘angka’. Alamat ini sepenuhnya ditentukan oleh pascal, terserah akan menyimpan di alamat memori mana.


Tipe pointer dideklarasikan pada bagian deklarasi type


Bentuk umum deklarasi pointer adalah :


Type

Pengenal = ^simpul;

Simpul = type;


(pengenal : nama pengenal yang menyatakan data bertipe pointer; simpul : nama simpul; tipe : tipe data dari simpul)


Deklarasi Pointer

Tanda ^ di depan nama impul harus ditulis seperti apa adanya menunjukkan bahwa pengenal adalah suatu tipe data pointer. Tipe data simpul yang dinyatakan dalam tipe bia berupa sembarang tipe data, misalnya char, integr, atau real.

Contoh : 


Type Bulat : ^integer 


Dalam contoh diatas Bulat menunjukkan tipe data baru, yaitu bertipe pointer. Dalam hal ini pointer tersebut akan menunjukkan ke suatu data yang bertipe integer. Misalnya,


X, K : Bulat 


Implementasi Pointer Pada Record

Pada program-program terapan, biasanya terdapat sekumpulan data yang dikumpulkan dalam sebuah rekaman (record), maka akan banyak dijumpai tipe data pointer yang elemennya (data yang ditunjukkan) adalah sebuah rekaman.


Contoh : 


type

    text=string[30];

    point=^data;

    data=record

    nama_peg : teks; 

alamat : teks; 

pekerjaan : teks; 

berikut : point

End

Var

    P1, P2 : point; 

A,B,C : Teks


Simpul yang berisi medan bertipe pointer dapat digambarkan sbb:


7L_8jUA_m6nKNhEEKfBxDOUUDch-iNStmSqYmiWj0OCKtg1d3IeY67VL21F08aveke6LySOsEIS7z3Ope_0QrIOQ8kY-rYndN4-Lbnc4jNWsyhSITQWI9kRfm8mGskgixh93QXOh


(P1 pada bagian atas, dan P2 pada bagian bawah.)


Pada contoh di slide sebelumnya, P1 dan P2 adalah pointer yang akan menempati lokasi tertentu dalam pengingat. Kedua perubah ini masing-masing belum menunjuk ke suatu simpul nilai, dinyatakan sebagai nil. Untuk mengalokasikan simpul dalam pengingat, statemen yang digunakan adalah statemen new.


Bentuk Umum : 


new(P1);

new(P2);


Operasi Pada Pointer

Secara umum ada dua operasi pada pointer dasar :

  • Mengkopi pointer, sehingga sebuah simpul akan ditunjuk oleh lebih dari sebuah pointer.
  • Mengkopi isi simpul, sehingga dua atau lebih simpul yang ditunjuk oleh pointer yang berbeda mempunyai isi yang sama.

Syarat-syarat operasi pointer adalah kedua pointer yang dioperasikan harus mempunai deklarasi yang sama.

Contoh :


Type Mahasiswa = ^Data;

^Data = record

    nama : string; 

    alamat : string;

    Brikut : Mahasiswa

End;

Var T1, T2 : Mahasiswa;


Pada deklarasi di atas, pointer T1 dan T2 mempunyai deklarasi simpul yang sama, sehingga memenuhi syarat untuk operasi pointer. Sekarang kita berikan statement


New (T1);

New (T2);


Artinya kita mempunyai dua simpul, yaitu : 

He6VcUExlFPFBAZF-HAVRreq_dJpJWbuWmGSwVqguqNQiGiO-7d9p5fbxkVYylVEQAkz53OzPkd_FaY42Aaws0FHlDUBlhU4fh7YQaeQHB5EExKOa8KvixpdxclkQVlyET5lWMDP


Itu dia materi tentang Pointer, Selanjutnya kita akan belajar List.


avatar randynetworks

Ditulis oleh @randynetworks

"Untuk meraih sesuatu, harus mengorbankan sesuatu juga."