Jumat, 06 Januari 2012

Struct, Array, dan Pointer

Pengenalan Struktur Data
Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasioperasi spesifik dapat dilaksanakan pada data tersebut.

Pengenalan Algoritma
Algoritma adalah barisan langkah-langkah perhitungan dasar yang mengubah masukan (dari beberapa fungsi matematika) menjadi keluaran. Contoh :
Perkalian
Input  :  integer positif a , b
Output  : a  X b
Algoritma perkalian :  
Contoh kasus :  a  = 365, b  = 24
Metode 1 : 365 * 24 = 365 + (365 * 23) 
            = 730 + (365 * 22)
            = ...... 
            = 8760 + (365 * 0) 
            = 8760
Array
Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Array umumnya disimpan di memori komputer secara kontigu (berurutan). Deklarasi dari array adalah sebagai berikut:
int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer. Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung. Nilai dimasing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.
Terdapat dua tipe operasi, yaitu:
1. Operasi terhadap satu elemen/posisi dari array
2. Operasi terhadap array sebagai keseluruhan

Dua operasi paling dasar terhadap satu elemen/posisi adalah
1. Penyimpanan nilai elemen ke posisi tertentu di array
2. Pengambilan nilai elemen dari posisi tertentu di array

Penyimpanan dan Pengambilan Nilai
Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan
pengambilan nilai elemen pada posisi tertentu di array.
Contoh: 
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A 
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A

Keunggulan dan Kelemahan Array
Keunggulan array adalah sebagai berikut:
  1. Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara
    langsung tanpa melalui elemen-elemen lain. 
  2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elementetangga, baik elemen pendahulu atau elemen penerus
  3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien
Kelemahan array
Array mempunyai fleksibilitas rendah, karena array mempunyai batasan
sebagai berikut:
  1. Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain 
  2. Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis
  • Tidak efisien dalam penggunaan memori 
  • Menyiakan banyak waktu komputasi 
  • Pada suatu aplikasi, representasi statis tidak dimungkinkan
Pointer
Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi integer. 
Deklarasi pada C adalah:

int *IntegerPointer;

Tanda asterik (*) yang berada sebelum nama variable IntegerPointer menandakan ‘pointer pada suatu int’.  Jadi deklarasi diatas berarti ‘definisikan sebuah tipe yang terdiri dari pointer bertipe integer yang bernama IntegerPointer’. Apabila didepannya ditambahkan typedef sebagai berikut

Typedef int *IntegerPointer;

Berarti  IntegerPointer merupakan suatu tipe pointer berbentuk integer.
Apabila akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan integer :

IntegerPointer A, B;

Berarti kompiler C akan berisi nilai dari variable A dan B yang ‘menunjuk ke integer’. Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang  kosong dan untuk membuat A dan B menunjuk tempat tersebut, digunakan prosedur dinamis untuk alokasi penyimpan yang disebut malloc 

A = (IntegerPointer *) malloc (sizeof(int)); 


B = (int *) malloc (sizeof(int));

    
Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk pointer pada variable A.  Untuk menuimpan angka 5 pada blok penyimpan integer itu melalui pointer A, digunakan pernyataan : 
*A = 5;


Linked list adalah salah satu struktur data yang paling fundamental.  Linked list terdiri dari sejumlah kelompok elemen (linked ) dengan urutan tertentu.  Linked list sangat berguna untuk memelihara sekelompok data, semacam array, tetapi linked list lebih menguntungkan dalam beberapa kasus.  Linked list lebih efisien  dalam proses penyisipan (insertion ) dan penghapusan (deletion ).  Linked list juga menggunakan pengalokasian penyimpan secara dinamis, dimana penyimpan dialokasikan pada saat waktu berjalan (runtime).

Struktur
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama, dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan.

Tidak ada komentar:

Poskan Komentar