Dalam pemrogaman ada beberapa macam bahasa pemrogaman. Salah satunya adalah bahasa pemrogaman C++. Dalam bahasa pemrogaman C++ terdapat penggunaan variabel array. Namun penggunaan array tidak hanya pada pemrogaman, array juga banyak digunakan untuk berbagai macam struktur data, seperti database.
Selanjutnya kita harus memahami terlebih dulu pengertian struktur. Pada makalah ini kami menuliskan telebih dulu pngertian dari struktur karena hal ini sangat berhubungan erat dengan array yang nantinya berujung pada pengertian struktur array, apa yang disebut array, bagaimana struktur penulisannya, apa saja bentuk-bentuk array, semuanya akan kita pelajari dalam makalah ini.
Pada makalah ini kami merumuskan beberapa hal :
Array atau larik sendiri di definisikan sebagai pemesanan alokasi memory berurutan. Definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian. Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
Dari perngertian struktur dan pengertian array di atas, maka dapat ditarik kesimpulan bahwa struktur array adalah kumpulan elemen-elemen data yang digabungkan menjadi suatu kesatuan yang memiliki tipe homogen (sama).
a. Mempunyai batasan dari pemesanan alokasi memori (bersifat statis).
b. Mempunyai tipe data sama (bersifat homogen).
c. Dapat diakses secara acak.
Ada tiga hal yang harus diketahui dalam pendeklarasian, yaitu :
a. Type data array.
b. Nama variable array.
c. Subkrip / index array.
Contoh deklarasai array adalah sebagai berikut :
int A[10], artinya variabel A adalah kumpulan data sebanyak 10 bilangan bertipe integer.
Pada dasarnya penggunaan array sangat luas tidak hanya digunakan pada bahasa pemrogaman.
Contoh penggunaan array sebagai berikut :
a. Array digunakan untuk suatu database, contoh : tabel.
b. Array digunakan untuk operasi matematika seperti vektor.
c. Digunakan dalam bentuk struktur data lain, contohnya list.
Pengurutan atau sorting adalah proses yang paling sering dilakukan dalam pengolahan data, pengurutan dibedakan menjadi dua, yaitu :
a. Pengurutan internal
Pengurutan dilakukan terhadap sekumpulan data di media memory internal komputer di mana data dapat diakses elemennya secara langsung.
b. Pengurutan eksternal
Pengurutan data di memory sekunder. Biasanya data bervolume besar sehingga tidak mampu dimuat semuanya di memory utama.
Operasi terhadap elemen array dilakukan dengan pengaksesan langsung. Nilai di masing-masing posisi elemen dapat di ambil dan nilai dapat disimpan tanpa melewati posisi-posisi lain.
Terdapat dua operasi, yaitu :
1) Operasi terhadap satu elemen/posisi array
2) Operasi terhadap array sebagai keseluruhan
a) Dua operasi paling dasar terhadap satu elemen/posisi adalah :
· Penyimpanan nilai elemen ke posisi tertentu di array
· Pengambilan nilai elemen dari posisi tertentu di array
b) Operasi-operasi dasar terhadap array secara keseluruhan adalah :
· Operasi penciptaan
· Operasi penghancuran
· Operasi pemrosesan tranversal
· Operasi pencarian (table look-up)
· Operasi sorting
1) Array Satu Dimensi
Array satu dimensi yaitu kumpulan elemen-elemen identik yang hanya terdiri dari satu baris atau hanya satu kolom saja alamat penyimpanan data (indeks). Elemen-elemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen tersebut boleh berbeda.
Bentuk umum :
Tipe_data namaArray[n] = {elemen0, elemen1, elemen2,…..,n};
n = jumlah elemen
contoh pada progam : int ukur[5] = {39, 40. 41, 38, 40};
· int adalah tipe data yang berupa bilangan bulat.
· Ukur adalah nama variabel array.
· [5] adalah ukuran untuk menyatakan jumlah maksimal elemen array.
· {..} adalah tempat pemberian nilai/elemen array.
2) Array Dua Dimensi
Array dua dimensi sering digambarkan sebagai sebuah matriks, merupakan perluasan dari array satu dimensi. Jika array satu dimensi hanya terdiri dari sebuah baris dan beberapa kolom elemen, maka array dua dimensi terdiri dari beberapa baris dan beberapa kolom elemen bertipe sama sehingga dapat digambarkan sebagai berikut :
Bentuk umum :
Tipe_data namaArray [m][n] = {{a,b,…z},{1,2,…,n-1}};
contoh : int lulus[4][3];
- Nilai 4 untuk menyatakan banyaknya baris dan 3 untuk menyatakan banyaknya kolom.
Pendeklarasian array dua dimensi hampir sama dengan pendeklarasian array satu dimensi, kecuali bahwa array dua dimensi terdapat dua jumlah elemen yang terdapat dikurung kurung siku dan keduanya boleh tidak sama. Elemen array dua dimensi diakses dengan menuliskan kedua indeks elemennya dalam kurung.
3) Array MultiDimensi
Array ini seperti array dimensi dua tetapi dapat memiliki ukuran yang lebih besar. Sebenarnya array dimensi banyak ini tidak terlalu sering digunakan, tetapi sewaktu-waktu kalau dimensi yang dibutuhkan banyak, maka array ini sangat memegang peranan yang penting.
Bentuk umum pendeklarasian array multidimensi :
Tipe_data namaArray[ukuran1][ukuran2]…[ukuranN];
Sebagai contoh :
Int data_huruf[2][8][8];
contoh di atas merupakan pendeklarasian array data_huruf sebagai array berdimensi tiga.
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-elemen tetangga, baik elemen pendahulu atau elemen peberus.
3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien.
Kelemahan array adalah sebagai berikut :
Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut :
1. Array harus bertipe homogen, kita tidak dapat mempunyai array dimana satu elemenadalah karakter, elemen yang lain adalah bilangan atau tipe lain.
2. Kebanyakan bahasa pemrogaman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis :
· Tidak efisien dalam penggunaan memory
· Menyiakan banyak waktu komputasi
· Pada suatu aplikasi, representasi statis tidak dimungkinkan
3. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis (array) :
· Tidak efisien dalam penggunaan memory
· Menyiakan banyak waktu komputasi
· Pada suatu aplikasi, representasi statis tidak dimungkinkan
Struktur adalah sekumpulan variabel yang masing-masing dapat berbeda tipe, dan dikelompokkan ke dalam satu nama (menurut Pascal, struktur juga dikenal sebagai record). Struktur membantu mengatur data-data yang rumit, khususnya dalam program yang besar, karena struktur membiarkan sekelompok variabel diperlakukan sebagai satu unit daripada sebagai entity yang terpisah.
Salah satu contoh struktur tradisional adalah record daftar gaji karyawan, dimana karyawan digambarkan dengan susunan lambang seperti nama, alamat, nomor jaminan sosial, gaji dan sebagainya. Beberapa dari lambang tersebut biasanya berupa struktur, nama mempunyai komponen begitu juga alamat dan gaji.
Struktur ini sering digunakan untuk mendefinisikan suatu record data yang disimpan di dalam file. Struktur termasuk ke dalam tipe data yang dibangkitkan (derived data type), yang disusun dengan menggunakan obyek tipe lain.
Contoh :
struct mhs
{
char *nama;
char *nim;
int tts, tas;
float akhir;
char aksara;
}
Kata kunci struct menunjukkan definisi struktur, dan identitas mhs menunjukkan structure tag. Dengan demikian terdapat tipe data baru bernama struct mhs, yang terdiri dari nama mahasiswa, nilai tes tengah semester, tes akhir semester, nilai akhir, dan huruf aksara, yang masing-masing disebut dengan field.
Dapat dituliskan dengan :
struct mhs x, y[100], *z;
Variabel x adalah variabel tunggal, y adalah variabel array dengan 100 lokasi memori, dan z adalah variabel pointer, yang kesemuanya masing-masing berisi field di atas. Jadi, variabel y adalah daftar nama, nilai tts, tas, akhir, dan huruf aksara dari 100 mahasiswa.
Sehingga dapat ditulis :
struct mhs
{
char *nama;
char *nim;
int tts, tas;
float akhir;
char aksara;
} x, y[100], *z;
Inisialisasi juga dapat dilakukan dengan :
struct mhs x = { “Garfield”, 80, 60, 76.8, ‘A’ };
Untuk mengakses anggota dari struktur digunakan salah satu dari dua operator, yaitu operator titik (.), atau operator panah (->) tergantung tipe variabel yang dideklarasikan. Jika variabel tunggal (misal x) maka digunakan operator titik, sedangkan jika variabel pointer (misal z) digunakan operator panah.
Contoh :
printf (“%s”, x.nama);
printf (“%s”, z->nama);
Misal ada permasalahan grafis yang melibatkan koordinat x dan y. Objek dasar yang akan dibuat struktur adalah titik koordinatnya, yang diasumsikan sebagai koordinat x dan y dan keduanya bilangan bulat.
Deklarasi dari koordinat x dan y adalah :
struct point
{
int x;
int y;
};
kata kunci struct mengenalkan deklarasi struktur yang mana deklarasi list terlampir di kurung kurawal { }. Nama pilihan yang disebut structure tag mengikuti kata struct.
Deklarasi struktur yang tidak diikuti oleh variabel list tidak menyediakan tempat penyimpanan; deklarasi struktur hanya menjelaskan template atau bentuk struktur. Kalau deklarasi di tag, tag dapat digunakan dalam definisi contoh struktur. Sebagai contoh, memberikan deklarasi point diatas.
struct point pt;
Variabel pt yang berupa struktur tipe struct poin. Sebuah struktur dapat diletakan di depan dengan mengikuti difinisinya dengan daftar inisialisasi, masing-masing adalah lambang konstanta.
Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.
Intinya :
- Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
- Variabel pointer berisi suatu alamat (alokasi memory).
Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel dan alamat
dari sebuah fungsi. Pointer dapat meningkatkan kinerja untuk operasi yang dilakukan secara berulang.
Ada 2 operator pointer yang dikenal secara luas, yaitu operator “&” dan operator “*”.
a. Operator &
Operator & merupakan operator alamat. Pada saat pendeklarasian variabel, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time. Jika ingin mengetahui dimana suatu variabel akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of".
Contoh :
Misalkan variabel DATA_1 diletakkan pada alamat memory 1770, kemudian dituliskan instruksi
sbb :
DATA_1 = 27; Variabel DATA_1 berisi data 27
DATA_2 = DATA_1; Variabel DATA_2 diberi isi seperti DATA_1, yaitu 27
DATA_3 = &DATA_1; Variabel DATA_3 berisi alamat memory DATA_1, yaitu 1770
b. Operator *
Operator * merupakan operator reference. 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 :
Melanjutkan deklarasi sebelumnya, jika ada penulisan variabel berikut
DATA_4 = *DATA_3
Dapat dikatakan bahwa DATA_4 sama dengan nilai yang ditunjuk oleh DATA_3.
DATA_3 berisi alamat memory 1770, sementara memory 1770 menampung data bernilai 27. Jadi DATA_4 berisi nilai yang berada pada alamat 1770, yaitu 27.
#include
main(){
int *pointer;
int DATA1;
DATA1=27;
printf(" Isi variabel DATA1 = %d",DATA1);
printf("\n Alamat variabel DATA1 = %d",&DATA1);
printf("\n Alamat variabel *pointer = %d",&pointer);
printf("\n Isi variabel *pointer = %d",pointer);
pointer=&DATA1;
printf("\n Alamat variabel *pointer = %d",&pointer);
printf("\n Isi variabel *pointer = %d",pointer);
printf("\n Isi dari alamat %d = %d",pointer,*pointer);
printf("\n");
return 0;
}
SS Program :
Struktur adalah sekumpulan elemen-elemen data yang digabung menjadi suatu kesatuan. Struktur array adalah kumpulan elemen-elemen data yang digabungkan menjadi suatu kesatuan yang memiliki tipe homogen (sama). Array merupakan bagian dari struktur data yaitu termasuk ke dalam struktur data sederhana yang dapat didefinisikan sebagai pemesanan alokasi memori sementara pada komputer. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah.
Apabila kita membuat progam dengan data yang yang sudah kita ketahui batasnya, maka kita menggunakan array (tipe data statis), namum apabila datanya belum kita ketahui batasnya maka gunakan pointer (tipe data dinamis). Elemen-elemen array tersusun secara sekuensial dalam memori komputer. Array dapat berupa satu dimensi, dua dimensi, ataupun multidimensi.
Dengan tersusunnya makalah ini diharapkan para membaca memberikan saran dan kritik yang membangun, sebagai motivasi demi terciptanya kemajuan dalam pembuatan makalah-makalah selanjutnya.