Selasa, 24 Maret 2020


Pertemuan 1


Konsep Struktur Data & Array 


   
 Struktur Data

            Suatu koleksi atau kelompok data yang dapat dikarakteristikan oleh organisasi serta operasi yang didefinisikan terhadapnya.
Pemakaian Struktur Data yang tepat dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas sehingga menjadikan keseluruhan program lebih sederhana.

Konsep Dasar Tipe Data

          A.   Type Data Sederhana/Data Sederhana
                 Terdiri dari : 
                 1.Data Sederhana Tunggal   : Integer, Real / Float, Boolean dan Character
                 2.Data Sederhana Majemuk : String

           B.   Struktur Data
                  Terdiri dari : 
                  1.Struktur Data Sederhana : Array dan Record
                  2.Struktur Data Majemuk
                     a.Linier         : Stack, Queue dan Linear Linked List
                     b.Non Linier : Tree, Binary Tree, Binary Search Tree, General Tree serta Graph

Definisi Array

·         Array / Larik : Struktur Data Sederhana yang dapat didefinisikan sebagai  alokasi memory sementara pada komputer.

·         Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang turut dan homogen.

·         Terurut : Diarttikan bahwa elemen dapat diidentifikasi sebagai elemen pertama,kedua,dan seterusnya sampai ke-n.

·         Homogen : Setiap elemen dari sebuah Array tertentu harus mempunyai tipe data yang sama.

·         Array dapat mempunyai elemen yang seluruhnya berupa integer atau character atau string bahkan dapat terjadi suatu Array mempunyai elemen berupa Array

·         Karakteristik Array
1.Mempunyai batasan dari pemesanan alokasi memory (Bersifat Statis)
2.Mempunyai Type Data Sama (Bersifat Homogen)
3.Dapat diakses secara acak

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

·         Jenis Array
1.Array Dimensi Satu
2.Array Dimensi Dua
            3.Array Dimensi Tiga

Array Dimensi Satu

1.      ARRAY DIMENSI SATU
               Disebut dengan istilah vektor yang menggambarkan data dalam suatu urutan.
               Deklarasi : Type_Data Nama_Variabel [index]
               Misalnya : int A[5];

Rumus untuk menentukan jumlah elemen dalam Array
                 n
                π(Elemen Array)
                 i=1
π= Perkalian dari elemen sebelumnya (untuk array dimensi dua & tiga)
Contoh: Suatu Array A dideklarasikan sbb : int A[10];maka jumlah elemen Array dimensi satu tersebut adalah   =   10
PEMETAAN (MAPPING) ARRAY DIMENSI SATU KE STORAGE
Rumus :  @A[i] = B  + (i–1)* L
Dimana : @A[i]  : Posisi Array yg dicari B: Posisi awal index di memory komputer i  : Subkrip atau indeks arrayyg dicari L: Ukuran / Besar memory suatu type data.
Contoh: Suatu  Array A dideklarasikan sebagai berikut : int A[5]; dengan alamat awal index berada di 0011 (H)dan ukuran memory type data integer = 2  Tentukan berapa alamat array A[3] ?
Rumus : @A[i] = B  + (i–1)* L
Diketahui: @A[i] =  A[3]
                         B=  0011 (H)
                         i=  3
                         L=  2
Penyelesaian : A[3] = 0011(H)+ (3 –1) * 2
                                 = 0011(H) + 4 (D) 
                                 = 0011(H) + 4 (H)
                                 = 0015(H)
    0       1         2         3         4
 A[1]  A[2]   A[3]    A[4]    A[5]
0011    0013   0015    0017   0019

Array Dimensi Dua

                 2. ARRAY DIMENSI DUA
                     Sering digunakan dalam menterjemahkan matriks pada pemrograman.
                     Deklarasi : Type_DataNama_Variabel [Index1] [index2];
                     Misal : int A[3][2];

Rumus untuk menentukan jumlah elemen Array
                n
                π(Elemen array)
                 i=1
Contoh: Suatu Array X dideklarasikan sbb : int X[4][3]; maka jumlah elemen Array dimensi dua tersebut adalah :
(4) * (3)  =  12
PEMETAAN (MAPPING) ARRAY DIMENSI DUA KE STORAGE
Terbagi Dua cara pandang (representasi) yang berbeda:

1. Secara Kolom Per Kolom (Coloumn Major Order/CMO)
@M[i][j] = M[0][0] + {(j -1) * K + (i -1)} * L

2. Secara Baris Per Baris (Row Major Order/ RMO
 @M[i][j] = M[0][0] + {(i -1) * N + (j -1)} * L

Keterangan: @M[i][j] = Posisi Array yg dicari, 
                        M[0][0] = Posisi alamat awal index array,I= Baris, J = kolom, L = Ukuran memory type data, K = Banyaknya elemen per kolom,N = Banyaknya elemen per baris

Misal : int M[3][2];
    (Array dengan 3 Baris & 2 Kolom)
Berdasarkan Cara pandang:

1.Kolom PerBaris(RowMajor Order/ RMO)
 M[0,0]M[0,1]M[1,0]M[1,1]M[2,0]M[2,1]
Jumlah elemen perbaris = 2

2. BarisPerKolom (Coloumn Major Order/ CMO)
M[0,0]M[1,0]M[2,0]M[0,1]M[1,1]M[2,1]
Jumlah elemen per kolom = 3

Contoh Pemetaan :
Suatu  Array X dideklarasikan sebagai berikut : Float X[4][3], dengan alamat index X[0][0] berada di 0011(H)dan ukuran type data float = 4 
Tentukan berapa alamat array X[3][2]  berdasarkan cara pandang baris dan kolom ?

Penyelesaian :
Secara BarisPer Baris(RowMajor Oder/ RMO) 
@M[i][j]= @M[0][0] + {(i-1) * N+ (j-1)} * L 
X[3][2]=0011(H)+ {(3 –1) * 3 + (2 –1)} * 4
= 0011(H)+ 28 (D)1C (H) 
= 0011(H)+ 1C (H)
= 002D(H)

Penyelesaian :
Secara Kolom Per Kolom (Coloumn Major Oder/ CMO) 
@M[i][j]= @M[0][0] + {(j -1) * K + (i -1)} * L 
X[3][2] = 0011(H) + {(2 –1) * 4 + (3 –1)} * 4
 = 0011(H) + 24 (D)18 (H)
 = 0011(H) + 18 (H) 
 = 0029(H)