Jumat, 24 April 2020

Konsep Array, Array Dimensi 3 dan tringular Array



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
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];

Rumus untuk menentukan jumlah elemen dalam Array :

n
π (Elemen Array)
i=1

π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)


PEMETAAN (MAPPING) 
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];


Menentukan jumlah elemen dalam Array dimensi dua:

n
π (Elemen array)
i=1

π = Perkalian dari elemen sebelumnya
(untuk array dimensi dua & tiga)

PEMETAAN (MAPPING) 
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

Contoh Pemetaan : 
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