Pemrograman Komputer Interaktif: Penggunaan Pointer di C++

Pointer di C++ · Materi Interaktif
Pertemuan 10 · Pemrograman C++ untuk Fisika

Pointer tidak menyimpan data, melainkan alamat tempat data berada. Atur ke mana pointer p menunjuk, baca dan tulis melalui *p, lalu geser dengan p++ untuk melihat apa yang terjadi di memori.

Ringkasan konsep

Setiap variabel menempati memori dan punya alamat, yaitu alamat byte pertamanya. Pointer adalah variabel yang menyimpan alamat: double *p; dibaca "p adalah pointer ke double". Operator &x memberi alamat x, dan dereferensi *p memberi isi alamat yang ditunjuk p. Jika p = &x, maka *p adalah nama lain untuk x.

Pada array, p + n melompat n elemen, yaitu n × sizeof(tipe) byte, dan kompilator menerjemahkan arr[i] menjadi *(arr + i). Pointer harus menunjuk alamat yang sah atau bernilai nullptr sebelum dipakai; dereferensi pointer liar atau null adalah perilaku tak terdefinisi.

1

Presedensi * dan ++

Empat ekspresi yang tampak mirip ini mengubah hal yang berbeda: ada yang memajukan pointer, ada yang menaikkan data. Terapkan berurutan atau acak, lalu amati x, posisi p, dan isi array.


      
x = –p = a + 0
2

Notasi pointer dan notasi array

Pilih ke mana ptr menunjuk di dalam array. Tabel menghitung setiap ekspresi seperti yang dilakukan kompilator, dan menandai ekspresi yang keluar dari batas array.


      
k = 1
EkspresiDiterjemahkan menjadiHasil

Ingat: * lebih kuat daripada +, jadi *ptr + 2 berarti (*ptr) + 2.

3

begin() dan end(): kapan benda berbalik arah?

Pointer p berjalan dari begin(v) sampai end(v), yaitu satu posisi setelah elemen terakhir. Setiap kecepatan negatif dicetak beserta waktunya t = (p − awal) × dt.


        
p = awal

        
4

Pointer ke fungsi: satu integrator, banyak besaran

Fungsi integral(double (*f)(double), a, b, n) menerapkan aturan trapesium pada fungsi apa pun yang alamatnya dikirim lewat f. Pilih fungsinya, ubah batas dan banyak pias, lalu bandingkan dengan hasil analitik.

n = 4
Hasil integrator
–
Hasil analitik
–

5

Kuis

Soal 1 dan 2 diperiksa otomatis. Untuk soal 3, tulis programnya sendiri terlebih dahulu, baru buka jawabannya.

Soal 1 · Tuliskan perintah C++ (x adalah variabel int)

Soal 2 · Apa keluaran program berikut?


      

Soal 3

Tulislah program yang membaca suhu harian bulan Januari (31 hari) dan menyimpannya dalam sebuah array. Kemudian program membaca sebuah suhu batas dan menampilkan nomor hari pertama yang suhunya lebih rendah daripada batas itu. Jika tidak ada, tampilkan pesan yang sesuai. Proses array dengan aritmetika pointer.

Lihat jawaban soal 3

        

Jika loop selesai tanpa break, p sama dengan suhu + HARI, yaitu posisi setelah akhir yang sah sebagai penanda. Nomor hari dihitung dari p − suhu + 1.

6

Tugas

Simulasi di bawah memperlihatkan perilaku yang diharapkan dari program Anda. Kodenya tetap harus Anda tulis sendiri dalam C++, dan seluruh akses data harus melalui pointer.

Tugas 1 · Bagian pecahan bilangan (U.8.3)

Gunakan sebuah pointer untuk membaca bilangan double dan tampilkan bagian pecahannya sebagai bilangan positif. Masukan −7.21 menghasilkan 0.21.

LangkahEkspresiNilai

    

Tugas 2 · Tiga bilangan negatif berurutan (U.8.5)

Gunakan tiga pointer untuk membaca tiga bilangan bulat. Masukan yang tidak negatif ditolak dan diminta ulang. Lalu periksa apakah ketiganya berurutan naik, misalnya −5, −4, −3.

Tulis urutan masukan yang diketik pengguna, dipisahkan koma. Masukan tak negatif akan ditolak seperti pada program.


    
Materi pendukung Pertemuan 10 mata kuliah pemrograman untuk mahasiswa S-1 Fisika FMIPA USU. Acuan: Introduction to C++, Bab 8 Pointers (CRC Press). Diterbitkan di inspirasains.com.

Posting Komentar

Lebih baru Lebih lama