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.
------------------------------------------
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 :
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
– 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;
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.
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
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)
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
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
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
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
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