Kamis, 19 Desember 2013

Laporan Praktikum Struktur Data 7-8



STRUKTUR DATA
MODUL VII













Nama        : Demy Octiana Azmianti
NIM           : 125610118
Jurusan     : Sistem Informasi

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013
Pembahasan Listing :
   1.   class simpul
{ public
     String elemen;
     simpulkiri;
     simpulkanan;
public
     voidngisiElemen(String ELEMEN)
     { elemen = ELEMEN;
     }
     }
Merupakan kelas dengan nama simpul, di dalam kelas ini terdapat tipe data string dengan nama elemen, simpul kanan dan simpul kiri. Terdapat pula sebuah method dengan nama ngisiElemen yang dikerjakan dengan tipe data string dengan nama variabelnya ELEMEN dan method ini bersifat public sehingga dapat diakses oleh semua method yang ada di program ini.

   2.   class pohon
{ public
     simpulakar;
public
voiddeklarasiPohon()
{ akar  = null;
    }
Merupakan kelas dengan nama pohon, didalam kelas tersebut hanya terdiri simpul akar dan memiliki method dengan nama deklarasi Pohon, yang bersifat public yang berarti bisa diakses oleh semua method yang ada di dalam program ini dan menyatakan pula bahwa akar sama dengan null.

   3.   simpultambahSimpul(simpulPenunjuk, String ELEMEN)
{  if (Penunjuk == null)
{ simpulbaru = new simpul();
baru.ngisiElemen(ELEMEN);
baru.kiri = null;
baru.kanan = null;
Penunjuk = baru;
return(Penunjuk);
   }
Merupakan method dengan nama tambah simpul dengan variabel Penunjuk dan ELEMEN. Menggunakan pernyataan if yaitu jika penunjuk sama dengan null, berarti node dalam keadaan kosong. Sehingga obyek baru diciptakan, yaitu dengan nama baru. Maka simpul baru akan masuk ke dalam pohon dengan perintah atau method ngisiElemen, sehingga simpul baru masuk maka simpul tersebut akan menjadi ELEMEN atau simpul dalam pohon., dan terdapat satu simpul/node, dan simpul elemen tersebut pada sisi kiri dari simpul tersebut bernilai null dan pada sisi kanannya pula akan bernilai null dan simpul tersebut akan menjadi penunjuk dalam pohon.

   4.   else
{ if (ELEMEN.compareTo(Penunjuk.elemen) < 0 )
{ Penunjuk.kiri = tambahSimpul(Penunjuk.kiri, ELEMEN);
return(Penunjuk);
     }
Selain itu jika penunjuk tidak sama dengan null maka dihadapkan pula dalam sebuah kondisi. Jika ELEMEN dibandingkan dengan penunjuk elemen dan hasilnya lebih kecil dari 0 maka akan dikerjakan perintah selanjutnya yaitu penunjuk ke kiri sama dengan melakukan tambah simpul dan simpul penunjuk akan ke kiri dari ELEMEN. Dan akan dilakukan nilai pengembalian penunjuk tersebut seperti semula. Jika elemen atau simpul yang akan masuk dalam pohon dibandingkan dengan penunjuk simpul lebih kecil maka akan berada pada posisi kiri dari penunjuk tersebut dan akan dikembalikan lagi nilai penunjuk seperti semula.

   5.   else
{ Penunjuk.kanan= tambahSimpul(Penunjuk.kanan, ELEMEN);
return(Penunjuk);
     }}}
Penunjuk ke kanan sama dengan melakukan tambah simpul petunjuk ke kanan untuk menjadikan elemen atau simpul dalam pohon, maka setelah perintah tersebut telah dilakukan, akan dikerjakan nilai pengembalian penunjuk seperti semula.

   6.   void preOrder(simpulPenunjuk)
{ if(Penunjuk != null)
{ System.out.print(Penunjuk.elemen + ",");
preOrder(Penunjuk.kiri);
preOrder(Penunjuk.kanan);
  }}
Method dengan PreOrder yang merupakan simpul penunjuk. Jika simpul penunjuk tidak sama dengan null, maka elemen pun dicetak. Kemudian preOrder(Penunjuk.kiri)dimulai dari kiri, yang menyatakan bahwa simpul penunjuk akan ke kiri hingga penunjuk bernilai null, maka tidak akan dikerjakan. Kemudian akan berpindah ke preorder(Penunjuk.kanan)untuk dikerjakan.

   7.   void inOrder(simpulPenunjuk)
{ if(Penunjuk != null)
{ inOrder(Penunjuk.kiri);
System.out.print(Penunjuk.elemen + ",");
inOrder(Penunjuk.kanan);
    }}
Method in order dengan menggunakan simpul penunjuk sebagai penelusuran dalam pohon. Di dalam method ini terdapat sebuah kondisi jika penunjuk tidak sama dengan null, maka akan dikerjakan perintah inOrder(Penunjuk.kiri), berarti node dibaca dari kiri. Dan kemudian elemen akan dicetak , dan setelah dicetak, maka akan dikerjakan selanjutnya adalah membaca node pohon ke kanan dengan perintah inOrder(Penunjuk.kanan).

   8.   void postOrder(simpulPenunjuk)
{ if(Penunjuk !=null)
{ postOrder(Penunjuk.kiri);
postOrder(Penunjuk.kanan);
System.out.print(Penunjuk.elemen + ",");
    }}}
Method postOrder dengan menggunakan simpul penunjuk juga sebagai penelusuran dalam pohon. postOrder(Penunjuk.kiri) membaca node pohon yang dimulai dari kiri, kemudian akan dikerjakan parintah postOrder(Penunjuk.kanan) yang mana simpul penunjuk akan dibaca dari kanan, setelah itu dilakukan kunjungan pada node dalam pohon dari kiri maka selanjutnya pada program ini akan dilakukan ke kanan. Setelah itu perintah System.out.print(Penunjuk.elemen + ",")untuk mencetak elemen.

   9.   class ProgramPohonBiner
{ public static void main(String[] args)
{ pohonPohonBiner = new pohon();
Merupakan class utama dari program Pohon Biner ini. Dengan menciptakan objek pohon yang baru dan akan dihasilkan output.

   10.  PohonBiner.deklarasiPohon();
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "M");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "P");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "D");

PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "A");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "S");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "K");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "N");

PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "G");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "O");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "L");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "W");

PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "F");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "J");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "T");

PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "H");
PohonBiner.akar =PohonBiner.tambahSimpul (PohonBiner.akar, "U");
PohonBiner.preOrder(PohonBiner.akar);
PohonBiner.inOrder(PohonBiner.akar);
PohonBiner.postOrder(PohonBiner.akar);
  }
}
Terdapat 16 simpul yang akan dimasukkan ke dalam pohon, dengan simpul pertama akan menjadi root dalam pohon. Dari data atau simpul diatas dapat diketahui bahwa yang menjadi root adalah M. kemudian semua simpul akan di kerjakan dengan perintah tambah simpul dan dilihat letak posisinya yang akan dibandingkan dengan penunjuk simpul. Dari simpul tersebut akan ada 16 akar yang akan masuk dalam pohon biner



TUGAS
class simpul{
    public String elemen;
    simpul kiri;
    simpul kanan;
    public void ngisiElemen(String ELEMEN){
        elemen=ELEMEN;
    }
}
class pohon{
    public simpul akar;
    public void deklarasiPohon(){
        akar=null;
    }
    simpul tambahSimpul (simpul Penunjuk, String ELEMEN){
        if (Penunjuk==null){
            simpul baru=new simpul();
            baru.ngisiElemen(ELEMEN);
            baru.kiri=null;
            baru.kanan=null;
            Penunjuk=baru;
            return (Penunjuk);
        }
        else{
            if (ELEMEN.compareTo(Penunjuk.elemen)<0){
                Penunjuk.kiri=tambahSimpul(Penunjuk.kiri, ELEMEN);
                return (Penunjuk);
            }
            else{
                Penunjuk.kanan=tambahSimpul(Penunjuk.kanan, ELEMEN);
                return (Penunjuk);
            }
        }
    }
    void preOrder (simpul Penunjuk){
        if (Penunjuk!=null){
            System.out.print(Penunjuk.elemen+", ");
            preOrder(Penunjuk.kiri);
            preOrder(Penunjuk.kanan);
        }
    }
    void inOrder (simpul Penunjuk){
        if (Penunjuk!=null){
            preOrder(Penunjuk.kiri);
            System.out.print(Penunjuk.elemen+", ");
            preOrder(Penunjuk.kanan);
        }
    }
    void postOrder (simpul Penunjuk){
        if (Penunjuk!=null){
            preOrder(Penunjuk.kiri);
preOrder(Penunjuk.kanan);
            System.out.print(Penunjuk.elemen+", ");
        }
    }
}
public class ProgramPohonBiner {
        public static void main(String[] args) {
        pohon PohonBiner = new pohon();
        PohonBiner.deklarasiPohon();
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "D");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "E");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "M");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "Y");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "O");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "C");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "T");
           PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "I");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "A");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "N");
        PohonBiner.akar=PohonBiner.tambahSimpul(PohonBiner.akar, "A");
        PohonBiner.preOrder(PohonBiner.akar);
        System.out.println("perOrder");
        PohonBiner.inOrder(PohonBiner.akar);
        System.out.println("inOrder");
        PohonBiner.postOrder(PohonBiner.akar);
        System.out.println("postOrder");
    }
}




LAPORAN PRAKTIKUM
STRUKTUR DATA
MODUL VIII













Nama        : Demy Octiana Azmianti
NIM           : 125610118
Jurusan     : Sistem Informasi

JURUSAN SISTEM INFORMASI
SEKOLAH TINGGI MANAJEMEN DAN INFORMATIKA
AKAKOM YOGYAKARTA
2013


Pembahasan Listing 1 :
1.       import java.util.*;: untuk mengimport class-class yang ada pada java util

2.  public class Example {
private List list;
public List getList(){
return list;} : Example merupakan nama class dari program ini dan memiliki tingkat akses private yang berarti data dan method dapat diakses oleh class yang memilikinya saja. Dan dengan menggunakan variabel list dari tipe data List. Public List getList() merupakan konstruktor yang dapat diakses semua bagian atau method dalam program ini dengan perintah getList makan nilai List akan dikembalikan.

3.  Example(){
list= new ArrayList();
list.add(new String("Hello world!"));
list.add(new String("Good bye!"));} : merupakan bagian dari program example dengan menciptakan list dengan variable ArrayList, yang terdiri dari list yang ditambah dengan tipe data String dengan variabel atau isi dari tipe data tersebut adalah “Hello world”, kemudian ditambah lagi datanya dengan tipe data String pula yang menyatakan pernyataan “Good bye!”

4.  public void printList(){
for (Object  s:list) {
System.out.println(s);}} : sebuah method atau konstruktor dengan nama printList dan pada method ini dapat diakses oleh semua method lain yang terdapat dalam program ini. Method ini akan membaca dari class Example dengan perulangan yang menyatakan objek s adalah list atau daftar yang ditambah dari class example tersebut. Dengan menggunakan perintah Sytem.out.println(s) menampilkan hasil dari perulangan for tersebut.

5.  public static void main(String args[]) {
Example e = new Example ();
e.printList();
Collections.sort(e.getList());
e.printList();}} :method bersifat public yang bisa diakses oleh semua method yang ada pada program juga merupakan perintah method dengan memulai program dengan method main. Dalam method tersebut, diciptakannya objek dari class example dan akan dibawa ke dalam method printList untuk di eksekusi atau ditampilkan pada outputnya.





Pembahasan Listing 2 :

          1.         import java.awt.Graphics;: berfungsi untuk menampilkan grafiks dalam program java

          2.         import java.util.LinkedList;: berfungsi untuk mengatur data dalam bentuk LinkedList yang ada pada program ini

          3.         import javax.swing.JFrame; : berfungsi untuk menampilkan dan mengatur bentuk form atau Jframe dalam program tersebut

   4.   public class PercobaanLinked extends JFrame {
      public static void main(String args[]) {
new PercobaanLinked();} : class dengan nama PercobaanLinkedList dengan memulai program dengan method yang void mainnya. new PercobaanLinkedList merupakan awal dari class program ini.

   5.   LinkedList l1 = new LinkedList();
     PercobaanLinked() {
           l1.add("Test LinkedList");
           l1.add("Coba Lagi");
           l1.add(10243);
           this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);
           this.setSize(500,500);
           this.setVisible(true);
     setTitle("Test LinkedList");}: akan dilakukan penciptaan objek dari kelas LinkedList yaitu dengan nama l1dari kelas PercobaanLinkedList akan melakukan penambahan objek yang dilakukan dari penciptaan objek tersebut. Seperti melakukan penambahan data pada objek l1yang memiliki pernyataan “Test LinkedList”, kemudian dilakukan lagi penambahan data dari penciptaan objek baru l1 dengan pernyataan “Coba Lagi” dan dilakukan lagi penambahan data dari penciptaan objek baru l1 dengan pernyataan “10243”. Terdapat kunci this yang berarti menunjuk pada konstruktor atau method yang dituju dalam program ini, yaitu this menyatakan mengatur operasi tutup dari form dekstopnya, yaitu berupa exit_on_close, untuk keluar form tersebut. Sehingga untuk membuat form tersebut dibutuhkan ukuran, maka terdapat kata kunci yang menunjuk pada perintah setSize untuk mengatur ukuran form dengan ukuran 500 x 500. Kemudian untuk mengatur tampilan hasil form nya dibutuhkan perintah setvisible yang bernilai true, dan setTitle merupakan pengaturan untuk judul pada form yang dibuat. Dan pada program ini membuat form dengan judul “Test LinkedList”.

   6.   public void paint(Graphics g) {
g.drawString("Jumlah Elemen : "+String.valueOf(l1.size()), 10, 50); : method dengan nama paint dengan menggunakan bentuk graphics bernama g dan akan menampilkan kata di antara petik dua yaitu Jumlah Elemen dan disertai dengan isi dari tipe data string yang akan mengambil data dari data l1 dan memiliki nilai atau value yang memiliki ukuran 10 x 50. Sehingga dari perintah tersebut dapat diketahui bahwa di dalam LinkedList l1 terdapat 3 elemen.

   7.   g.drawString("Elemen ke-1: "+l1.get(0), 10, 100);
     g.drawString("Elemen ke-2: "+l1.get(1), 10, 150);
g.drawString("Elemen ke-3: "+l1.get(2), 10, 200); : menambahkan perintah yang sama namun dengan elemen yang berurutan berbeda

   8.   g.drawString("Method getFirst(): "+l1.getFirst(), 10, 250);
g.drawString("Method getLast(): "+l1.getLast(), 10, 300); : menampilkan isi dari g yang dibawa drawString yang kemudian akan menampilkan kata diantara petik dua, yaitu Method getFirst yang akan disertai dengan data l1 dengan ukuran 10 x 250 maka dari data yang ada pada l1, untuk data l1 yang ditambah pertama adalah “Test LinkedList” maka akan ditampilkan hasil tersebut. Kemudian akan mengambil data l1 dengan perintah getLast menggunakan ukuran 10 x 300 dari data l1 yang masuk dalam LinkedList, yang masuk terakhir adalah 10243 maka data tersebut akan ditampilkan saat dilakukan pemanggilan dengan getLast.

   9.   l1.addLast("Terakhir");
g.drawString("Method getLast(): "+l1.getLast(), 10, 350);: melakukan penambahan objek lagi terhadap l1 LinkedList dengan menggunakan perintah addLast yang berarti data yang akan masuk dalam LinkedList dengan nama l1, akan dilakukan penambahan dari belakang atau terakhir. Dari data sebelumnya yang berada dalam posisi terakhir adalah 10243, maka pada saat dilakukan l1.addLast dengan nama “Terakhir”, maka variabel data dengan nama terakhir akan menggantikan posisi 10243 sebagai method terakhir dalam LinkedList l1 ini.

        10.        l1.remove();: suatu perintah untuk menghapus data dalam LinkedList l1 maka aka nada satu data yang dipilih untuk dihapus.

        11.        g.drawString("Jumlah Elemen Sekarang: "+String.valueOf(l1.size()), 10, 400);}} : melakukan pengecekan jumlah elemen sekarang dan mengetahui jumlah elemen yang ada dalam LinkedListl1, yaitu terdapat 3 elemen terakhir, jumlah elemen yang ada dalam l1 adalah 4 elemen, saat dilakukan pemanggilan perintah remove maka akan ada satu elemen yang keluar atau terhapus dari l1, sehingga 4-1 = 3 elemen sekarang dalam l1.



Tidak ada komentar:

Posting Komentar