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