3. Tujuan
Tujuan Instruksional Umum :
Mahasiswa diharapkan mampu membuat algoritma
dengan menggunakan pointer
Tujuan Instruksional Khusus :
Memahami pengertian pointer
Memahami cara deklarasi pointer
Memahami operasi terhadap pointer
Mampu membuat algoritma dengan pointer
4. Konsep Pointer #1
Berdasarkan proses pembuatannya, perubah (variabel)
dibedakan menjadi dua, yaitu perubah statis dan perubah
dinamis
Perubah statis adalah perubah yang alamatnya
dialokasikan pada saat program dikompilasi sehingga tidak
bisa diubah pada saat program dieksekusi
Perubah dinamis adalah perubah yang alamatnya
dialokasikan hanya pada saat diperlukan yaitu setelah
program dieksekusi
Pada perubah statis, isi alamat di memori pada lokasi
tertentu (nilai perubah) adalah data yang sesungguhnya
akan diolah
Pada perubah dinamis, nilai perubah adalah alamat lokasi
lain yang menyimpan data yang sesungguhnya
5. Konsep Pointer #2
10 1000
A 1000 B 10
Peubah Statis Peubah Dinamis
Perubah A adalah perubah statis, dimana 1000 adalah nilai data
yang sesungguhnya dan disimpan pada lokasi perubah A
Perubah B adalah perubah dinamis, dimana 10 merupakan nilai
alamat dari data yang sesungguhnya yaitu 1000
Nilai perubah dinamis akan digunakan untuk menunjuk ke lokasi
lain yang berisi data yang sesungguhnya akan diproses, sehingga
perubah dinamis lebih dikenal dengan nama pointer
Nilai data yang ditunjuk oleh suatu pointer disebut dengan
simpul/node
6. Deklarasi Pointer #1
Pointer adalah tipe dasar yang ranah nilainya adalah alamat di
memori komputer
Nama tipe : pointer
Ranah nilai : alamat sel memori komputer
Tetapan : Nil, yang menunjukkan alamat tidak
terdefinisi
Operator : operator perbandingan yang menghasilkan
nilai boolean, yaitu operator = dan ≠
Memori terdiri atas sekumpulan sel, dan setiap sel mempunyai
alamat fisik (berupa angka-angka dalam sistem heksadesimal)
Dalam pemrograman, pemrogram tidak berhubungan
langsung dengan alamat fisik karena sulit diingat, sehingga
pemrogram mendefinisikan nama untuk lokasi memori yang
menyimpan suatu nilai
7. Deklarasi Pointer #2
Sebagai contoh, X adalah nama yang didefinisikan bertipe
integer
DEKLARASI
X : integer
X adalah peubah yang menyimpan nilai bertipe integer
Pemrogram tidak peduli di sel memori mana nilai
tersebut, namun agar sel memori dikenali, pemrogram
memberi nama sel memori tersebut dengan X
Sistemlah yang mengatur alamat fisik sel memori yang diberi
nama X itu
Sel memori menyimpan nilai sesuai dengan tipe data dari
nama yang didefinisikan pemrogram, termasuk menyimpan
nilai bertipe pointer
Karena pointer adalah alamat, maka sel memori yang berisi
nilai pointer berarti menyimpan alamat sel memori yang lain
8. Deklarasi Pointer #3
Sebagai contoh, PX adalah peubah bertipe pointer yang akan
berisi alamat peubah lain yang bertipe integer
DEKLARASI
X : integer
PX : pointer to integer
Bila PX diisi dengan alamat fisik peubah X, maka nilai yang
disimpan oleh X juga dapat diakses melalui PX dengan notasi:
PX↑
PX↑ berarti menunjuk ke sel memori lain yang bertipe integer
dan alamatnya disimpan di dalam PX
9. Pemrosesan Pointer #1
Kelebihan tipe pointer adalah pengalokasian memorinya
secara dinamis
Untuk peubah biasa bertipe integer, riil dan sebagainya,
memorinya segera dialokasikan begitu nama tersebut
dideklarasikan
Peubah X pada contoh diatas, begitu X dideklarasikan
didalam bagian nama, memori untuk X segera disediakan
Begitu juga untuk larik dan matriks, ruang memori untuk
sejumlah elemennya segera disediakan begitu larik atau
matriks tersebut dideklarasikan
Pendeklarasian larik/matriks harus memberitahukan
berapa jumlah elemennya agar sistem dapat menyediakan
sejumlah ruang memori yang ukurannya adalah jumlah
elemen × besar byte untuk setiap elemen
10. Pemrosesan Pointer #2
Sekali ruang memori telah dialokasikan, ruang memori
tersebut tidak dapat dihapus dan dikembalikan ke sistem
Oleh karena itu, pengalokasian memori untuk nama yang
bukan bertipe pointer disebut pengalokasian statis
Tipe pointer memungkinkan pengalokasian memori secara
dinamis
Artinya, ruang memori untuk elemen yang diacu oleh
nama bertipe pointer baru dialokasikan pada saat
diminta, dan memori yang dipakai dapat dikembalikan ke
sistem bila tidak diperlukan lagi
11. Pemrosesan Pointer #3
Prosedur Pengalokasian Ruang Memori
procedure AlokMem(output P : Alamat)
{Mengalokasikan ruang memori yang alamatnya P untuk elemen
yang alamatnya ditunjuk oleh P
K. Awal : sembarang
K. Akhir : P berisi alamat memori. Jika ruang memori tidak
tersedia lagi, maka P = Nil }
Prosedur Pengembalian Ruang Memori
procedure DeAlokMem(input P : Alamat)
{Mengembalikan ruang memori yang dipakai oleh elemen yang
alamatnya P
K. Awal : P terdefinisi, P ≠ Nil
K. Akhir : Ruang memori yang alamatnya P dikembalikan ke
sistem }
12. Contoh
ALGORITMA pointer1
DEKLARASI
PX : pointer to integer
type DataMhs : record <NIM:integer, Nama:string, Nilai:char>
PMhs : pointer to DataMhs
DESKRIPSI:
{Contoh pengalokasikan memori untuk PX}
AlokMem(PX) {memori untuk elemen bertipe integer dialokasikan}
{PX berisi alamat elemen tersebut}
Input(PX↑) {baca nilai dan simpan nilai tersebut ke elemen yang
alamatnya adalah PX}
Proses (PX↑) {proses yang lain untuk PX↑}
....
DeAlokMem(PX) {elemen yang ditunjuk oleh PX tidak
diperlukan lagi, kembalikan ruang memori
ke sistem}
13. {Contoh pengalokasikan memori untuk PMhs}
AlokMem(PMhs) {memori untuk elemen bertipe DataMhs
dialokasikan}
{PMhs berisi alamat elemen tersebut}
PMhs↑.NIM 1115323001
PMhs↑.Nama „Budi‟
PMhs↑.Nilai „B‟
Proses (PMhs↑) {proses yang lain untuk PMhs↑}
...
DeAlokMem(PMhs) {elemen yang ditunjuk oleh PMhs
tidak diperlukan lagi, kembalikan
ruang memori ke sistem}
14. Rangkuman
• Pointer tidak berisi data yang sesungguhnya, melainkan
berisi alamat dari data yang sesungguhnya berada
• Pointer dapat digunakan dengan terlebih dahulu
memengalokasikannya di memori
• Setelah pointer selesai digunakan, suatu pointer dapat
dihapus untuk membebaskan alamat memori yang
digunakannya agar dapat digunakan untuk keperluan
lainnya
15. Latihan Soal
Diberikan program sebagai berikut:
ALGORITMA pointer2
DEKLARASI
type Employee : record <Name:string, Position:char, Salary:longint>
P : pointer to Employee
DESKRIPSI:
AlokMem(P)
P↑.name „Saddam‟
P↑.position „S‟
P↑.salary 3000
output (P↑.name, P↑.position, P↑.salary)
DeAlokMem(P)
Jelaskan apa yang dikerjakan oleh program tersebut!
Ilustrasikan dalam bentuk gambar!
16. REFERENSI
1. Fathul Wahid. 2004. “Dasar-Dasar Algoritma dan
Pemrograman”. Yogyakarta: Andi Offset.
2. Heri Sismoro, Kusrini Iskandar. 2004. ”Struktur Data dan
Pemrograman dengan Pascal”. Yogyakarta: Andi Offset.
3. Insap Santosa. 2004. ”Struktur Data Menggunakan Turbo
Pascal 6.0”. Yogyakarta: Andi Offset.
4. Rinaldi Munir, Leoni Lidya. 2002. “Algoritma &
Pemrograman Dalam Bahasa Pascal dan C Buku 1”.
Bandung: Informatika.