Selasa, 05 Januari 2016

STRUKTUR DATA 3 ARRAY & RECORD



ARRAY
Pengertian Array

            Array atau larik didefinisikan sebagai pemesanan alokasi memory berurutan.definisi ini kurang tepat, karena terjadi kerancuan antara struktur data dan representasinya. Memang benar array hampir selalu di implementasikan menggunakan memory berurutan tapi tidak selalu demikian.
Semua elemem array bertipe sama. Array cocok untuk organisasi kumpulan data homogen yang ukuran atau jumlah elemen maksimumnya telah diketahui dari awal. Homogen adalah bahwa setiap elemen dari sebuah array tertentu haruslah mempunyai tipe data yang sama.
Karakteristik Array
Ada tiga hal yang harus di ketahui untuk mengenal karakteristik Array, yaitu:
1.Mepunyai batasan dari pemesanan alokasi memori (bersifat statis)
2.Mempunyai tipe data sama (bersifat homogen)
3.Dapat diakses secara acak.
Deklarasi Array

Ada tiga hal yang harus di ketahui dalam mendeklarasikan array, yaitu :
Type data array
Nama variable array
Subkrip / index array.

Jenis-jenis Array:
     1.   Array Dimensi Satu (One Dimensional Array)
     2.   Array Dimensi Dua (Two Dimensional Array)
     3.   Array Dimensi Tiga (Thee Dimensional Array)

Contoh deklarasi dari array adalah sebagai berikut :

int A[5] : artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe integer. 
dalam  Array

1.      Array Dimensi Satu
Dapat disebut juga dengan dengan istilah vektor yang menggambarkan data dalam suatu urusan.
Deklarasi : Type_Data Nama_Variabel [index]
Misalnya: int A[5];
  N
i = 1
Penggambaran secara logika:
  Elemen array

A[1]
A[2 ]        
A[3]
A[4]        0          1          2          3          4
A[5]

Rumus untuk menentukan jumlah elemen array adalah :
 = Perkalian dari index sebelumnya (untuk arraybdimensi dua dan tiga).
Pemetaan (Mapping) Array Dimensi Satu Ke Storage


Rumus             :  @A[i] = B + (i – 1) * L

Dimana            :  @A[i]           :  Posisi array yang dicari
                                    B          :  Posisi awal index di memori computer
                                    i           :  Subkrip atau index array yang di cari
                                    L          :  Ukuran atau besar memori suatu tipe data



Contoh soal:
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]?
JAWABANNYA:

Diket:@A[i]= A[3]                             Penyelesaian:
                 B= 0011(H)                        A[3] = 0011(H)+(3-1)*2
                 i = 3                                            = 0011(H)+4(D)
                 L = 2                                           = 0011(H)+4(H)
                                                                     = 0015(H)                          4 Desimal= 4

Hexa
0          1          2          3          4


0011    0013    0015    0017    0019
 
Array Dimensi Dua

Sering di gunakan dalam menterjemahkan matriks pada pemograman.
Deklarasi         : Type_Data Nama_Variabel [index1] [index2];

Contoh:
int A[3][2];

n
i = 1

Menentukan jumlah elemen dalam array dimensi dua :
 = Perkalian dari statemen sebelumnya(untuk array dimensi dua & tiga)

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 yang di cari
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.
Penggambaran secara logika                                             0    1
 Contoh : int M[3][2]: (array dengan 3 baris & 2 kolom)   0   1
                                                                                           2

Berdasarkan Cara pandang :
1.      Kolom Per Baris (Row Major Order / RMO)

jumlah elemen per baris = 2

2.Baris Per Kolom (Coloumn Major Order / CMO)

jumlah perkolom=3
Contoh soal pementaan:
Suatu array x dideklarasikan sebagai berikut:
Float x[4][3],dengan alamat index x[0][0] berada di 0011(H) dengan ukuran type data float = 4,tentukan berapa array x[3][2].                                                  

Penyelesaian :

Secara Baris Per Baris (Row Major 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)

Lanjutan Contoh Pemetaan :
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)
Keunggulan array adalah sebagai berikut :

1.
Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.

2. Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemen-elemen pertama, elemen kedua,dan elemen ke-n.

3. Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga,maka penggunaan penyimpanannya sangat efisien.

4. Sebuah array dapat mempunyai elemen yang seluruhnya berupa integer atau character atau string bahkan dapat pula terjadi suatu array mempunyai elemen berupa array.
Kelemahan array adalah sebagai berikut :

1.Array mempunyai fleksibilitas rendah, sehingga tidak cocok untuk berbagai aplikasi karena array mempunyai batasan sebagai berikut :

2.Array harus bertipe homogen mempunyai type data yang sama. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain.

3.Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi  Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.

4.Tidak efisien dalam penggunaan memori

5.Menyiakan banyak waktu komputasi

6.Pada suatu aplikasi, representasi statis tidak dimungkinkan.
Contoh Program C++
1.         Array Dimensi Satu

#include<iostream.h>
#include<conio.h>
  main()
  {
       int data[5]; // array dengan 5 elemen bertipe integer
       int i;
       clrscr();
       cout<<"Input Data"<<endl; //entri 5 data
       for(i=0;i<=4;i++){
       cout<<"Data ke - "<<i<<": ";
       cin>>data[i];
       }
       cout<<"Cetak Data"<<endl; //tampilkan data setelah entri
       for(i=0;i <= 4;i++){
       cout<<"Data ke - "<<i<<":"<<data[i];
       }
   getch();
   return 0;
   }
Array Dimensi Dua
#include<iostream.h>
#include<conio.h>
main()
{
     int matrix[3][3];
     int i,j;
     for(i=0;i<=2;i++)
     {
         for(j=0;j<=2;j++)
     {
         cout<<"Masukkan angka pada baris ke "<<i<<" kolom ke "<<j<<" : ";
         cin>>matrix[i][j];
      }
          cout<<endl;
      }
          for(i=0;i<=2;i++)
      {
          for(j=0;j<=2;j++)
      {
          cout<<matrix[i][j]<<" ";
       }
          cout<<endl;
       }
getch();
}

Array Dimensi Dua
#include<iostream.h>
#include<conio.h>
main()
{
     int matrix[3][3];
     int i,j;
     for(i=0;i<=2;i++)
     {
         for(j=0;j<=2;j++)
     {
         cout<<"Masukkan angka pada baris ke "<<i<<" kolom ke "<<j<<" : ";
         cin>>matrix[i][j];
      }
          cout<<endl;
      }
          for(i=0;i<=2;i++)
      {
          for(j=0;j<=2;j++)
      {
          cout<<matrix[i][j]<<" ";
       }
          cout<<endl;
       }
getch();
}

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.
  


1 komentar:

  1. Bagaimana rumus cara mengetahui nilai L/ukuran memori data jika pada soal tidak ditentukan nilai "L" ?

    BalasHapus