Selasa, 26 Februari 2019

ALGORITMA DAN PEMOGRAMAN II "POINTER"

"TI Politala ALPRO II 2C"
[ Tugas Kuliah ] Algoritma dan Pemograman II
"POINTER"


                                                                       POINTER

    A.    Konsep Dasar Pointer
Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.  Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer).
Pointer berisi alamat dari suatu data, bukan data seperti pada variabel.  Variabel disimpan dalam memori, dan akan ditempatkan pada alamat tertentu. Pointer dalam program digunakan untuk menunjuk ke suatu alamat memori. Pointer adalah  sebuah  variabel  yang  berisi  alamat  lain.  Suatu  pointer  dimaksudkan untu menunjukan  ke  suatu  alamat  memori  sehingga  alamat  dari  suatu  variabel  dapat  diketahui dengan mudah.  
Keunggulan Menggunakan Pointer : 
1.  Penanganan terhadap array dan string akan lebih singkat dan efisien.   
2.  Memungkinkan suatu fungsi untuk menghasulkan lebih dari satu nilai.   
3.  Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain.   
4.  Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik.    
5.  Memungkinkan untuk berhubungan langsung ke hardware.  
6.  Untuk menciptakan data structure yang kompleks 
7.  Memungkinkan untuk berhubungan langsung dengan parameter command line. 
Dengan  menggunakan  pointer  yang  benar,  anda  dapat  menyusun  sebuah  program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer  akan  mengakibatkan kesalahan fatal pada program anda. Karena pointer    dapat  langsung  menunjukan  pada  lokasi  memori,  jika  lokasi  yang  ditunjuk  salah,  berarti data  yang  diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.
Selain itu, Pointer adalah sebuah variabel yang berisikan alamat memori (bukan nilai) atau dengan kata lain dapat dikatakan bahwa pointer adalah suatu variabel penunjuk ke alamat memori tertentu. Cara pendeklarasian pointer dalam bahasa C adalah dengan menambakan tanda asterisk (*) didepan nama pointer, seperti berikut:
Tipe_data *nama_pointer; atau  Tipe_data* nama_pointer;
           Keterangan :
1.      Tipe_data dapat berupa sembarang tipe seperti halnya pendefinisian variabel.
2.   Nama_pointer adalah nama variabel pointer yang akan digunakan. * adalah operator memori untuk mengembalikan nilai variabel pada alamatnya yang ditentukan oleh operand. Contoh: int *pint; atau  int* pint;  char *pchr; atau  char* pchr; 

          B.     Mendeklarasikan Variabel Pointer
Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut :
tipe *nama_variabel
Dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab-bab sebelumnya, maupun bab-bab berikutnya.  Adapun nama_variabel adalah nama dari variabel pointer. 
                Contoh :
int *px;    / *contoh 1 */ char *pch1, *pch2;  / *contoh 2 */

Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int, sedangkan contoh kedua masing pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char.

C.       Mengatur Pointer agar Menunjuk ke Variabel Lain
Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk.  Untuk menyatakan alamat dari suatu variabel, operator & (operator alamat, bersifat unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel.  Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka :
&x
Keterangan :
        “alamat dari variabel x”.  Adapun contoh pemberian alamat x ke suatu variabel pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int).
Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x.

D.           Mengakses Isi Suatu Variabel Melalui Pointer
Jika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung).  Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol * (bersifat unary).  Contoh penerapan operator * yaitu :
*px
Yang menyatakan “isi atau nilai variabel/data yang ditunjuk oleh pointer px” .  Sebagai contoh jika y bertipe int, maka sesudah dua pernyataan berikut :
px = &x; y = *px;
                     y akan berisi nilai yang sama dengan nilai x.

E.       Mengakses dan Mengubah isi  Suatu Variabel Pointer
Contoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak langsung (yaitu melalui pointer). Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float.
d = 54.5;
                     Digunakan untuk mengisikan nilai 54,5 secara langsung ke variabel d.  
                     Adapun  :
pd = &d;
Digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd  menunjuk ke variabel d. Sedangkan pernyataan berikutnya  :
*pd = *pd + 10;  (atau: *pd += 10; )
      Merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas berarti “jumlahkan yang ditunjuk pd dengan 10 kemudian berikan ke yang ditunjuk oleh pd”, atau identik dengan pernyataan :
d = d + 10;
                     Akan tetapi, seandainya tidak ada instruksi 
pd = &d; 
                    maka pernyataan  :
*pd = *pd + 10; 
                   tidaklah sama dengan :
d = d + 10;

      F.     Pointer dan Array (pointer to array)
Hubungan antara pointer dan array  pada C sangatlah erat. Sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran hubungan antara pointer dan array. Misalnya dideklarasikan di dalam suatu fungsi  :
static int tgl_lahir[3] = { 01, 09, 64 };


     G.    Array dari Pointer (Array of Pointer)
Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh: char *namahari[10];  merupakan pernyataan untuk mendeklarasikan array pointer. Array namahari terdiri dari 10 elemen berupa pointer yang menunjuk ke data bertipe char.

     H.    Pointer dalam Fungsi
            Pointer dan kaitannya dengan fungsi yang akan dibahas berikut meliputi :
1.      Pointer sebagai parameter fungsi.
2.      Pointer sebagai keluaran fungsi.

      I.       KESIMPULAN
1.   Tipe variabel pointer adalah tipe variabel yang berisi alamat dari variabel yang sebenarnya.
2.    Tipe variabel pointer harus sama dengan tipe varibel yang ditunjuk.
3.   Hubungan antara pointer dan array  pada C sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer .
4.      Varibel pointer bisa berupa string, array atau tipe variabel yang lainnya.
5.      Suatu pointer bisa saja menunjuk ke pointer lain (pointer to pointer).
               

Sumber :
 1. http://yuliana.lecturer.pens.ac.id/Konsep%20Pemrograman/Teori/T12-Pointer(1).pdf

Tidak ada komentar:

Posting Komentar