Saturday, April 25, 2015

Pointer Berbintang di C++ - Part I

Yang dimaksud pointer berbintang disini adalah ******p. Secara sederhana jika hanya mempunyai satu bintang *p, maka assignnya p=&q, dengan q adalah variabel biasa tanpa bintang yang mempunyai jenis variabel yang sama dengan p. Mari kita buat contohnya di dev c++ berikut :
Kalo programmnya di running (tekan F11) :
Hasilnya :
Terlihat pointer p kita bernilai 17 yang nilainya sama dengan variabel q yang nilainya juga 17. So disini kelihatan bahwa untuk pointer bintang 1 ini diassign dengan variabel tanpa bintang. Heumm... mari kita lihat masing2 alamat dari variabel p dan q, untuk itu tambahkan kode berikut dalam program :
Biar g' salah paham, Alamat fisik maksudnya adalah lokasi/alamat suatu variabel dalam memory komputer kita. Dari potongan program di atas (line 11 - 12), klu kita mw ngeliad alamat fisik, itu pake tanda ampersand(&) didepan variabelnya, baik itu untuk pointer ataupun non pointer. Contohnya &p yang berupa pointer dan &q yang bukan pointer. Dan untuk pointer, klu mw ngeliad alamat yang ditunjuknya g' ush pake apa-apa didepannya lngsung aj variabelnya. Klu kita running hasilnya :
Nah...dari gambar diatas juga kliatan klu alamat yang ditunjuk oleh pointer p adalah alamat dari variabel q yaitu 0x28FF08. Dan kalo alamat yang ditunjuk oleh pointer p sama dengan alamat q, berarti kedua variabel tersebut saling berhubungan. Makanya klu misalkan q kita ubah nilainya, maka nilai dari pointer p pun ikut berubah. Berikut contohnya :
Klu di-running :
Terus klu pointer p yang nilainya di ubah :
Daan.. hasilnya :
Kliatan klu nilai pointer p atau q salah satunya diubah, maka yang lain juga ikut berubah....

Ok... mari melangkah ke bintang pointer bintang 2............................
Sederhananya pointer bintang 2 itu adalah pointer yang dapat menyimpan alamat dari pointer bintang 1. Contohnya :
Dalam kode diatas, pointer bintang 1 b diassign alamat dari variabel c, selanjutnya alamat b ini dimasukin ke pointer bintang 2 a seperti yang terlihat pada line 35. Hasilnya :
**a menampilkan nilai dari c yang sebelumnya diambil dari b. *a sendiri masih menyimpan alamat yaitu alamat dari variabel c. Disini kita lihat bahwa *a itu menyimpan alamat fisik dari variabel bukan pointer. Jadi bisa saja *a = &c. Contohnya seperti terlihat dalam kode berikut :
Di line 46 dibuat variabel baru yaitu d yang kemudian. Berarti sekarang nilai a itu adalah 55 yang berasal dari d. Dan karena a terhubung juga dengan b, maka nilai b juga ikut berubah menjadi 55 yang menunjukkan bahwa alamat yang disimpan oleh b adalah dari variabel d seperti terlihat di bawah :
Nah masih ada satu lagi cara assign ke pointer bintang 2 ini yaitu *a = e, dimana e adalah pointer bintang 1. Sebenarnya cara assign seperti ini hampir sama dengan a = &b (line 35).
Klu di-run :
Nah....terlihat *a itu nyimpen alamat dari variabel yang simpen oleh pointer e. Alamat yang disimpan oleh e sendiri adalah alamat dari variabel f yang nilainya 90. Makanya **a bernilai 90. Dan terlihat juga nilai a = 0x28FF00 yang merupakan alamat dari fisik dari pointer b. Lhooooo...berarti a dan masih terhubung dunk, dan pointer b sendiri menyimpan alamat fisik dari variabel d (lihat hasil kode line 53). Sooo..kalo nilai **a = 90, berarti nilai b juga adalah 90. Dan karena b terhubung dengan d berarti d juga jadi 90....?? Mari kita lihat alamat yang disimpen oleh pointer b dan nilainya seperti pada kode di bawah :
Hasil :
Terlihat nilai sesuai dugaan yaitu 90. Tetapi nilai d tetap 55. Karena seperti terlihat diatas, alamat fisik yang disimpen oleh b sekarang bukanlah alamat dari d tetapi alamat f. Berarti b dan d itu sudah tidak terhubung tepat ketika kode diline 58 dieksekusi, *a = e; Dari sini kita dapat membuat diagram sebagai seperti terlihat di bawah :
Cukup sekian untuk part I ini.....
Kesimpulan sementara adalah pointer bintang n dapat diassing dengan pointer bintang (n -1)

Go to Part II

Friday, April 24, 2015

Above - Over

Kata Above dan over dua-duanya mempunyai arti yang sama yaitu "diatas". Namun ada beberapa aturan penggunaan untuk kedua kata tersebut, antara lain :
1. Untuk menyatakan melintasi, digunakan kata "over". Contoh :
  • The plane is flying over Sulawesi island
  • Electricity cables stretch over the fields
2. Untuk menyatakan sesuatu yang lebih tinggi dari yang lain, maka dapat digunakan "above" atau "over". Contoh :
  • The water is coming up above/over our knees.
  • Did you see the holicopter above/over my home ?
  • The lamp is over/above the table
  • I have bought a house above/over the mountain. hohoho..
3. Untuk menyatakan angka, ukuran atau kuantitas, maka digunakan "over" yang maknanya "lebih dari". Contoh :
  • There were over 300,000 people at stadium
  • You have to be over 20 to enter this room
  • I saw that she was driving over 330 mph
  • Mr. Hisoka has been sleeping for over 1 hour
4. Untuk menyatakan ukuran yang bersifat vertikal (atas-bawah) seperti ukuran temperature dan tinggi, maka digunakan "above". contoh :
  • Current temperature is seventeen degrees above zero
  • Her IQ is above average in intelligence
  • The himalaya mountain summit is about xxxx metres above sea level
5. Untuk menunjukkan sesuatu yang berada diatas dan menyentuh digunakan "above" atau bisa juga "ON", tetapi jika tidak menyentuh digunakan "over". Contoh :
  • My Poipo is flying over my house (tidak menyentuh)
  • The plate is above the table (menyentuh)
Namun, kata over itu dapat digunakan pada sesuatu yang bersentuhan juga, cuman harus menutupi. Contoh :
  • Itachi put on a coat over his pyjamas. Terlihat coat itu menutupi pyjamas dan coat itu bersentuhan dengan pyjamas.
  • There is a cloud over Bandung city. Disini cloudnya menutupi kota Bandung hehehe... :D