Makalah Pointer
-
Upload
muhammad-nur-aprizana -
Category
Documents
-
view
1.106 -
download
24
Transcript of Makalah Pointer
1. POINTER DALAM PASCAL Variabel bertipe pointer adalah variabel yang nilainya merupakan alamat memori, yaitu alamat memori dari sebuah nilai dengan jenis/tipe data tertentu. Di bawah ini disajikan contoh pendeklarasian beberapa variabel bertipe pointer: var alamatNilaiInteger:^integer; var alamatNilaiReal:^real; var alamatNilaiString:^string; type TString20=string[20]; var alamatString20:^TString20; type TArrayInt=array[1..10] of integer; var alamatArrayInt:^TArrayInt; type TDataMhs=record NIM:array[1..10] of '0'..'9'; Nama:string[40]; IPK:real; end; var alamatDataMhs:^TDataMhs; Dalam contoh di atas, alamatNilaiInteger, alamatNilaiReal, alamatNilaiString, alamatTString20, alamatArrayInt dan alamatDataMhs, merupakan variabel bertipe pointer, karena dideklarasikan menggunakan tanda ^ (caret, tanda sisipan). Dengan demikian, bisa disimpulkan bahwa untuk mendeklarasikan variabel bertipe pointer, bentuk umumnya adalah: var namaVariabelPointer:^tipeDataNilaiYangDitunjukPointer
1
Terdapat 4 cara untuk mengisi nilai variabel pointer: 1. Menggunakan operator @ (address-of ). 2. Menggunakan variabel pointer yang lain. 3. Menggunakan prosedur new. 4. Menggunakan keyword NIL. Sedangkan untuk mengambil atau mengganti isi memori yang ditunjuk oleh sebuah variabel pointer, bentuknya adalah namaVariabelPointer^ (nama variabel pointer diikuti dengan tanda sisipan).
CONTOH 1 Perhatikan contoh program di bawah ini: program contoh_1; var a,b:integer; alamatXXX:^integer; begin a:=14; b:=5; alamatXXX:=@a; {alamatXXX diisi dg alamat memori yang ditempati variabel a} writeln(alamatXXX^); {output:14} {alamatXXX^ berarti "isi memori yang ditunjuk alamatXXX"} alamatXXX:=@b; {alamatXXX diisi dg alamat memori yang ditempati variabel b} writeln(alamatXXX^); {output:5} {alamatXXX^ berarti "isi memori yang ditunjuk alamatXXX"} end. CONTOH 2 Perhatikan contoh program di bawah ini: program contoh_2;
2
var a:integer; alamatXXX:^integer; begin a:=14; alamatXXX:=@a; {alamatXXX diisi dg alamat memori yang ditempati variabel a} writeln(alamatXXX^); {output:14} {alamatXXX^ berarti "isi memori yang ditunjuk alamatXXX"} a:=20; writeln(alamatXXX^); {output:20} {alamatXXX menunjuk memori yang digunakan untuk menyimpan...} {...nilai variabel a. Karena nilai a diganti menjadi 20...} {...maka isi memori yang ditunjuk alamatXXX kini menjadi 20} end. CONTOH 3 Perhatikan contoh program di bawah ini: program contoh_3; var a:integer; alamat1, alamat2:^integer; begin a:=14; alamat1:=@a; {alamat1 berisi alamat memori yang ditempati variabel a} alamat2:=alamat1; {alamat2 diisi dengan alamat memori yang ditunjuk alamat1...} {...yang berarti bahwa alamat2 juga menunjuk memori yang...} {...ditempati variabel a.} writeln(alamat2^); {output:14} alamat2^:=5; {Alamat memori yang ditunjuk alamat2 diisi dengan 5} writeln(alamat1^); {output:5} {Karena alamat1 menunjuk alamat memori yang sama dengan...} {...alamat2, maka alamat1^ juga bernilai 5} writeln(a); {output:5} {Karena alamat1 dan alamat2, keduanya menunjuk alamat...}
3
{...memori yang ditempati variabel a, maka nilai variabel...} {...a kini menjadi 5} end. CONTOH 4 Perhatikan contoh program di bawah ini: program contoh_4_Array_dan_Record; type TDataMhs=record NIM:string[10]; Nama:string[40]; IPK:real; end; TArrDataMhs=array[1..100] of TDataMhs; var ArsipMhs:TArrDataMhs; alamatArsipMhs:^TArrDataMhs; begin ArsipMhs[1].NIM:='123456790'; ArsipMhs[1].Nama:='Budi'; ArsipMhs[1].IPK:=3.5; alamatArsipMhs:=@ArsipMhs; writeln(alamatArsipMhs^[1].NIM); {output:123456790} alamatArsipMhs^[1].Nama:='Wati'; writeln(ArsipMhs[1].Nama); {output:Wati} end. CONTOH 5 (CONTOH YANG SALAH) Penggunaan variabel pointer yang akan menimbulkan pesan kesalahan adalah sebagai berikut: program CONTOH_5_YANG_MENIMBULKAN_ERROR_MESSAGE; var a:integer; alamat1,alamat2:^integer; alamat3:^real; begin alamat1:=@a;
4
alamat2:=alamat1; alamat3:=alamat1; {