Mengamati Deklarasi Pointer ke Array

Keterangan : 1. nama_pointer adalah pointer yang menunjuk array 2. nama_array adalah nama variabel array 3. tipe_data adalah tipe data yang digunakan pada array 4. iAwal adalah indeks awal dari array 5. iAkhir adalah indeks akhir dari array 6. Banyaknya elemen yang dimiliki array adalah iAkhir - iAwal Contoh 1. Pendeklarasian Pointer ke Array Var ipoin :integer; nilai : array[1..10] of integer; Keterangan : 1. ipoin adalah pointer yang menunjuk data dengan tipe integer 2. nilai adalah array yang memiliki elemen berjumlah 10 dengan tipe data integer Menginisiasi Pointer ke Array Untuk menginisiasi pointer ke Array dapat digunakan perintah sebagai berikut: nama_pointer:= nama_array[Index_awal]; Keterangan : 1. nama_pointer adalah pointer yang menunjuk array 2. nama_array adalah nama variabel array 3. iAwal adalah indeks awal dari array Contoh 2. Inisiasi Pointer ke Array ipoin := nilai[1]; Keterangan : 1. ipoin adalah pointer yang menunjuk data dengan tipe integer 2. nilai adalah array yang memiliki elemen berjumlah 10 dengan tipe data integer Dengan demikian pointer nama_pointer telah menunjuk elemen pertama dari array nilai Mengakses elemen Array dengan Pointer Untuk mengakses elemen Array dapat digunakan perintah sebagai berikut: nama_pointer Aritmatika Pointer pada Array Array menempati slot memori berturut-turut di memori komputer. Di sinilah aritmatika pointer berguna. Jika Anda membuat pointer ke elemen pertama, penambahan satu increment akan membuat sebuah titik ke elemen berikutnya. Misalkan ipoin adalah pointer integer yang menunjuk alamat dari suatu variabel integer yaitu 1000, maka dengan perintah: Incnama_pointer; Atau sama dengan: nama_pointer:=nama_pointer+1; Sekarang pointer ipoin menunjuk lokasi 1002 karena setiap ipoin ditambahkan satu, pointer akan menunjuk alamat integer selanjutnya, dimana letaknya 2 bytes dari alamat semula. Jika ptr menunjuk suatu variabel dengan type char, dengan alamat 1000, maka operasi diatas akan menunjuk alamat 1001 karena variabel char selanjutnya berada di 1001 atau 1 bytes dari alamat semula. Demikian juga sebaliknya untuk pengurangan satu decrement. Decnama_pointer; Atau sama dengan: nama_pointer:=nama_pointer-1; Contoh 3. Increment pada pointer Incipoin; Keterangan : Dengan perintah Inc maka sekarang pointer ipoin menunjuk elemen kedua dari variabel nilai Contoh 4. Decrement pada pointer Decipoin; Keterangan : Dengan perintah Dec maka sekarang pointer ipoin kembali menunjuk elemen pertama dari variabel nilai Selain operasi increment dan decrement, pada pointer juga berlaku operasi penambahan dan pengurangan, akan tetapi hanya untuk penambahan dan pengurangan dengan nilai integer saja. Jika suatu pointer ditambahkan 1 berarti pointer akan menunjuk alamat selanjutnya tepat yang letaknya sesuai bytes tipe data dari alamat semula, demikian juga jika ditambah dua berarti pointer akan menunjuk alamat yang berlokasi 2 kali ukuran bytes dari alamat semula. Misalnya Variabel pointer iptr menunjuk alamat 1000 dari suatu variabel yang bertipe data integer. Jika dilakukan operasi : iptr:=iptr+2; Maka pointer sekarang menunjuk alamat 1000+2x2 bytes=1004, dengan kata lain pointer menunjuk alamat yang berjarak 4 dari alamat semula, demikian juga seterusnya. Sama halnya dengan penambahan, Jika suatu pointer dikurangi 1 berarti pointer akan menunjuk alamat sebelumnya tepat dari alamat semula. Sehingga jika ditambah dua berarti pointer akan menunjuk alamat yang berlokasi 2 kali ukuran bytes sebelumnya dari alamat semula. Contoh 4. Penjumlahan pada pointer ipoin:= ipoin+3; Keterangan : Dengan perintah diatas maka apabila pointer awalnya menunjuk elemen pertama, sekarang pointer ipoin menunjuk elemen keempat dari variabel array nilai. Contoh 5. Pengurangan pada pointer ipoin:= ipoin-2; Keterangan : Dengan perintah diatas maka apabila pointer awalnya menunjuk elemen keempat, sekarang pointer ipoin menunjuk elemen kedua dari variabel array nilai.

4.2.2.2. Menanya

Berdasarkan kegiatan mengamati, ada beberapa hal yang bisa diperhatikan dan dibahas lebih lanjut. Beberapa pertanyaan yang berkaitan dengan Pointer ke Variabel adalah: 1. Dapatkah pointer bekerja jika Pointer menunjuk tipe data yang berbeda dari elemen suatu array. 2. Dapatkah kita menginisiasikan pointer pada elemen terakhir pada suatu array? 3. Dapatkah kita menginisiasikan pointer pada diluar dari indeks array? 4. Dapatkah kita mengubah atau memanipulasi nilai elemen pada array menggunakan pointer? Untuk menjawab pertanyaan-pertanyaan tersebut, siswa diharapkan bisa melakukan kegiatan mencoba berikut dengan bimbingan guru. 4.2.2.3. Mencoba Percobaan 1 Untuk mengetahui jawaban dari pertanyaan pertama yaitu Dapatkah pointer bekerja jika Pointer menunjuk tipe data yang berbeda dari elemen suatu array.. 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 PointerArray1; var isi:string; vect:array[1..4] of byte; i:byte; begin for i:=1 to 4 do begin writeMasukan elemen ke-,i, : ; readln ………; {Menyimpan masukan user ke dalam elemen ke I dari array vect} end; isi:= …………… {Variabel isi menunjuk elemen pertama dari array vect} writeln.......... ; {Menampilkan nilai yang ditunjuk pointer isi} readln; end. Hasil Percobaan Program PointerArray1 : 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.