ALGORITMA DAN PEMROGRAMAN 2
3 SKS
By : Sri Rezeki Candra Nursari
MATERI Teks/string Pointer Struktur Kelas Konstruktor dan Destruktor • Kelas dan Obyek • Overloading Operator • • • • •
• Inheritance (Pewarisan) • Polimorfisme • Template Fungsi dan Kelas • File • Sort • Search
POINTER Pertemuan 02
3 SKS
Alamat dan Pointer • Pointer berisi alamat bukan data, sedang variabel berisi data • Suatu pointer dalam program dimaksudkan untuk menunjuk ke suatu alamat memori • Alamat suatu variabel dapat diketahui dengan menambahkan operator alamat berupa simbol ‘&’ didepan nama variabel • Notasi 0x pada alamat variabel menyatakan notasi heksadesimal
Program contoh 01
Algoritma.........????? Pseudocode.......??????
Mendefinisikan Pointer • Pointer adalah variabel yang nilainya merupakan address dari variabel yang lain • Penggunaan pointer akan menjadi fatal apabila suatu pointer tidak mempunyai arah yang terdefinisi • Apabila mendefinisikan suatu variabel menjadi pointer, maka variabel tersebut mengandung address tempat variabel tersebut akan dialokasikan, tetapi bukan nilai address itu sendiri – Contoh : • Y sebuah variabel dengan type integer dan Y menunjuk ke PX. – PX = *X – Y = *PX
Mendefinisikan Pointer • Syntaks : tipe_data *nama_variabel; • tipe_data seperti pada tipe data variabel biasa nama_variabel adalah nama dari variabel pointer • Contoh : – int *pint; – char *pchar1, *pchar2; – float *pfl;
Perbedaan Pointer vs Referensi • Referensi : – merupakan alias dari suatu variabel – Referensi yang digunakan sebagai argumen berguna untuk mengubah nilai argumen dalam fungsi, tetapi dengan menambahkan operator & didepan nama argumen
• Pointer : – merupakan alamat dari suatu variabel – merupakan mekanisme yang biasa digunakan pada bahasa C untuk mengubah nilai dari dalam fungsi – Pointer yang digunakan sebagai argumen berguna untuk mengubah nilai argumen dalam fungsi
Mengisi dan Mengakses Variabel Pointer • Variabel pointer harus diisi dengan alamat dari variabel yang ditunjuk supaya dapat menunjuk ke variabel tersebut • Contoh: int vint = 63; int *pint; pint = &vint; pint diisi dengan alamat dari vint • Nilai vint dapat diakses melalui pint dengan menggunakan operator * cout << pint; memunculkan alamat vint cout << *pint; memunculkan nilai vint yaitu 63 *pint = 66; merubah nilai vint menjadi 66
Program contoh 02
Algoritma.........????? Pseudocode.......??????
Pointer void • Merupakan Pointer yang tak bertipe • Dengan meletakkan kata kunci void pada bagian penentu tipe pointer • Contoh –Void *x –Merupakan pernyataan untuk mendefinisikan x sebagai variabel pointer void
Program contoh 03
Algoritma.........????? Pseudocode.......??????
Array Pointer • Dapat digunakan untuk menyimpan sejumlah pointer • Contoh –char *namahari[7] • Mendefinisikan array nama hari yang berisi 7 buah elemen berupa pointer • Pointer ini menunjuk ke data yang bertipe char
Program contoh 04
Algoritma.........????? Pseudocode.......??????
Pointer • Pointer terbagi menjadi “ 1. Pointer dan variabel statis a. Pointer menunjuk variabel data b. Pointer menunjuk pointer
2. Pointer dan variabel dinamis a. Pointer menunjuk variabel data dinamis tunggal b. Pointer menunjuk struktur
1.a. Pointer menunjuk variabel data • Program ini menyiapkan variabel dalam memory – Nama :n – Type data : integer – Kemudian mengisi variabel n dengan nilai integer 44 – Pointer pn, menyimpan alamat variabel n
Program contoh 05
Algoritma.........????? Pseudocode.......??????
Program contoh 06
Algoritma.........????? Pseudocode.......??????
1.b. Pointer menunjuk pointer • Program ini menyiapkan variabel dalam memory – Nama :n – Type data : integer – Kemudian mengisi variabel n dengan nilai integer 44 – Pointer pn, menyimpan alamat variabel n
Program contoh 07
Output
Algoritma.........????? Pseudocode.......??????
2.a. Pointer menunjuk variabel data dinamis tunggal
• Program ini menyiapkan variabel dalam memory – Pointer pn, menunjuk suatu tempat (area) dimana area tersebut tidak diberi nama – Atau Pointer pn, mengisi variabel dengan nilai integer 44
• Dikatakan dinamis karena dapat disiapkan/disisip dan dapat dihapus pada saat program sedang dijalankan • Program yang dapat membentuk sebuah area tanpa nama seukuran (sizeof), dimana alamat area dicatat dalam pointer pn
Program contoh 08
Algoritma.........????? Pseudocode.......??????
2.b. Pointer menunjuk struktur • Yang bersifat dinamis, bukan saja sebuah variabel tunggal, tapi dapat juga merupakan suatu structure variabel • Pointer P dan pointer Q, disiapkan untuk menunjuk (mencatat alamat/address) structure variabel yanng biasa disebut node. • Dalam struktur terdiri dari 2 variabel, yaitu NilaiUTS dan NilaiUAS • Untuk menunjuk sebuah elemen, pointer menggunakan tanda panah. Tanda panah ini dibuat dengan dua karakter yaitu tanda kurang (-) dan tanda lebih besar (>)
Program contoh 09
Algoritma.........????? Pseudocode.......??????
Tugas Teori Pertemuan 02 1. Apa yang Anda ketahui tentang pointer 2. Jelaskan fungsi simbol & pada C++ penggunaan pointer 3. Jelaskan fungsi simbol * pada C++ penggunaan pointer 4. Apa yang Anda ketahui tentang NULL Pointer