Jumat, 23 Oktober 2015

pemetaan array ke storage



                pemetaan array ke storage Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori. Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1. kesederhanaan dari akses elemen
2. mudah untuk ditelusuri
3. efisiensi dari utilitasi storage
4. mudah dikembangkan
            Umumnya tidaklah mungkin untuk mengoptimalkan keempat faktor tersebut
sekaligus. Pandang array satu dimensi NOPEG dengan batas bawah subscript 1, dan batas
atas subscript = N. Salah satu cara untuk menyimpan array ini adalah sedemikian sehingga urutan fisik dari elemen sama dengan urutan logik dari elemen. Storage untuk elemen NOPEG(I+1) adalah berdampingan dengan storage untuk elemen NOPEG(I), untuk setiap I = 1, 2, 3,..., N-1.

            Untuk menghitung alamat (address) awal dari elemen NOPEG(I), diperlukan untuk mengetahui 2 hal yakni :
1. address awal dari ruang storage yang dialokasikan bagi array tersebut.
2. ukuran dari masing-masing elemen array.
Address awal dari array, kita nyatakan dengan B, disebut juga base-location. Misalkan
bahwa masing-masing elemen dari array menduduki S byte.

Maka, address awal dari elemen ke-I adalah :
B + (I-1) * S

Sekarang kita perluas persamaan di atas untuk mendapat address dari elemen ke-I dari
array yang mempunyai batas bawah subscript tidak sama dengan 1. Perhatikan array
Z(4:10), maka address awal dari Z(6) adalah :

B + (64) * S

Untuk array Z2 (-2:2) misalnya, address awal dari Z2(l) adalah :
B + (I -(-2)) * S

Maka secara umum, untuk array :
ARRAY(L:U),

elemen ARRAY(I) mempunyai address awal
B + (U-L) * S

Array
Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat di sajikan secara logik oleh array.
Array adalah suatu tipe data terstuktur yang berupa sejumlah data sejenis (bertipe data sama) yang jumlahnya tetap dan diberi suatu nama tertentu.

Elemen-elemen array tersusun secara sekuensial di dalam memori sehingga memiliki alamat yang berdekatan. Array dapat berupa array 1 dimensi, 2 dimensi, bahkan n-dimensi. Elemen-elemen array bertipe data sama tapi bisa bernilai sama atau berbeda-beda. Array digunakan untuk menyimpan data-data yang diinputkan masing-masing kedalam memory komputer. Jadi jumlah datanya banyak namun satu jenis.
Karaktersitik Array :
1. mempunyai batasan dari pemesanan alokasi memory (bersifat statis)
2. mempunyai type data sama (homogen)
3. dapat di akses secara acak.
4. berurutan (terstruktur)

1. ARRAY DIMENSI SATU
Deklarasi         : Type_Data Nama_Variabel [index]
Rumus untuk menentukan jumlah elemen dalam array adalah :

p = 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 tipi data

PEMETAAN KE STORAGE TERHADAP ARRAY DIMENSI BANYAK

Karena memori komputer adalah linear, maka array dimensi banyak harus dilinearkan
apabila akan dipetakan ke dalam storage. Salah satu alternatif untuk pelinearan tersebut adalah menyimpan pertama kali baris pertama dari array, kemudian baris ke-2, baris ke-3 dan seterusnya. Ini disebut row major order.
Misalkan B adalah base-location dari array RATE tersebut, dan masing-masing elemen
dari array berukuran S. Address awal dari elemen RATE(I,J) adalah :

B + (I-1) * 6 * S + (J-1) * S

karena ada I-1 baris, masing-masing dengan panjang 6 * S, sebelum baris elemen
RATE(I,J) terletak, dan terdapat J- 1 elemen, masing-masing dengan panjang S sebelum
elemen RATE(I,J) pada baris ke-I. Jadi, pada contoh di atas RATE(2,4) mempunyai
address awal :


2. Array Dimensi banyak
 -  Dimensi dua (matrix / tabel )
 - Dimensi tiga (kubik)

Array multi dimensi berarti array yang kita deklasaikan dapat dikembangkan ke array dimensi 2 dan seteruanya. Array multi dimensi merupakan topik yang menarik dalam matematika. Setiap dimensi dalam array direpresentasikan sebagai sub bagian dalam array.

Oleh karena itu, array dua dimensi array memiliki dua sub bagian, sebuah array tiga-dimensi memiliki tiga sub bagian dan sebagainya. Sebuah contoh bentuk nyata yang baik dari array dua dimensi adalah sebuah papan catur. Satu dimensinya merupakan delapan baris, sedangkan dimensi lainnya merupakan delapan kolom.

Array dua dimensi sering kali digambarkan/dianalogikan sebagai sebuah matriks atau bentuk grid. Jika array berdimensi satu hanya terdiri dari 1 baris dan banyak kolom, array berdimensi dua terdiri dari banyak baris dan banyak kolom yang bertipe sama.
Array dua dimensi merupakan array yang terdiri dari M buah baris dan N buah kolom. Bentuknya dapat berupa matriks atau tabel.

Bentuk Umum : 
Tipe_Data Nama_Variabel [index-1] [index-2]

Inisialisasi array dua dimensi
Seperti array berdimensi satu, array berdimensi dua juga bisa diinisialisasi.

Fungsi Array.
Jika suatu fungsi memberikan hasil balik, maka nilai hasil balik yang diberikan oleh fungsi dapat dilakukan oleh statement return yang diikuti  oleh nilai hasil baliknya yang ditulis tanda kurung.

           
Keuntungan penggunaan array sebagai tipe data dibandingkan dengan penggunaan tipe data yang lain adalah kemampuannya yang dapat mengumpulkan beberapa data yang bertipe sama dalam satu variabel, sehingga dalam pembuatan program yang terdiri dari beberapa tipe yang sama, tidak membutuhkan banyak variabel.
Array juga dapat berfungsi sebagai pointer untuk menunjukan index yang sedang kita
gunakan.

Matrik merupakan Implentasi dan penggunaan Array / larik multidimensi, dan matrik yang terbentuk akan dapat di tambahkan, dikalikan dan lain-lain. Vektor merupakan ADT (abstrak data type), dimana struktur data Vektor sesungguhnya cukup serupa dengan lank I dimensi. keduanya baik lank maupun vektor dapat menyimpan beberapa nilai yang bertipe data yang sama serta dapat diakses secara acak, banyak kemudahan pada ADT Vektor java, method method yang diperlukan untuk  melakukan manipulasi data vektro sudah tersedia di java Interface Vektor, sebelum dapat digunakan class program java hams memanggil java.util.Vector;,sehingga semua interface vektor (method) akan dapat dikenali Konstruktor new Vector() membuat vektor tanpa elemen.
Mendeklarasikan variabel bertipe Vektor dengan nama vektor
Vector<Integer> vector;
Membuat objek vektor dengan tipe integer dgn ukuran vektor tertentu
vector = new Vector<Integer>(ukuranVector);

Misalnya vec adalah suatu Vector. Maka:
a. vec.size() adalah fungsi untuk mengembalikanjumlah elemen di dalam vektor.
b. vec.addElement(obj) akan menambahkan Object obj di akhir vektor.
c. Vec. add(obj) dapat digunakan menambah Objek data pada vektor
d. vec.removeEiement(obj) menghapus obj dan dalam vektor. kaiau ada. I—Ianya objek pertama yang ditemui akan dihapus. Sama dengan remove(obj) pada kelas ArrayList
e. vec.removeElementAt(N) menghapus elemen ke-N. N harus berada pada rentang 0 hingga
f. vec.get() untuk mengembalikan elemen yang terseimpan di index yang dispesifikasi.
g. Vec.set() nilal index path posis indek berubah dan nilai lama dikembalikan ke program pemanggil
h. vec.size() - 1. Sama dengan remove(N) pada ArrayList
i.vec.setSize(N) akan mengubah ukuran vektor menjadi N. Jika di dalam vektor terdapat elemen yang jumlahnya lebih banyak dan N, maka elemen lainnya akan dihapus. Jib lebih sedikit, maka tempat kosong akan diisi dengan null.
Kelas ArrayList tidak memiliki metode seperti mi. Kelas Vector memiiki banyak metode lagi, akan tetapi mi adalah metode yang sering digunakan. 

Ada tiga jenis matrik dasar yaitu :
1.         Matrik yang semua elemennya bernilai satu : A =
ones (3,3) maka semua elemen matriks A (3×3) bernilai satu
2.       Matrik yang semua elemennya bernilai nol : A =
zeros (3,3) maka semua elemen matriks A bernilai nol
3.       Matriks acak : A = rand (3,3) atau A = randn (3,)

Kelas Vector memiiki banyak metode lagi, akan tetapi mi adalah metode yang sering digunakan. 

           Berikut source codenya :
                                  package tugas;
                                  /**
                                  *
                                  * @author hendrik
                                  */ 
                                  import java.io.BufferedReader; 
                                  import java.io.IOException;   
                                  import java.io.InputStreamReader;
                                  public class Matriks {
                                         static int[][] Matriks1=new int[10][10];
                                         static int[][] Matriks2=new int[10][10];
                                         static int[][] MatriksHasil=new int[10][10];
                                         static int ukuran;
                                         public static void main(String[] args){
                                                 System.out.print("Masukkan ukuran Matriks:\n ");
                                                 ukuran=inputData();
                                                 bacaMatriks();
tambahkanMatriks();
 tulisHasil();
   }
private static void tulisHasil(){
System.out.println("\n\nMatriks Hasil Perkalian: ");
 for (int i=0; i<ukuran; i++){
 for (int j=0; j<ukuran; j++){
System.out.print(MatriksHasil[i][j] + " ");
  }
 System.out.println("");
  }
 }
private static void tambahkanMatriks(){
for (int i=0; i<ukuran; i++){
 for (int j=0; j<ukuran; j++){
                                                               MatriksHasil[i][j]=Matriks1[i][j]+Matriks2[i][j];
   }
  }
  }

private static void bacaMatriks(){
System.out.println("\nMasukkan Data Matriks 1 : ");
for (int i=0; i<ukuran; i++){
for (int j=0; j<ukuran; j++){
System.out.print("Matriks ["+(i+1)+"]["+(j+1)+"]:");
Matriks1[1][j]=inputData();
 }
  }
System.out.println("\n\nMasukkan Data Matriks 2: ");
for(int i=0; i<ukuran; i++){
for(int j=0; j<ukuran; j++){
System.out.println("Matriks["+(i+1)+"]["+(j+1)+"] :");
Matriks2 [i][j]=inputData();
 }
 }
  }
private static int inputData()
{BufferedReader bfr=new BufferedReader(new      InputStreamReader(System.in));
String angkaInput=null;
Try{
angkaInput=bfr.readLine();
}catch (IOException e){
}
int Data=Integer.valueOf(angkaInput).intValue();
return Data;
}
} 

 





Pemetaan array ke storage 
            Seperti halnya struktur data yang lain, ada beberapa cara untuk menyajikan array di dalam memori.
Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik, yakni :
1.         kesederhanaan dari akses elemen
2.       mudah untuk ditelusuri
3.       efisiensi dari utilitasi storage
4.       mudah dikembangkan

Sebagai contoh, array yang dideklarasikan sebagai RATE(1:4,1:6), yang secara logika
tergambar sebagai pada Gambar.