Untuk mengakses suatu data pada array dapat menggunakan

Untuk mengakses suatu data pada array dapat menggunakan

ARRAY

Array atau larik adalah struktur data yang mengacu pada sebuah/sekumpulan elemen yang diakses melalui indeks. Dapat juga dikatakan bahwa array adalah wadah yang dapat menyimpan sejumlah nilai skalar. Array memiliki tipe terstruktur yang terdiri dari sejumlah komponen-komponen  yang mempunyai tipe yang sama. Nilai-nilai data disebut elemen. Letak atau urutan dari suatu elemen array ditunjukkan oleh suatu index/subscript.Bahasa C elemen pertama dari suatu array ditunjukan dimulai dari index nol.Suatu array dapat berdimensi satu atau lebih.

Karakteristik Array

  1. Mempunyai batasan dari pemesanan alokasi memory (Bersifat Statis)
  2. Mempunyai Type Data Sama (Bersifat Homogen)
  3. Dapat Diakses Secara Acak

Illustrasi Posisi Array

Untuk mengakses suatu data pada array dapat menggunakan

Array di bawah ini mengandung 5 elemen

Untuk mengakses suatu data pada array dapat menggunakan


DEKLARASI ARRAY

Deklarasi Array menggunakan tanda[ ] (bracket)

Bentuk umum Deklarasi Array 1 Dimensi:

tipe_data nama_variable[n];

Ket:

tipe_data         : menyatakan tipe data yang digunakan

nama_variable : nama array

n                      : jumlah elemen atau ukuran array maximum

Array merupakan struktur data statis, artinya jumlah elemen array harus sudah diketahui sebelum program dieksekusi. Jumlah elemen array tidakdapat diubah, ditambah, atau dikurangi selama pelaksanaan program. Mendefinisikan banyaknya elemen array (ukuran array) berarti memesan sejumlah tempat di memori. Komputer mengalokasikan sejumlah lokasi memori sebanyak elemen array yang bersangkutan. Mendefenisikan tipe elemen array berarti menetapkan tipe nilai yang dapat disimpan oleh array. Tipe elemen array dapat berupa tipe data sederhana (integer, real, char, boolean, string), tipe data array berbentuk (tipe data terstrukutur seperti record), atau bahkan tipe array yang lain.

3 Hal yang harus diketahui dalam mendeklarasikan array :

  1. Nama array
  2. Range darisubskrip (jangkauan array)
  3. Type data array.

float Nil_Akhir[6];

      Jumlah elemen Array

      Nama Array

      Tipe data elemen Array

int LARIK[25];

Contoh Deklarasi Array Dimensi Satu

char huruf[9];

int umur[10];

int kondisi[2] = {0,1}

int arr_dinamis[ ] = {1,2,3}

Tanda [ ] disebut juga “elemen yang ke- ...“. Misalnya kondisi[0] berarti array kondisi elemen yang ke nol. Array yang sudah dipesan, misalnya 10 tempat tidak harus diisi semuanya, bisa saja hanya diisi 5 elemen saja, baik secara berurutan maupun tidak. Namun pada kondisi yang tidak sepenuhnya terisi tersebut, tempat pemesanan di memori tetap sebanyak 10 tempat, jadi tempat yang tidak terisi tetap akan terpesan dan dibiarkan kosong. Kita tidak dapat mendeklarasikan array dinamis tanpa inisialisasi!

NILAI ARRAY

Mengisi nilai ke dalam elemen array

Contoh:

            Nil_Akhir[3]=100

            Jika akan diisi dengan suatu nilai

            Artinya

            Nil_Akhir[3]<----- 100           nama array

                                                            index

                                                            diisioleh

//manual pengisian

Nil_Akhir[0] = 25;

Nil_Akhir[1] = 50;

Nil_Akhir[2] = 100;

dst

//Pengisian dengan looping

for (int c=0; c<25; C++)

{

cout<<“Nil_Akhir[“<<c<<“]= ”;

     cin>>Nil_Akhir[c];

}

Contoh Program Array 1 Dimensipengisian dengan looping

//mengisikan array proses pengulangan

#include<iostream>

using namespace std;

int main()

{

//mendeklarasikan array A dengan 10 buah elemen

//bertipe integer

int A[10];

for(int C=0; C<10; C++)

{

cout <<"A["<<C<<"] = ";

cin >> A[C];

}

return 0;

}

Menampilkan nilai pada array

#include<iostream>

using namespace std;

int main()

{

int A[5];

for(int C=0; C<5; C++) {

cout << "A[" << C <<"] = ";

cin >> A[C];

}

cout <<'\n';

cout <<"menampilkan nilai yang telah dimasukkan adalah" << endl;

for (int J=0; J<5; J++){

cout << "Nilai yang terdapat pada elemen ke- ";

cout << J+1 <<": "<< A[J] << endl;

}

return 0;

}


INISIALISASI

Inisialisasi adalah mengisikan nilai awal (default) pada elemen array sehingga jika elemen bersangkutan tidak diisi dengan nilai baru,  maka nilai yang digunakan adalah nilai yang telah ada.

Inisialisasi Array Dimensi 1

int X[3];

Artinya: 

int   X     

                  0          1           2

                  x[0],    x[1],      x[2]

array X memiliki tipe data integer, mempunyai jumlah elemen sebanyak 3 elemen.

Bentuk Umum Inisialisasi Array        

tipe_data nama_array[jumlah elemen]={nilai array1, nilai array2, …};

Contoh:

int X[3]={5,3,7};

artinya array x bertipe integer, mempunyai 3 elemen yaitu

x[0] bernilai 5

x[1] bernilai 3

x[2] bernilai 7

Program Inisialisasi nilai pada elemen Array

#include<iostream>

using namespace std;

int main(){

//mendeklarasikan array dan

//langsung menginisilaisasikan //nilainya

int A[5] = {10, 20, 30, 40, 50};

//menampilkan nilai yang

//terdapat pada elemen array

cout<<"Sebelum dilakukan perubahan nilai" << endl;

cout<<"A[0]= "<<A[0]<<endl;

cout<<"A[1]= "<<A[1]<<endl;

cout<<"A[2]= "<<A[2]<<endl;

cout<<"A[3]= "<<A[3]<<endl;

cout<<"A[4]= "<<A[4]<<endl;

//mengubah elemen ke-1 dan ke-2

A[0]=12;

A[1]=25;

//menampilkan kembali nilai yang //terdapat pada

//elemen array

cout<<"setelah dilakukan perubahan nilai " << endl;

cout<<"

A[0]= "<<A[0]<<endl;

cout<<"A[1]= "<<A[1]<<endl;

cout<<"A[2]= "<<A[2]<<endl;

cout<<"A[3]= "<<A[3]<<endl;

cout<<"A[4]= "<<A[4]<<endl;

return 0;

}


ARRAY DIMENSI SATU

Pengaksesan Array Dimensi Satu

Subscript/index array pada C++ selalu dimulai dari Nol(0)

Bentuk Umum Pengaksesan:

            nama_array[Subscript/Index]

            A[4]                             {mengacu elemen ke 4 array A}

            NamaMHS[2]             {mengacu elemen ke 2 dari array NamaMHS}

            A[i]                              {mengacu elemen ke –i dari larik A,asalkan nilai i sudah terdefinisikan}

            NamaMHS[i+1]          {asalkan nilai i sudah terdefinisikan}

Mengambil nilai di elemen

Contoh:

Mengambil nilai yang terdapat pada elemen ke 10 dan menampung  nilai tersebut kedalam sebuah variabel yang bertipe int juga(misal x),

            x = LARIK[9];

Untuk mengakses suatu data pada array dapat menggunakan
                                                            elemen ke 10

                                                            nama array

                                                            nilai yang terdapat pada elemen ke 10

Pemetaan  (Mapping) Array  DimensiSatuKe  Storage

@A[ i ] = B + ( i – 1 ) * L

Ket:

@A[ i ] : Posisi Array yang dicari

B :Posisi awal array di memori

I  :Subscribe/index array yang dicari

L :Ukuran/besarmemorisuatutipe data

Perlu diketahui juga bahwa i – 1 akan menghasilkan bilangan desimal, maka bilangan desimal itu diubah menjadi bilangan heksadesimal.

Contoh :

Suatu array A dideklarasikan dalam bahasa C++ sebagai berikut;

int A[5]; dengan alamatawal berada di 0011(H) dan ukuran besar memori tipe data integer tersebut 2.

tentukan berapa alamat array A[3] ?

Penyelesaian

Dik: int A[5]

        B   : 0011(H)

        L   :  2

        i    :  3

Dit: A[3]?

Jawab:

Konversi Desimal ke Hexadesimal

4 : 16 = 0 sisa 4

Sehingga  4(D)=4(H)

 
            @A[ I ] = B + ( i - 1 ) * L

            A[3]  = 0011(H) + ( 3 – 1 ) * 2

            =  0011(H) + 4(D)

=  0011(H) + 4(H)

=  0015(H)

Pada contoh seperti di atas, maka kita pun dapat mencari alamat array lainnya.

ARRAY MULTIDIMENSI

Array Dimensi Dua

Array dua dimensi adalah array yang terdiri dari dua buah subscript, yaitu baris dan kolom.

Bentuk array dimensi 2 dapat berupa matrik atau table. Berikut ini merupakan ilustrasi dari array dua dimensi.

Deklarasi Array Dimensi 2

tipe_data nama_array[jumlah_elemen_baris][jumlah_elemen_kolom];

Contoh:

            int data_jual[3][3];

                                                                        jumlah kolom

                                                                        jumlah baris

                                                                        nama array

                                                                        tipe data elemen array

Data jual dengan tipe integer memiliki 3 baris dan 3 kolom

Inisialisasi Array Dimensi 2

Bentuk Umum:

            tipe_data nama_array[jml_elemen_baris][jml_elemen_kolom]={nilai_array};

            int data[2][4];

            artinya:

Data[1, 1]

Data[1, 2]

Data[1, 3]

Data[1, 4]

Data[2, 1]

Data[2, 2]

Data[2, 3]

Data[2, 4]

            int data

Contoh:

            int data[2][4]={{1,3,5,7},{2,4,6,8}};

            Artinya:  data[1, 1] bernilai 1, data[1, 2] bernilai 3, data[1, 3] bernilai 5 dst

Bentuk Umum Pengaksesan Array Dimensi 2

Nama_array[index_baris, index_kolom];

Contoh:

            data[2, 2]<---- 100

            artinya:

            pada baris ke 2 kolom ke 2 di isi dengan nilai100

#include <iostream>

#include <conio.h>

#include <iomanip>

using namespace std;

int main()

{

int baris,kolom;

int i,j;

int data[10][10];

cout<<"Jumlah Baris (1..10) : ";

cin>>baris;

cout <<"Jumlah Kolom (1..10) : ";

cin>>kolom;

for(i=0;i<=baris-1;i++)

     for(j=0;j<=kolom-1;j++)

     {

     cout << "Nilai Baris " << i+1

     << ", Kolom " << j+1 << " : " ;

     cin >> data[i][j];

     }

cout << "Data Matriks : \n";

cout << endl;

for (i=0;i<=baris-1;i++)

{

     for(j=0;j<=kolom-1;j++)

     cout << setw(8) << data[i][j];

     cout << "\n";

     }

return 0;

}

Pemetaan  (Mapping) Array  DimensiDuaKe  Storage

Terbagi dua cara pandang (representasi) yang berbeda :

1.      Secara Kolom Per Kolom (Column Major Order/CMO)

                        @M[i][j] = M[1, 1] + {(j - 1) * K + (i - 1)} * L

2.      Secara Baris Per Baris (Row Major Order / RMO)

                        @M[i][j] = M[1, 1] + {(i - 1) * N + (j - 1)} * L

Keterangan : 

            @ M[ i,  j]   =   Posisi   Array  yang  dicari, 

            M[ 1,1 ]   =   Posisi   alamat awal index

            I =   Baris,       j  =   kolom, 

            L   =   Ukuran memory  type data

            K  =   Banyaknya   elemen per  kolom,  

            N  =   Banyaknya  elemen per baris               

Penggambaran secara logika / Cara Pandang

Misal : int M[3][2];

(Array   dengan 3  Baris &  2 Kolom)

Untuk mengakses suatu data pada array dapat menggunakan

Berdasarkan Cara pandang :  

                       
1. Baris Per Baris (Row Major Order / RMO)

N= Banyaknya/ Jumlah    elemen    per baris = 2

M[1,1]

M[1,2]

M[2,1]

M[2,2]

M[3,1]

M[3,2]


2. Kolom Per Kolom (Coloumn Major Order / CMO)
K=Banyaknya/Jumlah  elemen per kolom =3

M [1, 1 ]

M [ 2, 1]

M [ 3, 1]

M[ 1, 2 ]

M [2, 2 ]

M [ 3, 2]


ContohSoal

Jika suatu variable x dengan struktur data array dimensi dua yang bertipe real dengan ukuran 4 kali 3  dengan alamat awal x[1, 1]=0011(H) dan ukuran type data dimemori adalah 4, tentukan berapa alamat array x[3, 2] berdasarkan cara pandang baris dan kolom.

Jawab secara baris per baris

Penyelesaian :

Dik: real X[4][3];

L= 4

N = 3

M[1, 1]= 0011(H)

Dit:      Alamat array x[3, 2]=?

Ø  Secara Baris Per Baris (Row Major Oder / RMO)

            @M[i][j]          = M[1, 1] + {(i - 1) * N + (j - 1)} * L

            X[3, 2]             = 0011(H ) + {(3 – 1) * 3 + (2 – 1)} * 4

                                    = 0011(H) + 28 (D )                1C ( H)

                                    = 0011(H) + 1C ( H)

                                    = 002D(H )

i =   Baris,        j  =   kolom, 

L   =   Ukuran memory  type data

K  =   Banyaknya   elemen per  kolom,  

N  =   Banyaknya  elemen per baris               

M[ 1] [ 1 ]   =   Posisi   alamat awal index

Untuk mengakses suatu data pada array dapat menggunakan

Jawab secara kolom per kolom

Penyelesaian :

K = 4

Ø  Secara Kolom Per Kolom (Coloumn Major Oder / CMO)

            @M[i][j]          = M[1, 1] + {(j - 1) * K + (i - 1)} * L

            X[3, 2]             = 0011(H) + {(2 – 1) * 4 + (3 – 1)} * 4

                                    = 0011(H) + 24 (D)                 18 (H)

                                    = 0011(H) + 18 (H) 

                                    = 0029(H)

M[ 0, 0 ]   =   Posisi   alamat awal index

I =   Baris,       j  =   kolom, 

L   =   Ukuran memory  type data

K  =   Banyaknya   elemen per  kolom,  

N  =   Banyaknya  elemen per baris               

0011(H)

0029(H)


Array DimensiTiga (Three Dimensional Array)

Deklarasi

Type_Data Nama_Variabel [index1] [index2] [index3];

Misal : int A [3][4][2];

Penggambaran secara Logika :

Untuk mengakses suatu data pada array dapat menggunakan

Pemetaan (Mapping) Array Dimensi 3 Ke Storage

Rumus :

@M[m][n][p]  = M[1, 1, 1] + {((m-1)*(jum.elemen2*jum.elemen3)) + ((n-1)*(jum.elemen3)) + ((p-1)* L

Contoh Soal

Suatu Array A dideklarasikan sebagai berikut :

shortint A [3][4][2], dengan alamat awal index A[1, 1, 1]

berada di 0011( H) dan ukuran type data shortint = 1  Tentukan

berapa alamat array di A[2, 3, 2] ?

Jawab

Penyelesaian :

1. Tentukan jumlah elemen array A [3][4][2]

            =  (3) * (4) * (2)

            24

2. @M[m][n][p]  = M[1, 1, 1]+{((m-1)*(jum.elemen2*jum.elemen3))+((n-1)*(jum.elemen3)) + ((p-1)}* L

             A[2, 3, 2]  = 0011(H ) + {((2–1) * 4 * 2) + ((3-1) * 2) + (2-1)} * 1

                                    = 0011(H ) + {8 + 4 + 1 } * 1

                                    = 0011(H)  + {13} * 1

                                    = 0011(H ) + 13 ( D)   D

                                    = 0011(H ) + D (H )

                                    = 001E( H)