Gambar 1. 4. Representasi pointer pada memori 1.6.2.2. Menanya
1. Bagiamana mengarahkan pointer supaya sebuah pointer bisa menujuk suatu fungsi? 2. Bisakah pointer fungsi yang sudah ditentukan parameternya diarahkan ke fungsi dengan paramater yang
tipenya berbeda? 3. Bisakah pointer menunjuk ke suatu prosedur?
1.6.2.3. Mencoba Percobaan 1
Untuk mengetahui jawaban dari pertanyaan pertama, salin dan lengkapilah program berikut ke dalam Freepascal, kemudian lakukan kompilasi Compile Alt+F9. Jika kompilasi menghasilkan
pesan kesalahan maka perhatikan kesalahan yang terjadi. Jika kompilasi berhasil lanjutkan dengan menjalankan program Ctrl+F9 dan amati hasilnya.
program PointFunct1; uses crt;
definisikan tipe point adalah pinter ke suatu fungsi type point=Functionx:word:word;
deklarasikan variabel a bertipe point var a:point;
function ASDx:word:word; begin
x:=xx; ASD:=x;
end; Program Utama
begin
arahkan a supaya menunjuk fungsi ASD a:=ASD;
panggil fungsi ASD dengan menggunakan pointer a
5
..0023
..0030
Alamat
Var a integer Var p pointer
Var pf pointer ..0023
..0024 ..0025
..0026 ..0027
..0028 Cell Memori
Entitas
Fungsi A Awal fungsi A
..0029 ..0030
..0031 ..0032
..0033 ..0034
writelna6; readln;
end.
Hasil Percobaan Program PointFunct1
: Hasil Kompilasi beri tanda silang pada bagian yang sesuai
Berhasil, tanpa kesalahan Tidak berhasil, ada kesalahan
Output Program:
Percobaan 2
Untuk mengetahui jawaban dari pertanyaan kedua, salin dan lengkapilah program berikut ke dalam Freepascal, kemudian lakukan kompilasi Compile Alt+F9. Jika kompilasi menghasilkan
pesan kesalahan maka perhatikan kesalahan yang terjadi. Jika kompilasi berhasil lanjutkan dengan menjalankan program Ctrl+F9 dan amati hasilnya.
program PointFunct2; uses crt;
type point=Functionx:word:word; pointProc=Procedure;
var a:point; b:pointProc;
nama:PChar=Dhidhi Pambudi; function ASDx:word:word;
begin x:=xx;
ASD:=x; end;
function BCDy:byte:byte; begin
BCD:=yyy; end;
begin a:=ASD;
writelna6; a:=BCD;
writelna3; readln;
end.
Hasil Percobaan Program PointFunct2 :
Hasil Kompilasi beri tanda silang pada bagian yang sesuai Berhasil, tanpa kesalahan
Tidak berhasil, ada kesalahan
Salin pesan asli kompilasi disini: .....................................................................................................................................................
..................................................................................................................................................... .....................................................................................................................................................
Letak kesalahan
baris, kolom Terjadi karena
Bagiamana cara memperbaiki kesalahn tersebut?
Percobaan 3
Untuk mengetahui jawaban dari pertanyaan ketiga, salin dan lengkapilah program berikut ke dalam Freepascal, kemudian lakukan kompilasi Compile Alt+F9. Jika kompilasi menghasilkan
pesan kesalahan maka perhatikan kesalahan yang terjadi. Jika kompilasi berhasil lanjutkan dengan menjalankan program Ctrl+F9 dan amati hasilnya.
program pointFunct3; uses crt;
type point=Functionx:word:word; pointProc=Procedure;
var a:point; b:pointProc;
nama:PChar=Dhidhi Pambudi; function ASDx:word:word;
begin x:=xx;
ASD:=x; end;
function BCDy:word:word; begin
BCD:=yyy; end;
procedure FGH; begin
writelnASD2-BCD3; end;
function Power3x:word: integer; stdcall; external subsku name Pangkat3;
begin a:=ASD;
writelna6; a:=BCD;
writelna3; b:=FGH;
b; writelnPower33;
readln; end.
Hasil Percobaan Program PointFunct3 :
Hasil Kompilasi beri tanda silang pada bagian yang sesuai Berhasil, tanpa kesalahan
Tidak berhasil, ada kesalahan
Output Program:
1.6.2.4. Mengasosiasi menalar
Setelah siswa melakukan percobaan yang sesuai dengan pertanyaan yang ada, siswa diharapkan melakukan kegiatan menalar yang bisa dilakukan secara individu oleh masing-masing
siswa atau bisa juga berkelompok. Beberapa hal yang bisa dijadikan arahan untuk menalar: 1. Perhatikan hasil kompilasi, apakah berhasil atau justru terjadi kesalahan.
2. Perhatikan urutan proses dari setiap program yang sudah dicoba. 3. Perhatikan letakposisi kesalahan, coba pikirkan mengapa terjadi kesalahan pada posisi
tersebut. 4. Cobalah membuat kesimpulan dari percobaan yang telah dilakukan.
1.6.3. Rangkuman
2. Pointer ke fungsi adalah sebuah pointer yang digunakan untuk menunjuk suatu funsi yang sesuai, sehingga pemanggilan fungsi tidak harus dengan menyebut nama fungsi secara
langsung tetapi cukup menggunakan pointernya. Meski sebuah fungsi sudah ditunjuk oelh suatu pointer tetapi tetap diperkenankan memanggil fungsi dengan nama asli fungsi tersebut.
3. Untuk mengarahkan pointer supaya menunjuk ke sebuah fungsi, cukup gunakan operator . Langkah-langkahnya adalah:
i. Deklarasikan variabel bertipe pointer ke fungsi, atau bisa didahului dengan mendefinisikan tipe data sendiri yaitu tipe data pointer ke fungsi.
ii. Arahkan varibel pointer ke sebuah fungsi yang sesuai dengan operator . iii. Gunakan pointer ke fungsi untuk memanggil atau menggunakan fungsi tersebut.
4. Sebuah pointer fungsi yang sudah ditentukan tipe parameternya tidak bisa digunakan untuk menunjuk fungsi lain yang tipe parameternya berbeda. Nama variabel dari parameter fungsi
boleh berbeda tetapi tipe harus sama. 5. Sebuah pointer juga bisa menunjuk suatu prosedur dengan cara yang serupa dengan
bagaimana sebuah pointer menunjuk suatu fungsi.
1.6.4. Tugas
1. Coba pikirkan bagaimana sebuah pointer secara bergantian bisa menunjuk ke fungsi-fungsi lain yang tipe parameternya berbeda-beda. Buatlah dalam contoh program.
2. Coba pikirkan bagaimana sebuah pointer bisa menunjuk prosedur yang tipe parameternya sudah ditentukan. Buatlah dalam contoh program.
3. Modifikasilah fungsi dan prosedur buatanmu dari pelajaran-pelajaran sebelumnya agar bisa digunakan dengan pointer.