Konsep Array
Array [larik] merupakan hal fundamental yang sering dijumpai dalam banyak kasus di dunia pemrograman. Maka dari itu, sebagai programmer sobat perlu membekali diri dengan pemahaman konsep array dan mampu mengimplementasikannya ke dalam kasus-kasus yang sobat hadapi. Dalam artikel kali ini kita akan membahas pengantar / dasar materi array dalam C++, dimana artikel ini sebagai permulaan dalam mempelajari array sebelum sobat mempelajari artikel mengenai array lainnya yang lebih komplek.
Apa itu Array?
Array adalah sebuah variabel yang menyimpan sekumpulan data yang mempunyai tipe sama atau Array juga dapat disebut sebagai kumpulan dari nilai-nilai data yang bertipe sama (misal int) dalam urutan tertentu yang memakai sebuah nama yang sama. Setiap data tersebut menempati alamat memori atau lokasi yang berbeda-beda dan selanjutnya disebut dengan elemen array. Elemen array sendiri dapat diakses melalui indeks yang terdapat di dalamnya. Namun, penting sekali untuk di ingat bahwa dalam C++ indeks array selalu dimulai dari 0, buka 1. Berikut ini gambar yang mengilustrasikan sebuah array.
Ilustrasi Array atau Ilustrasi Array Satu Dimensi |
Karakteristik Array :
1. Mempunyai batasan dari pemesanan alokasi memory
(Bersifat Statis)
2. Mempunyai Type Data Sama (Bersifat Homogen)
3. Dapat Diakses Secara Acak
3 Hal yang harus diketahui dalam mendeklarasikan
array :
a. Type data array
b. Nama variabel array
c. Subskrip / index array
Macam-Macam Array
Array Satu Dimensi
Array satu dimensi merupakan array yang terdiri dari n buah kolom atau Array satu dimensi adalah array yang terdiri dari 1 subskrip array saja, setiap elemen array satu dimensi dapat diakses melalui indeks yang terdapat di dalamnya
Contoh Deklarasi Array Satu Dimensi:
tipe_data nama_array [jumlah_elemen];
n
π (Elemen Array)
i=1
π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)
ARRAY DIMENSI SATU KE STORAGE
Rumus : @A[i] = B + (i – 1) * L
Dimana : @A[i] : Posisi Array yg dicari
B : Posisi awal index di memory komputer
i : Subkrip atau indeks array yg dicari
L : Ukuran / Besar memory suatu type data
Array Dua Dimensi
Array dua dimensi merupakan array yang terdiri dari n buah baris dan m buah kolom, bentuknya dapat sobat bayangkan seperti matriks atau tabel. dimana indeks pertama menunjukan baris dan indeks kedua menunjukan kolom. Array dua dimensi biasa digunakan untuk pendataan nilai, pendataan penjualan dan lain sebagainya.
Contoh Deklarasi Array Dua Dimensi:
tipe_data nama_array [jumlah_elemen_baris] [jumlah_elemen_kolom];
n
π (Elemen array)
i=1
π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)
ARRAY DIMENSI DUA KE STORAGE
Terbagi Dua cara pandang (representasi) yang berbeda :
1. Secara Kolom Per Kolom (Coloumn Major Order/CMO)
@M[i][j] = M[0][0] + {(j - 1) * K + (i - 1)} * L
2. Secara Baris Per Baris (Row Major Order / RMO)
@M[i][j] = M[0][0] + {(i - 1) * N + (j - 1)} * L
Keterangan :
@M[i][j] = Posisi Array yg dicari, M[0][0] = Posisi alamat awal index
array,i = Baris, j = kolom, L = Ukuran memory type data
K = Banyaknya elemen per kolom, N = Banyaknya elemen per baris
Array Tiga Dimensi
Array Tiga Dimensi merupakan array yang mempunyai ukuran lebih dari dua dimensi. Bentuk deklarasi array tiga dimensi serupa dengan deklarasi array satu dimensi maupun dua dimensi.
Contoh Deklarasi Array Tiga Dimensi :
tipe_data nama_array [jumlah_elemen1] [jumlah_elemen2] ... [jumlah_elemen3];
Menentukan jumlah elemen dalam Array dimensi 3 :
n
π (index array)
i=1
π = Perkalian dari statemen sebelumnya
PEMETAAN (MAPPING)
ARRAY DIMENSI TIGA KE STORAGE
Rumus :
@M[m][n][p] = M[0][0][0] + {((m-1) *(jum.elemen2 *
jum.elemen3)) + ((n-1)*(jum.elemen 3)) +
((p-1)}* L
Penyelesaian :
1. Tentukan jumlah elemen array A [2][4][3]
= (2) * (4) * (3) = 24
2. @M[m][n][p] = M[0][0][0] + {((m-1) *(jum.elemen2 *
jum.elemen3)) + ((n-1)*(jum.elemen
3)) + ((p-1)}* L
A[2][3][2] = 0011(H) + {((2–1) * 4 * 3) + ((3-1) * 3) +
(2-1)} * 2
= 0011(H) + {12 + 6 + 1 } * 2
= 0011(H) + 38 (D) 26 (H)
= 0011(H) + 26 (H)
= 0037(H)
Contoh Program array dimensi 3
/*
*Judul Program : Array dimensi 3
*Bahasa Program : Bahasa C
*Pembuat Program : Hendro Pramana
Sinaga
*Tanggal Pembuatan : 5 Mei 2012
*/
#include <stdio.h>
#include <conio.h>
main()
{
char h=64, nama[5][4][22] = {
"AC
Milan","Barcelona","Porto","Monaco",
"Liverpool","Real Madrid","CSK
Moskow","PSG",
"Inter
Milan","Arsenal","Atletico
Madrid","Ajax",
"AS Roma","Manchester
United","Dortmund","Valencia",
"Manchester City","Bayern
Munich","Napoli","Vilareal"
printf("Liga Champions : \n\n");
for(i=0; i<5; i++)
{
++h;
printf("Grup %c \n",
h);
for(s=0; s<4; s++)
{
printf(" %d. %s
\n", s+1, nama[i][s]);
}
printf("\n");
}
getch();
Karena kali ini kita akan membahas konsep dasar array, maka kita akan menggunkan array satu dimensi untuk menjelaskan konsepnya, hal tersebut karena array satu dimensi merupakan bentuk dasar dari array dua dimensi dan array tiga dimensi.
Kelebihan Array :
- Merupakan struktur penyimpanan data yang paling mudah.
- Tipe data yang mampu menampung lebih dari satu data.
- Memori ekonomis, bisa semua elemen terisi.
- Waktu akses sama setiap elemen.
- Dapat diakses secara random
Kekurangan Array :
- Boros memory jika banyak elemen yang tidak digunakan.
- Merupakan struktur penyimpanan data yang statis.
- Kebanyakan bahasa pemrograman mengimplementasikan array statis yang sulit diubah ukurannya di pada waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis
TRINGULAR ARRAY
(ARRAY SEGITIGA)
Latihan soal :
1. suatu array A di deklarasikan sbb:
Float A[5][5][5] dengan alamat awal A[0][0][0] = 0021(H), berapakah alamat array A[2][3][2] dan A[5][4][3] ?
- jawaban :
# Array A[2][3][2]
- dik : Float A[5][5][5]
A[0][0][0] = 0021(H)
L = 4
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[2][3][2] = 0021 (H) + { 25 + 10 + 1 } x 4
= 0021 (H) + 144 (D)
= 0021 (H) + 9 (H)
= 0030 (H)
# Array A[5][4][3]
- dik : Float A[5][5][5]
A[0][0][0] = 0021(H)
L = 4
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[5][4][3] = 0021 (H) + { 100 + 15 + 2 } x 4
= 0021 (H) + 468 (D)
= 0021 (H) + 1D4 (H)
= 1F5 (H)
2. suatu array di deklarasikan sbb :
Char B[3][4][3] dengan alamat awal A[0][0][0] = 0021(H) , berapakah alamat array A[2][3][2] dan A[3][4][3]
- jawaban :
# Char B[2][3][2]
- dik : Float A[3][4][3]
A[0][0][0] = 0021(H)
L = 1
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[2][3][2] = 0021 (H) + { 12 + 6 + 1 } x 1
= 0021 (H) + 19 (D)
= 0021 (H) + 13 (H)
= 0034 (H)
# Char B[3][4][3]
- dik : Float A[3][4][3]
A[0][0][0] = 0021(H)
L = 1
- A[m][n][p] = M [0][0][0] + {((m-1) x (jum.elmn 2 x jum.elmn 3)) + ((n-1)x jum.elm 3) + ((p-1)) } x L
- A[3][4][3] = 0021 (H) + { 24 + 9 + 2 } x 1
= 0021 (H) + 35 (D)
= 0021 (H) + 23 (H)
= 0044 (H)
Tidak ada komentar:
Posting Komentar