YayBlogger.com
BLOGGER TEMPLATES

Sabtu, 15 Desember 2012

ASD - ADT Array 2 Dimensi



Algoritma dan Struktur Data

ADT Array 2 Dimensi


Oleh

Nama          : Gusnia Syukriyawati
NIM            : 115090607111036

Program Teknologi Informatika dan Ilmu Komputer
Universitas Brawijaya
Malang
2012

BAB I
Pendahuluan

I.1 Dasar Teori
Array adalah salah satu tipe bentukan terstruktur (structured user-defined tipe). Array atau larik dibutuhkan untuk menyimpan serangkaian elemen yang bertipe sama, berstruktur homogen (homogenous structure), yang disebut tipe basis (base type).
Array juga disebut struktur yang dapat diakses secara acak (random-access structure) karena semua elemen array dapat diacu secara acak dengan aturan tertentu, yaitu dengan mengetahui nomor urutnya yang disebut dengan indeks (index).

ARRAY DUA DIMENSI

Array 2 dimensi merupakan representasi matrik M×N yang banyak digunakan untuk mewakilkan struktur data logik dari sebuah antrian (queue), stack atau graph. Sebenarnya array n dimensi ini (n bernilai lebih besar dari 1) merupakan pelajaran dasar dari algoritma. Singkatnya, Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom. Bentuknya dapat berupa matriks atau tabel.

Bentuk umum pendeklarasian variabel array dua dimensi di Java adalah:

tipeData[][]nama_variabel[=new tipeData[jumlah_baris][jumlah_kolom]];

Untuk memudahkan pemahaman, bentuk array dua dimensi bisa dihambarkan dalam bentuk petak-petak sebagai berikut:

            N adalah nilai yang menyatakan jumlah baris dari array, sedangkan M menyatakan jumlah kolom dari array. Sama seperti array satu dimensi, penomoran indeks untuk array dua dimensi juga dimulai dari 0 untuk baris maupun kolomnya. Tidak ada aturan yang mengatakan bahwa urutan untuk nomor indeks adalah baris dulu baru kolom.


Contoh array 2 dimensi:

tipeData[][]nama_variabel[=new tipeData[jumlah_baris][jumlah_kolom]];
int x[3][4];


BAB II
Pembahasan

II.1 Source Code
No
Larik.java

package Prak2;


public class Larik {
      // data (struktur data)
      private int size;
      private int[] itemDt;
             
      // method
      public void buatLarik(int n) {
            this.size = n;
            this.itemDt = new int[this.size];
      }
             
      public Larik(int n) {
            buatLarik(n);
      }
             
      public int getSize() {
            return this.size;
      }
             
      public Larik(int[] dt) {
            buatLarik(dt.length);
            for (int i = 0; i < dt.length; i++)
              isiItem(i, dt[i]);
            }
             
      public void isiItem(int id, int dt) {
            this.itemDt[id] = dt;
      }
             
      public void cetak(String komentar) {
            System.out.println(komentar);
            for (int i = 0; i < this.size; i++) {
                  System.out.printf(this.itemDt[i] + " ");
            }
            System.out.println();
      }
             
      public int getPosisi(int dtCari) {
            int pos = -99;
            boolean ketemu = false;
            int i = 0;
            while (!ketemu && i < this.size) {
                  if (dtCari == this.itemDt[i]) {
                        ketemu = true;
                        pos = i;
                  }
                  i++;
            }
            return pos;
      }
             
      public void setSize(int a) {
            this.size = a;
            this.itemDt = new int[this.size];
      }
             
      public Larik copyLarik(int k, int n) {
            Larik lHasil = null;
            if (n <= this.size - k) {
                  lHasil = new Larik(n);
                  int j = 0;
                  for (int i = k; i < k + n; i++) {
                        lHasil.isiItem(j++, this.itemDt[i]);
                  }
            }
            return lHasil;
      }
             
      public int getItem(int i) {
            return this.itemDt[i];
      }
}

No
Matrik.java

package Prak3;

import Prak2.Larik;

public class Matrik {

       //Data
       private int nBaris, nKolom;
       private int [][]itemDt;
      
       public Matrik (int nBrs, int nKlm){
              nBaris = nBrs;
              nKolom = nKlm;
              itemDt = new int [nBaris][nKolom];
       }
      
       public Matrik (int [][] dt){
              nBaris = dt.length;
              nKolom=dt.length;
              this.itemDt = new int [nBaris][nKolom];
              for(int i = 0; i < nBaris; i++){
                     for(int j= 0; j < nKolom; j++){
                           this.setItem(i,j,dt[i][j]);
                     }
              }
       }
       /**
        * Fungsi untuk mendapatkan jumlah baris
        * @return jumlah baris
        */
       public int getNBaris(){
              return nBaris;
       }
      
       public int getNKolom(){
              return nKolom;
       }
      
       public int getItem(int idB,int idK){
              return this.itemDt [idB][idK];
       }
      
       public void setItem(int idB, int idK, int dt){
              this.itemDt[idB][idK] = dt;
       }
      

       public Matrik kali(Matrik m){
              Matrik n = null;
              if(this.nKolom == this.nBaris){
                     n = new Matrik(m.getNBaris(), m.getNKolom());
                     for (int i = 0; i < m.getNBaris(); i++) {
                           for (int j = 0; j < m.getNKolom(); j++) {
                                  int x =0;
                                  for (int k = 0; k < m.getNKolom(); k++) {
                                         x += this.itemDt[i][k]* m.getItem(k, j);
                                  }
                                  n.setItem(i, j, x);
                           }
                     }
              }
              return n;
       }
      
      public Larik getBaris(int a) {
              Larik gb = new Larik(this.getNKolom());
              for (int i = 0; i < this.nKolom; i++) {
                     gb.isiItem(i,this.getItem(a - 1, i));
              }
              return gb;
       }

       public Larik getKolom(int a) {
              Larik gk = new Larik(this.getNKolom());
              for (int i = 0; i < this.nBaris; i++) {
                     gk.isiItem(i,this.getItem(i,a - 1 ));
              }
              return gk;
       }
      
      public void cetak(String kom){
              System.out.println(kom);
              for(int i = 0; i < this.nBaris; i++){
                     for (int j = 0; j < this.nKolom;j++){
                           System.out.print(itemDt[i][j]+ " ");
                     }
                     System.out.println();
              }
       }
      
       public static void main (String[] args){
              //implementasi untuk ADT_Matrik
              Matrik A,B,C;
              Larik D;
             
              int [][] X ={{1,2,3},{4,5,6},{7,8,9}};
              int [][] Y ={{9,8,7},{6,5,4},{3,2,1}};
             
              A = new Matrik (X);
              B = new Matrik (Y);
             
              A.cetak("Matrik A");
              B.cetak("\nMatrik B");
             
              C = A.kali(B);
              C.cetak("\nMatrik C = A x B");   
             
              D = C.getBaris(3);
              D.cetak("\nMatrik C baris 3 " );
             
              D = C.getKolom(2);
              D.cetak("\nMatrik C kolom 2"  );
       }            
}
      


II.2 Output

BAB III
Penutup

III.1 Kesimpulan
  • Array adalah kmpulan dari nilai nilai data bertipe sama dalam urutan tertentu yang menggunakan sebuah nama yang sama.
  • Letak urutan nilai nilai array ditunjukkan oleh suatu index.
  • Array dapat dilewatkan sebagai parameter fungsi.
  • Array bisa berupa array berdimensi satu, dua, tiga, atau lebih.
  • Array dua dimensi merupakan array yang terdiri dari m buah baris dan n buah kolom.
  • Bentuknya dapat berupa matriks atau table.
  • Deklarasi array : Type_array nama_array[baris][kolom];
III.2 Saran
1.      Mengajarkan materi secara bertahap hingga mahasiswa mengerti.
2.      Menerangkan dan membahas tugas yang sudah di kumpulkan jika masih ada yang belum dimengerti.

Daftar Pustaka

2.      http://robbyelmanto.files.wordpress.com/2010/05/bab-7.doc