google-site-verification: googleb4c12044f63f46ba.html STRUKTUR DATA POINTER Skip to main content

Featured

STRUKTUR DATA SEARCHING (PENCARIAN)

SEARCHING (PENCARIAN).       Dalam kehidupan sehari-hari sebenarnya kita sering melakukan pencarian data. Pencarian data sering juga disebut table look-up atau storage and retrieval information adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat mungkin.       Algoritma pencarian (searching algorithm) adalah algoritma yang menerima sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak ditemukan (unsuccessful). Ada beberapa pencarian yang akan kita uraikan disini: Pencarian Beruntun (Sekuensial Search). Pencarian Bagi dua (Binary Search). I. PENCARIAN BERURUTAN (SEKUENSIAL SEARCH).        Pencarian berurutan sering disebut pencari...

STRUKTUR DATA POINTER

     Variabel merupakan suatu nilai yang disimpan dalam memory yang dapat diakses dengan identifier. Variabel ini sesunggunhnya disimpan pada suatu alamat didalam memory. Dimana setiap alamat memory akan berbeda dengan yang lainnya (unik). Ketika suatu variable dideklarasikan , ada 3 hal yang dapat diassosiasikan yaitu: nama, type data dan alamat pada memori. 
Contohnya deklarasi :

Int n;

Berdasarkan pendeklarasian diatas, n adalah nama variable dengan type data integer yang biasa ditulis Int ,dan alamat tempat alokasi memori untuk n akan disimpan Dengan alamat memory dengan notasi hexadecimal seperti 0x8fd4fff4 yang dapat digambarkan sbb :


kotak pada gambar mewakili tempat penyimpanan variabel yang berada di memory, nama variabel berada disebelah kiri kotak, alamat variabel terdapat diatas kotak, dan jenis tipe data berada dibawahnya sedangkan apabila diketahui nilai variabel tersebut maka akan terdapat didalam kotak.


suatu nilai variabel dapat diakses melalui nama variabelnya, sebagai contoh kita dapat mengetahui nilai variabel dengan menuliskan statement cout << n; dan untuk mengakses suatu alamat suatu variabel dapat digunakan operator alamat & , sebagai contoh kita dapat mengetahui alamat variable pada memori dengan statement cout << &n;



Dapat disimpulkan bahwa nama variabel menunjukkan nilai suatu variabel secara lagsung sedangkan suatu pointer menunjukkan atau mengarahkan suatu nilai dengan tidak langsung yaitu dengan cara mereferensikannya.

Reference
Suatu Reference atau referensi adalah suatu alias atau dapat dikatakan sebagai nama lain sebagai petunjuk dari nama sebenarnya (sinonim). Reference dapat dideklarasikan menggunakan sintaks : Tipe& nama-ref = nama-var;

Dimana tipe & adalah tipe data, nama-ref adalah nama referensi, dan nama-var adalah nama variabel.
Sebagai contoh , pendeklarasian pointer reference : 

int& rn=n; // rn adalah sinonim untuk n


Pada deklarasi r dan rn adalah nama berbeda untuk suatu variabel yang sama; r dan rn memiliki nilai variabel yang sama. Seperti konstanta, reference harus diinisialisasi ketika dideklarasikan dan diinisialisasikan dengan variable bukan literal. 

int& rn=33; // ERROR: 33 is not a variable!

Ada beberapa compiler yang memperbolehkan pendeklarasian dengan literal, tetapi akan tetap muncul warning mengenai temporary variable yang harus dibuat untuk mengalokasikan memory yang dimana dapat dipanggil reference rn.

Meskipun reference harus diinisialisasikan pada variable, refernce bukan variable. Variable adalah suatu objek Reference adalah variable yang tidak terpisah karena akan mengarah pada satu nilai dan satu alamat.

Pada baris pertama output menunjukkan bahwa n dan rn memiliki alamat yang sama yaitu 0x8fb8fff4 dengan nama yang berbeda untuk satu objek. Sedangkan pada baris kedua output menunjukkan bahwa reference tersebut mengarah atau mereferensi pada suatu objek, pada program ini hanya terdapat satu objek yaitu yang terdapat pada alamat 0x8fb8fff4, kesimpulannya reference rn, rn2, rn3 mengarah ke objek yang sama.

Pada C++, operator reference & digunakan untuk 2 tujuan yang khusus :
  1. ketika diterapkan sebagai prefix atau awalan dari nama suatu objek.
  2. ketika diterapkan sebagai suffix atau akhiran pada suatu type T, yang menunjukkan type yang “ mengarah ke T “, sebagai contoh, int& adalah type yang “mengarah ke int”, pada 7 contoh reference 2 n dideklarasikan mempunyai tipe data int, dan rn dideklarasikan untuk memiliki type reference int.
C++ memiliki 5 type derived, ketika T adalah type maka:
  1.  const T adalah type derived “ constant T ”
  2. T() adalah type derived “ function returning T ”
  3. T[] adalah type derived “ array of T ”
  4. T& adalah type derived “ reference to T ”
  5. T* adalah type derived “ Pointer to T ”
POINTER.
Operator reference/& mengembalikan alamat memory dari suatu variable ketika digunakan. Kita juga dapat menyimpan suatu alamat pada suatu variable lain. Type dari variable yang dapat menyimpan suatu alamat disebut Pointer. Variabel pointer harus mendapatkan type “pointer to T“ , dimana T adalah type dari objek dimana pointer itu ditunjuk. Seperti yang sudah dijelaskan pada akhir penjelasan reference bahwa “pointer to T” disimbolkan dengan T*, sebagai contoh bahwa suatu alamat dari variable dengan tipe int dapat disimpan dalam variabel pointer dengan tipe int*.



Dapat digambarkan sbb :


Variabel ndideklarasi dengan angka 33 , dengan alamat 0x8fbafff4. variable pn dideklarasi sama dengan &n yang merupakan alamat dari n, jadi nilai dari pn adalah 0x8fbafff4 , tetapi pn adalah objek yang berbeda yang memiliki nilai alamat dari n , dikatakan berbeda karena pn memiliki alamat berbeda yaitu 0x8fbafff2. 


Variabel pn disebut “pointer” karena bernilai “points” atau alamat dari lokasi nilai yang lain. Nilai dari pointer tsb adalah suatu alamat. Alamat tersebut tergantung pada computer dimana program itu berjalan. Dengan gambar diatas dapat pula dijelaskan bahwa 2 variable n dan pn 9 & 1775 dimana pn adalah pointer dari n dan n memiliki nilai 33. pointer dapat dikatakan juga sebagai “locator” : yang mengalokasikan objek lain melalui alamat.

Operator Alamat (Address operator (&)).
Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompilerdan operating sysem pada saat runtime. Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of".
Contoh :
                  budi = &ani;


Akan memberikan variable budi alamat dari variable ani, karena variable ani diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan ani diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb :

ani = 25; 
susi = ani;
budi = &ani; 

Maka hasilnya :


Operator DeReference (*)
Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by".
Contoh :
                 sari = *budi;

(dapat dikatakan: "sari sama dengan nilai yang ditunjuk oleh budi") sari = 25, karena budi dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.


Ekspresi dibawah ini semuanya benar, perhatikan : 

ani == 25
&ani == 1776
 budi == 1776
 *budi == 25

Ekspresi
  • Pertama merupakan assignation bahwa ani=25;
  • Kedua, menggunakan operator alamat (address/derefence operator (&)), sehingga akan mengembalikan alamat dari variable ani.
  • Ketiga bernilai benar karena assignation untuk ted adalah budi = &ani;.
  • Keempat menggunakan reference operator (*) yang berarti nilai yang ada pada alamat yang ditunjuk oleh budi, yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar : *budi == ani 
*Operator of address or reference (&)
Digunakan untuk mengawali suatu variabel dan di baca sebagai "address of", sehingga: &variable1 dapat dibaca sebagai "address of variable1"

*Operator of dereference (*) 
Menunjukan apa yang terdapat pada alamat yang ditunjuk oleh suatu variabel. Dibaca sebagai "value pointed by".


Array dan Pointer
Identifier suatu array equivalen dengan alamat dari elemen pertama, pointer equivalen dengan alamat elemen pertama yang ditunjuk. Perhatikan deklarasi berikut :

int numbers [20];
int * p;

maka deklarasi dibawah ini juga benar :

 p = numbers;

p dan numbers equivalen, dan memiliki sifat (properties) yang sama. Perbedaannya, user dapat menentukan nilai lain untuk pointer p dimana numbers akan selalu menunjuk nilai yang sama seperti yang telah didefinisikan. p, merupakan variable pointer, numbers adalah constant pointer. Karena itu walaupun instruksi diatas benar, tetapi tidak untuk instruksi dibawah ini : numbers = p; karena numbers adalah array (constant pointer), dan tidak ada nilai yang dapat diberikan untuk identifier konstant (constant identifiers).







Comments

Popular Posts