Label

Struktur Data (10) Data Mining (5) Etika Profesi (5) Nilai (3) PDK (2) SIM (2)

Jumat, 30 Maret 2018

Array

Definisi Array
—  Disebut juga dengan linear array
—  Bentuk struktur data (tipe data terstruktur) yang bersifat linear (kontinu), memiliki tipe data yang sama (homogen).

Karakteristik Pemakaian Array
—  Jumlah elemen terbatas
—  Seluruh elemen bisa diakses secara random
—  Panjang elemen sama
—  Elemen tersusun secara sequential (tersusun)

Macam-macam Array
—  Array satu dimensi
—  Array dua dimensi
—  Array tiga dimensi
—  Array banyak dimensi

Array satu dimensi
—  Nilai subscript tunggal (terdiri hanya 1 baris)
—  Tipe datanya sama namun isinya berbeda
Contoh pemetaan dalam memori ???

Contoh array satu dimensi


Deklarasi :
Var A : array [4..8] of string [3]


Jumlah elemen (n)       = (a-b) + 1
                                    = (8-4) + 1 = 5

Penghitungan array satu dimensi
—  Dari pemetaan tersebut diketahui :
—  Batas bawah (b)          = 4
—  Batas atas (a)               = 8
—  Panjang elemen (l)       = 3
            disebut juga dengan lebar data (LD)
—  Alamat awal @A[b]    = 1000
            disebut juga dengan base address (B)

Tentukan di alamat berapakah nilai data A[5] disimpan (nilai data A[5] terletak di SK [2] !

Menggunakan nilai array
@A[i] = B + (i – b) * LD
—  @A[i] = alamat yang akan dicari
—  B                    = alamat awal
—  LD                   = lebar data
—  i                       = nilai array
—  b                      = batas bawah

@A[5]             = 1000 + (5-4) * 3
                                    = 1000 + 1 * 3
                                    = 1000 + 3
                                    = 1003

Menggunakan subscript
AD = B + (SK – 1) * LD
—  AD                  = alamat yang akan dicari
—  B                     = alamat awal
—  SK                   = subscript yang akan dicari
—  1                      = angka konstan
—  LD                   = lebar data

AD      = 1000 + (2-1) * 3
                        = 1000 + 1 * 3
                        = 1000 + 3
                        = 1003

Mencari Subscript dan Nilai Array
A[i] = (SK + b) – 1

Ex        : cari nilai array untuk SK = 2
Jwb      : A[i] = (2 + 4) – 1 = 5           


SK = (A[i] – b) + 1

Ex        : cari nilai SK untuk array A[5]
Jwb      : SK = (5 – 4) + 1 = 2

Array 2 dimensi
—  Perluasan dari array 1 dimensi
—  Terdiri dari beberapa baris dan beberapa kolom.

Contoh pemetaan dalam memori ???

Contoh array 2 dimensi




Penghitungan array 2 dimensi
—  Dari pemetaan tersebut diketahui :
—  Baris atas (ia)                          = 5
—  Baris bawah (ib)                      = 3
—  Kolom bawah (jb)                   = 4
—  Kolom atas (ja)                        = 8
—  Alamat awal (B)                      = 1000
—  Lebar data (LD)                      = 4

—  Jumlah kolom dan baris???

—  Jumlah elemen perkolom (k)
—  k = (ia-ib) + 1
—  k = (5-3) + 1
—  k = 3
artinya dalam satu kolomnya terdapat 3 baris


—  Jumlah elemen perbaris (n)
—  n = (ja-jb) + 1
—  n = (8-4) + 1
—  n = 5
            artinya dalam satu barisnya terdapat 5 kolom

—  Jumlah seluruh elemen (s)
—  s = k * n
—  s = 3 * 5
—  s = 15

Penghitungan nilai data
—  berapakah nilai data untuk array A[4,5] secara baris dan kolom ?
—
  Ket : untuk menghitung nilai data, bisa dilakukan dengan 2 cara :
—  1. dengan memakai nilai array nya
—  2. dengan memakai nilai subscript nya

Perhitungan nilai data dg array
            Membelah per baris :
            A[i,j] = B + ( (i-ib) * n + (j-jb) ) * LD
            A[i,j]    : alamat yang akan dicari        = A[4,5]
            B                     : alamat awal                           = 1000
            i                       : baris yang ditanya                 = 4
            ib                     : baris bawah                           = 3
            n                      : jumlah elemen perbaris          = 5
            j                       : kolom yang ditanya              = 5
            jb                     : kolom bawah                         = 4
            LD                   : lebar data                              = 4
Membelah per baris :
            A[i,j]    = B + ( (i-ib) * n + (j-jb) ) * LD
—  A[4,5] = 1000 + ((4-3) * 5 + (5-4)) * 4
—  A[4,5]  = 1000 + (1*5 + 1) * 4
—  A[4,5]  = 1000 + 6 * 4
—  A[4,5]  = 1000 + 24
—  A[4,5] = 1024

Perhitungan nilai data dg array
            Membelah per kolom :
            A[i,j] = B + ( (j-jb) * k + (i-ib) ) * LD
            A[i,j]    : alamat yang akan dicari                    = A[4,5]
            B                     : alamat awal                           = 1000
            j                       : kolom yang ditanya              = 5
            jb                     : kolom bawah                         = 4
            k                      : jumlah elemen perkolom       = 3
            i                       : baris yang ditanya                 = 4
            ib                     : baris bawah                           = 3
            LD                   : lebar data                              = 4

Membelah per kolom :
            A[i,j]    = B + ( (j-jb) * k + (i-ib) ) * LD
—  A[4,5] = 1000 + ((5-4) * 3 + (4-3)) * 4
—  A[4,5]  = 1000 + (1*3 + 1) * 4
—  A[4,5]  = 1000 + 4 * 4
—  A[4,5]  = 1000 + 16
—  A[4,5] = 1016

—  Mencari nilai SK dari array
—  p = SK untuk baris
—  p = (A[i] – ib) +1
—  p = (4 – 3) + 1
—  p = 2

—  q = SK untuk kolom
—  q = (A[j] – jb) +1
—  q = (5 – 4) + 1
—  q = 2



Perhitungan nilai data dg Subscript
            Membelah per baris :
            AD = B + ( (p-1) * y + (q-1) ) * LD
            AD                  : alamat yang akan dicari
            B                     : alamat awal                           = 1000
            p                      : SK untuk baris                      = 2
            q                      : SK untuk kolom                    = 2
            y                      : jumlah elemen perbaris          = 5
            1                      : angka konstan
            LD                   : lebar data                              = 4

Membelah per baris :
             AD = B + ( (p-1) * y + (q-1) ) * LD
—  AD                  = 1000 + ((2-1) * 5 + (2-1)) * 4
—  AD                  = 1000 + (1*5 + 1) * 4
—  AD                  = 1000 + 6 * 4
—  AD                  = 1000 + 24
—  AD                  = 1024


Perhitungan nilai data dg Subscript
            Membelah per kolom :
             AD = B + ( (q-1) * x + (p-1) ) * LD
            AD                  : alamat yang akan dicari
            B                     : alamat awal                           = 1000
            p                      : SK untuk baris                      = 2
            q                      : SK untuk kolom                    = 2
            x                      : jumlah elemen perkolom       = 3
            1                      : angka konstan
            LD                   : lebar data                              = 4

Membelah per kolom :
             AD = B + ( (q-1) * x + (p-1) ) * LD
—  AD                  = 1000 + ((2-1) * 3 + (2-1)) * 4
—  AD                  = 1000 + (1*3 + 1) * 4
—  AD                  = 1000 + 4 * 4
—  AD                  = 1000 + 16
—  AD                  = 1016


Tugas 1
Diketahui sebuah deklarasi :
Var A : array [2..8, 4..8] of string [5]
dengan alamat awal (B) = 1000
  1. Bagaimana pemetaan di memory
  2. Carilah alamat data secara baris dan kolom untuk nilai array [4,7]
  3. Carilah alamat data secara baris dan kolom untuk SK