Mengamati Mencoba Percobaan 1 Aktivitas belajar siswa

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.