Kamis, 02 Februari 2012

Belajar Struktur Data (ARRAY)

Struktur Data


Struktur Data Linear :
Struktur data yang menggambarkan hubungan tentang elemen-elemen yang berdekatan
Aplikasi Array :
v  Stack(tumpukan)
v  Queue(antrian)
v  Double Ended Queue/Deque(antrian dg 2 pintu)
Aplikasi Linked List :
v  Linked Stack
v  Linked Queue

Pengelolaan Memori :
q  Secara STATIS
Menempati lokasi memeori yang tetap(fixed size), tidak dapat dikembangkan atau diciutkan.
Misal : array
q  Secara DINAMIS
Menempati lokasi memeori yang dapat dikembangkan atau diciutkan sesuai dengan kebutuhan.
Pengelolaan memori secar dinamis ditunjukan oleh pointer.
Misal : link list

Array :
Array adalah tipe terstruktur yang terdiri dari sejumlah komponen-komponen dengan tipe yang sama.
Banyaknya komponen dalam suatu array adalah tetap dan lokasi dalam suatu array ditunjukan oleh suatu INDEKS
Pengalamatan array à Statik
Karakteristik pemakaian array :
      Jumlah elemen array terbatas
      Semua elemen array dapat diakses secara acak
      Panjang elemen sama
1. Array 1D
Contoh : Sebuah array A[4] menyimpan data tipe int


Jum elemen array = 4 elemen
Panjang array = 4 elemen * 4 byte/elemen = 16 byte

Contoh Soal :
1.Suatu array dideklarasikan dengan A[9], setiap elemen terdiri dari 8 byte. Jika alamat elemen pertama sama dg 16FFH, ditanyakan :
a.Jumlah elemen array
b.Panjang array dalam byte
c.Alamat A[5]

Jawab :
1. &A[0] = 16FFH
Lebar elemen = 8 byte/elemen
a. Jumlah elemen array = 9 elemen
b. Panjang array = 9 elemen x 8 byte/elemen = 72 byte
c. &A[5] = ?
Perpindahan = (5 – 0) elemen x 8 byte/elemen
                    = 40 byte = 28H byte
&A[5] = 16FFH + 28H = 1727H

Soal :
1.Suatu array dideklarasikan dengan int Angka[12]. Jika alamat elemen pertama 2C3EH, ditanyakan :
a.Jumlah elemen array
b.Jumlah byte seluruhnya (panjang array)
c.Alamat Angka[6]
Jawab:
1. &A[0] = 2C3EH
Lebar elemen = 4 byte/elemen
a. Jumlah elemen array = 12 elemen
b. Panjang array = 12 elemen x 4 byte/elemen = 48 byte
c. &A[6] = ?
Perpindahan = (6 – 0) elemen x 4 byte/elemen
                    = 24 byte = 18H byte
&A[6] = 2C3EH + 18H = 2C56H



2. Array 2D
Deklarasi A[I]{J]
I : Jumlah baris
J : Jumlah kolom
Urutan elemen dalam memori :


v  Urutan baris per baris ( Row Major Order/RMO)

A[3][4]

0
1
2
3
0
1
2
3
4
1
5
6
7
8
2
9
10
11
12

v  Urutan kolom per kolom (Column Major Order/CMO)

A[3][4]

0
1
2
3
0
1
4
7
10
1
2
5
8
11
2
3
6
9
12


Contoh :
int A[3][4]


a. Jika matrik diatas disimpan dengan urutan RMO, maka :
17
14
75
10
20
50
80
11
35
60
90
12
Baris 0
Baris 1
Baris 2
Tipe data int memerlukan 4 byte/elemen.
&A[0][1]=1004H, &A[0][2]=1008H, &A[0][3]=100CH
&A[1][0]=1010H, &A[1][1]=1014H, &A[1][2]=1018
&A[1][3]=101B, &A[2][0]=1020, &A[2][1]=1024

B. Jika matrik disimpan dengan urutan CMO, maka:
17
20
35
14
50
60
75
80
90
10
11
12
Kolom 0
Kolom 1
Kolom 2
Kolom 3
&A[1][0]=1004H, &A[2][0]=1008H, &A[0][1]=100BH
&A[1][1]=1010H, &A[2][1]=1014H
Penyelesaian tanpa melihat gambar :
a. Jika matrik diatas disimpan dengan urutan RMO, maka :
    Jumlah elemen/baris = 4 elemen/baris
   
Ditanya
:
&A[2][1]

Diketahui
:
&A[0][0]
_


      2   1

   Pindah baris  = 2 baris x 4 elemen/baris = 8 elemen
   Pindah kolom = 1 kolom                            = 1 elemen
   Total perpindahan = 8 + 1 = 9 elemen
                                          = 9 elemen x 4 byte/elemen
                                          = 36 byte = 24H byte
   Jadi &A[2][1] = 1000H + 24H = 1024H

b. Jika matrik diatas disimpan dengan urutan CMO, maka :
   Jumlah elemen/kolom = 3 elemen/kolom
  
Ditanya
:
&A[2][1]

Diketahui
:
&A[0][0]
_


      2   1

   Pindah kolom = 1 kolom x 3 elemen/kolom = 3 elemen
   Pindah baris  = 2 baris                              = 2 elemen
   Total perpindahan = 3 + 2 = 5 elemen
                                           = 5 elemen x 4 byte/elemen
                                           = 20 byte = 14H byte
   Jadi &A[2][1] = 1000H + 14H = 1014H

Soal :
Diketahui suatu array 2D yang dideklarasikan dengan int A[6][7]. Alamat elemen pertama 10CCH. Ditanyakan :
a.Jumlah elemen
b.Jumlah byte seluruhnya
c.Alamat A[2],[5] (Penempatan dlm memori secara RMO dan CMO)

Jawab:
a. Jika matrik diatas disimpan dengan urutan RMO, maka :
Jumlah elemen/baris = 2 elemen/baris
Ditanya
:
&A[2][5]

Diketahui
:
&A[0][0]
_


      2   5

   Pindah baris  =  2 baris x  6 elemen/baris = 12 elemen
   Pindah kolom =  5 kolom                            = 5 elemen
   Total perpindahan = 12 + 5 = 17 elemen
                                          = 17 elemen x 4 byte/elemen
                                          = 68 byte = 44H byte
   Jadi &A[2][5] = 10CCH + 44H = 10GGH

b. . Jika matrik diatas disimpan dengan urutan CMO, maka :
   Jumlah elemen/kolom = 5 elemen/kolom
  
Ditanya
:
&A[2][5]

Diketahui
:
&A[0][0]
_


      2   5

   Pindah kolom = 5 kolom x 7 elemen/kolom = 35 elemen
   Pindah baris  = 2 baris                              = 2 elemen
   Total perpindahan = 35 + 2 = 37 elemen
                                           = 37 elemen x 4 byte/elemen
                                           = 148 byte = 94H byte
   Jadi &A[2][1] = 10CCH + 94H = 115GH


3. Array 3D
Diketahui array A[2][3][3] dengan lebar elemen 2 byte. Alamat elemen pertama 1000H.
Ditanya &A[1][2][1]?
Jawab :

0
1
2




0
1
2
0
10
30
50



0
50
12
17
1
25
15
17



1
24
22
37
2
32
35
36



2
46
11
18
         Blok 0                           Blok 1
a.RMO
Jumlah elemen tiap baris = 3 elemen/baris
Jumlah elemen tiap bolk   = 9 elemen/blok
Ditanya
:
&A[1][2][1]

Diketahui
:
&A[0][0][0]
_


      1   2   1

Pindah kolom = 1 kolom                          = 1 elemen
Pindah baris = 2 baris x 3 elemen/baris = 6 elemen
Pindah blok = 1 blok x 9 elemen/blok = 9 elemen
Total perpindahan = 1 + 6 + 9 = 16 elemen x 2 byte/elemen
                                              = 32 byte = 20H byte
Jadi &A[1][2][1] = 1000H + 20H = 1020H

b. CMO
Jumlah elemen tiap kolom = 3 elemen/kolom
Jumlah elemen tiap bolk   = 9 elemen/blok
Ditanya
:
&A[1][2][1]

Diketahui
:
&A[0][0][0]
_


      1   2   1

Pindah kolom = 1 kolom x 3 elemen/kolom = 3 elemen
Pindah baris = 2 baris                               = 2 elemen
Pindah blok = 1 blok x 9 elemen/blok        = 9 elemen
Total perpindahan = 3 + 2 + 9 = 14 elemen x 2 byte/elemen
                                              = 28 byte = 1CH byte
Jadi &A[1][2][1] = 1000H + 1CH = 101CH

Soal :
Diketahui suatu array 3D yang dideklarasikan dengan int A[4][3][6]. Alamat elemen pertama adalah CBBDH.
Ditanyakan :
a. Jumlah elemen
b. Jumlah byte seluruhnya
c. &A[2][2][4]

Jawab:
a.RMO (Row Major Order)
Jumlah elemen tiap baris = 3 elemen/kolom
Jumlah elemen tiap bolk   = 9 elemen/blok
Ditanya    : &A[2][2][4]
Diketahui : &A[0][0][0] _
                        2   2   4
Pindah kolom = 2 kolom                           = 2 elemen
Pindah baris  = 2 baris x 3 elemen/baris = 6 elemen
Pindah blok   = 4 blok x 9 elemen/blok    = 36 elemen
Total perpindahan = 2 + 6 + 36 = 44 elemen x 2 byte/elemen
                                                = 88 byte = 58H byte
Jadi &A[2][2][4]=CBBDH + 58H = CC15H
b.CMO (Coloum Major Order)
Jumlah elemen tiap kolom = 3 elemen/kolom
Jumlah elemen tiap bolk   = 9 elemen/blok
Ditanya
:
&A[2][2][4]

Diketahui
:
&A[0][0][0]
_


      2   2   4

Pindah kolom = 2 kolom x 3 elemen/kolom = 6 elemen
Pindah baris = 2 baris                               = 2 elemen
Pindah blok = 4 blok x 9 elemen/blok        = 36 elemen
Total perpindahan = 6 + 2 + 36 = 44 elemen x 2 byte/elemen
                                              = 88 byte = 58H byte
Jadi &A[1][2][1] = CCBDH + 58H =CC15H

0
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
A
10
B
11
C
12
D
13
E
14
F
15
G
16



Tidak ada komentar:

Posting Komentar