Rabu, 30 Desember 2015

PEMETAAN ARRAY KE STORAGE

      1.            Jelaskan konsep Pemetaan array ke storage!

Array atau Larik merupakan Struktur Data Sederhana yang dapat didefinisikan sebagai pemesanan alokasi memory sementara pada komputer. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.
------------------------------------------
Terurut : Dapat diartikan bahwa elemen tersebut dapat diidentifikasi sebagai elemen pertama, elemen kedua dan seterusnya sampai elemen ke-n.
Homogen : Adalah bahwa setiap elemen dari sebuah Array tertentu haruslah mempunyai type data yang sama.

Sebuah Array dapat mempunyai elemen yang seluruhnya berupa integer atau character atau String bahkan dapat pula terjadi suatu Array mempunyai elemen berupa Array.
Karakteristik Array :
q  Mempunyai batasan dari pemesanan alokasi memory (Bersifat Statis)
q  Mempunyai Type Data Sama (Bersifat Homogen)
q  Dapat Diakses Secara Acak

3 Hal yang harus diketahui dalam mendeklarasikan array :
      1.            Type data array
      2.            Nama variabel array
      3.            Subskrip / index array


ARRAY DIMENSI SATU (One Dimensional Array)

Deklarasi : Type_Data Nama_Variabel [ukuran_array]
Ket :
 – type_data : menyatakan type elemen array misal int, char, float
 – nama_var : nama variabel array
 – ukuran : menyatakan jumlah maksimal elemen array-nya
Contoh:
Var A : Array[1..N] Of  integer;
Rumus untuk menentukan jumlah elemen dalam array adalah :
n
p(Index Array)
i = 1
ket:
p= Perkalian dari index sebelumnya (untuk array berdimensi dua dan tiga).

q  Harga minimum dari subskrip suatu Array disebut sebagai batas bawah atau lower bound (L),
q  Harga maksimumnya disebut batas atas atau upper bound (U).
Array dimensi satu digambarkan dalam bentuk vektor.

q  Contoh :
Suatu Array A dideklarasikan sbb :
Var A : Array[1..10] of integer
maka jumlah elemen Array dimensi satu tersebut adalah :
(Ui - Li) + 1 = (10 - 1) + 1 = 10

q  PEMETAAN (MAPPING)  ARRAY DIMENSI SATU KE STORAGE

Rumus : @A[i] = B + (i - 1) * L
Dimana :
@A[i] : Posisi Array yg dicari
B : Posisi awal array di memory komputer
i : Subkrip atau indeks array yg dicari
L : Ukuran / Besar memory suatu type data
Contoh :
Suatu Array A dideklarasikan sebagai berikut :
Var A : Array [1..5] of integer, dengan alamat awal berada di 0011 (H) dan ukuran memory type data integer = 2 Tentukan berapa alamat array A[3] ?
Diketahui :
@A[i] = A[3]
B = 0011 (H)
i = 3
L = 2
Penyelesaian :
A[3] = 0011(H) + (3 – 1) * 2
= 0011(H) + 4 (D)-->4 Desimal = 4 Hexa
= 0011(H) + 4 (H)
= 0015(H) 
 
q  Contoh program pada C++ 

2.      ARRAY DIMENSI BANYAK (Multidimensional Array)
           
            Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan.apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.

Misalkan B adalah base-location dari array RATE tersebut, dan masing-masing elemen dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :

B + (I-1) * 6 * S+ (J-1) * S
karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai address awal :

B+ (2-1) * 6 * S + (4-1) * S = B + 9 * S
           
Secara umum elemen ARRAY(I,J) dari array yang didefinisikan sebagai
ARRAY(L1:U1, L2 : U2) mempunyai address awal :

B + (I-L1) * (U2 -L2+ 1) * S + (J-L2) * S

Terdapat 2 baris (I-L1, 0 – (-2)) sebelum baris nol, yang masing-masing panjangnya 3*S(U2-L2+1 = 6-4+1) dan terdapat 2 elemen (J-L2 = 6-4) pada baris ke nol sebelum elemen Z (0,6). Jadi address awal dari Z(0,6) adalah :
B + 2 * 3 * S + 2 * S = B + 8 * S

            Alternatif lain untuk melinearkan array dimensi dua adalah dengan menyimpan elemen dalam column major order, yakni pertama kali menyimpan kolom pertama, lalu kolom kedua, kolom ketiga dan seterusnya.

Dengan mudah dapat diterangkan bahwa pada array RATE di atas, elemen RATE(I,J) mempunyai address awal B + (J - 1) * 4 * S + (I - 1) * S, sehingga RATE(2,4) akan mempunyai address awal B + (4-1) * 4 * S + (2-1) * S = B + 13 * S

2.     Contoh Kasus Array Dalam Matriks Dan Pembentukan Matriks Dengan Menggunakan Array 

Untuk membuat program MATRIKS pada C++ maka akan memakai array untuk membuat matriks, karena array adalah syarat utama untuk membuat matriks maka pada program ini saya akan membuat matriks berordo 1 dan berordo 4 x 4. berikut coding programnya

q  CONTOH program c++ dengan matrik berordo 1 x 1.


q   LOGIKA:
§   Int a[5] = {2,3,4,5,6}; variabel a mempunyai 5 array dan isi dari tipe data a adalah 2,3,4,5,6
§  Int b[5] = {2,3} variabel b mempunyai 5 array dan isi dari tipe data tersebut adalah 2,3. Karena dia mempunyai 5 data array, maka pada output nanti terdapat 3 angka 0. Hal ini terjadi karena tipe data b hanya mempunyai isi array sebanyak 2 yaitu 2 dan 3. Sedangkan array nya sebanyak 5. Jadi angka 0 tersebut untuk memenuhi angka array yang dibutuhkan.
§   Int c[5] = {50,60,70}  } variabel c mempunyai 5 array dan isi dari tipe data tersebut adalah 50,60,70. Karena dia mempunyai 5 data array, maka pada output nanti terdapat 2 angka 0. Hal ini terjadi karena tipe data c hanya mempunyai isi array sebanyak 3 yaitu 50,60 dan 70. Sedangkan array nya sebanyak 5. Jadi angka 0 tersebut untuk memenuhi angka array yang dibutuhkan.variabel a,b,c masing-masing bertipe data integer
§   Int j dan cout<<endl; program akan mengacu pada int j. Karena int j pada program tersebut terdapat pada pengulangan for (j = 0; j = 5; j++). Artinya program akan elakukan pengulangan sebanyak 5 kali dan dimulai dari angka 0.
§   cout<<"a["<<j<<"]="<<a[j]<<"b["<<j<<"]="<<b[j]<<"c["<<j<<"]="<<c[j]<<endl; Merupakan hasil printout dari array yang user buat.   
§   Getch() dan } merupakan akhir dari program.

CONTOH program c++ dengan matrik berordo 4x4.

q  int matrik [4] [4]; merupakan variabel matriks dimensi 2. Masing- masing mempunyai array sebanyak 4.
q  int i,j; I dan j merupakan tipe data integer
q  for (i=1; i<=4; i++) Merupakan bentuk pengulangan, jadi variabel I akan mengulang sebanyak 4 kali. Pengulangan ini akan berpengaruh dalam angka yang akan di input pada baris dan kolom matrik
q  for (j=1; j<=4; j++) Merupakan bentuk pengulangan, jadi variabel j akan mengulang sebanyak 4 kali. Pengulangan ini juga akan berpengaruh dalam angka yang akan di input pada baris dan kolom matrik
q  cout <<"masukan angka pada baris ke "<<i<<" kolom ke "<<j<<" : "; cout tersebut artinya program akan menampilkan output masukan angka pada baris ke i. I disitu merupakan baris  dan j merupakan kolo. Jadi nantinya progrm akan meminta untuk memasukan angka pada variabel I dan kolo pada variabel j
q  cin>> matrik [i] [j]; cin digunakan untuk menginput I dan j
q  cout<<endl;digunakan membuat baris baru pada program.
q  cout<<"ini matrik ordo (4,4) 4 baris 4 kolom"; akan mengeluarkan ouput ini matrik ordo (4,4) 4 baris 4 kolom.
q   for (i=1; i<=4; i++). Merupakan bentuk pengulangan, jadi variabel I akan mengulang sebanyak 4 kali. Pengulangan ini akan berpengaruh pada pembentukan matrik 4 x 4
q  for (j=1; j<=4; j++) ++). Merupakan bentuk pengulangan, jadi variabel j akan mengulang sebanyak 4 kali. Pengulangan ini juga akan berpengaruh pada pembentukan matrik 4 x 4
q  cout <<matrik [i] [j]<<" "; merupakan hasil dan output matrik 4x4 nanti.
q  Getch() merupakan akhir dari program.

Itulah cara pemetaan Array ke Storage,  kurang jelasnya dimaklumin aja ya.. lagi belajar..hehehe


Tidak ada komentar:

Posting Komentar