LABORATORIUM PEMBELAJARAN ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
BAB
: STACK
NAMA
: M SATRIA PUTRA UTAMA
NIM
: 155150207111168
TANGGAL : 08/10/2016
ASISTEN
: ILHAM ROMADHONA
A.
DEFINISI MASALAH
1. Buat program untuk mengkonvesi dari bilang desimal ke representasi bilangan biner menggunakan program stack di atas.
2. Kembangkan program di atas dengan membuat stack yang berisi Object sehingga isi Stack dapat diisi sembarang object seperti object Double, objeck Buku dan lain sebaginya. Dengan potongan program driver sebagaimana gambar 5 dan class Buku sebagaimna gambar 6 akan menghasilkan keluaran sebagaimana gambar 7.
Gambar 5. Driver program ADT Stack Object public class AppStackObject {
public static void main(String[] args) { //implementasi Stack
StackObject st = new StackObject(3); st.push(new Double(5));
st.push(new Double(8)); st.push(new Double(7)); while (!st.isEmpty()){
System.out.println(st.pop()); }
StackObject stBuku = new StackObject(3); stBuku.push(new Buku("Java","Anton")); stBuku.push(new Buku("Algoritma dan STD","Achmad"));
stBuku.push(new Buku("C++","Budi")); while (!stBuku.isEmpty()){
System.out.println(stBuku.pop()); }
} }
Gambar 6. Class Buku Class Buku{
private String judul; private String pengarang;
public Buku(String jdl, String peng){ this.judul = jdl;
this.pengarang = peng; }
public String toString(){
return String.format("%s %s", this.judul, this.pengarang);
Gambar 6. Keluaran program 7.0
8.0 5.0 C++ Budi
Algoritma dan STD Achmad Java Anton
B.
SOURCE CODE
No.1
Stack.java 1
2 3
4
5 6 7
8
9 10 11 12 13
14 15 16
17 18 19 20 21
22 23 24 25 26
27 28 29 30 31 32
package asdpraktikum; import java.util.Scanner; public class Stack {
// Struktur Data
private int size; private int top; private int[] data;
// method
public Stack(int n) { top = -1;
size = n;
data = new int[size]; }
public boolean isPalindrome() { return true;
}
public boolean isFull() {
return top == (size - 1) ? true : false; //if (top == size-1)return true;
//else return false; }
public boolean isEmpty() {
return top == -1 ? true : false; //if (top == -1) return true; //else return false;
}
public void push(int dt) { if (!isFull()) {
data[++top] = dt; }
}
33 System.out.println("Konversi Desimal ke Biner "); System.out.print("Masukkan Bilangan Desimal = ");
9
package asdbab4; public class Buku {
private String judul, pengarang; private int top, size;
public Buku(String judul, String pengarang) { this.judul = judul;
this.pengarang = pengarang; }
@Override
public String toString() {
return String.format("%s %s", this.judul, this.pengarang); }
package asdpraktikum;
public class mainStackObject {
4
stBuku.push(new Buku("Algoritma dan STD", "Achmad")); stBuku.push(new Buku("C++", "Budi"));
C.
PEMBAHASAN
No.1
Package asdpraktikum. Deklarasi java util Scanner.
Deklarasi kelas dengan nama Stack. Komentar “Struktur Data”.
Deklarasi variable size dengan tipe data integer bersifat private. Deklarasi variable top dengan tipe data integer bersifat private.
Deklarasi variable data array 1 dimensi dengan tipe data integer bersifat private. Komentas “Method”.
Deklarasi konstruktor kelas Stack dengan parameter bertipe integer. Inisialisasi nilai variable top.
Inisialisasi nilai variable size.
Inisialisasi nilai panjang array data sama dengan nilai variable size. Deklarasi method.
Perintah return untuk mengembalikan nilai true. Deklarasi method.
Perintah return untuk mengembalikan nilai true atau false dengan syarat nilai variabel top sama dengan nilai variabel size dikurang 1.
Deklarasi method.
Perintah return untuk mengembalikan nilai true atau false dengan syarat nilai variabel top sama dengan nilai variabel size dikurang 1.
Deklarasi method void, akses modifier public dengan nama push dan parameter dt tipe integer.
Perintah if dengan syarat isFull bernilai false. Inisialisasi isi array data indeks ke ++ top. Deklarasi method pop.
34
Perintah if dengan syarat isEmpty bernilai false.
Inisialisasi nilai variabel hasil = isi array data indeks ke nilai variabel top kurang 1. Perintah return untuk mengembalikan nilai variable hasil.
Deklarasi main method.
Cetak “======= Create by =======”. Cetak “Nama : M SATRIA PUTRA UTAMA”. Cetak “NIM : 155150207111168”.
Cetak “Kelas : IF - A”.
Cetak “======================”. Instansiasi scanner input.
Instansiasi kelas Stack.
Objek st memanggil method push dengan parameternya 0. Objek st memanggil method push dengan parameternya 6. Objek st memanggil method push dengan parameternya 7. Perulangan while.
Mencetak isi dari method pop.
Instansiasi kelas Stack dengan nama s dan parameternya 100. Cetak “=======================”.
Cetak ”Konversi Desimal ke Biner ”. Cetak “Masukkan Bilangan Desimal = ”.
Memasukkan nilai bertipe integer yang akan di simpan pada variable nilai. Perulangan while dengan syarat nilai variable nilai tidak sama dengan 0. Inisialisasi nilai variable sisa.
Objek s memanggil objek push. Perhitungan variable nilai. Cetak “Bilangan Biner = ”. Perulangan while.
Mencetak isi dari method pop.
Cetak “=======================”.
Deklarasi kelas dengan nama StackObject.
Deklarasi variabel dengan nama size dan top tipe integer bersifat private. Deklarasi array 1 dimensi dengan nama data tipe integer bersifat private.
Deklarasi konstruktor kelas StackObject dengan parameter bernama n tipe integer. Inisialisasi nilai variabel top.
Inisialisasi nilai variabel size.
Inisialisasi nilai panjang array data sama dengan nilai variabel size. Deklarasi method.
Perintah return untuk mengembalikan nilai true atau false dengan syarat nilai variabel top sama dengan nilai variabel size dikurang 1.
Deklarasi method.
Perintah return untuk mengembalikan nilai true atau false dengan syarat nilai variabel top sama dengan nilai variabel size dikurang 1.
18
Perintah if dengan syarat isFull bernilai false. Inisialisasi isi array data indeks ke ++ top.
Deklarasi method akses modifier public dengan nama pop tipe integer tanpa parameter. Inisialisasi nilai variabel hasil tipe object.
Perintah if dengan syarat isEmpty bernilai false. Inisialisasi nilai variabel hasil.
Perintah return untuk mengembalikan nilai variabel hasil.
Buku.java
Deklarasi kelas dengan nama Buku.
Deklarasi variabel dengan nama judul, pengarang tipe string bersifat private. Deklarasi variabel dengan nama size, top tipe integer bersifat private. Deklarasi array 1 dimensi dengan nama data tipe integer bersifat private. Deklarasi konstruktor kelas Buku dengan parameter bernama n tipe integer. Inisialisasi nilai variabel top.
Inisialisasi nilai variabel size.
Inisialisasi nilai panjang array data sama dengan nilai variabel size.
Deklarasi konstruktor kelas Buku dengan parameter bernama judul, pengarang tipe string.
Inisialisasi nilai variabel judul yang ada di kelas Buku sama dengan nilai variabel judul yang ada di parameter.
Inisialisasi nilai variabel pengarang yang ada di kelas Buku sama dengan nilai variabel pengarang yang ada di parameter.
Override.
Deklarasi method toString.
Perintah return untuk mencetak isi dari variabel judul dan pengarang.
mainStackObject.java
Deklarasi kelas dengan nama AppStackObject. Deklarasi main method untuk eksekusi program.
Instansiasi kelas StackObject dengan nama st dan parameter 3. Objek st memanggil method push dengan parameternya 5 tipe double. Objek st memanggil method push dengan parameternya 8 tipe double. Objek st memanggil method push dengan parameternya 7 tipe double.
Perulangan while dengan batas method isEmpty yang dipanggil objek st bernilai false. Mencetak isi dari method pop yang dipanggil objek st.
Instansiasi kelas StackObject dengan nama stBuku dan parameter 3.
Objek stBuku memanggil method push dengan parameternya “Java”, “Anton”.
Objek stBuku memanggil method push dengan parameternya “Algoritma dan STD”, Achmad.
Objek stBuku memanggil method push dengan parameternya “C++”, “Budi”.
Perulangan while dengan batas method isEmpty yang dipanggil objek stBuku bernilai false.
D.
SCREENSHOT PROGRAM
No.1
No.2
E.
KESIMPULAN
Stack adalah tumpukan dari benda, sekumpulan data yang seolah-olah diletakkan di atas data yang lain, koleksi dari objek-objek homogen, atau suatu urutan elemen yang elemennya dapat diambil dan ditambah hanya pada posisi akhir (top) saja. Stack dapat diilustrasikan dengan dua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak. Stack bersifat LIFO (Last In First Out), artinya benda yang terakhir masuk ke dalam stack akan menjadi yang pertama keluar dari stack.
Fungsi method yang ada dalam Stack :
1. Push digunakan untuk menambah item pada stack pada tumpukan paling atas. 2. Pop digunakan untuk mengambil item pada stack pada tumpukan paling atas. 3. Clear digunakan untuk mengosongkan stack. Dianggap kosong apabila puncak
stack berada pada posisi -1.
4. IsEmpty digunakan untuk mengecek apakah stack sudah kosong. 5. IsFull digunakan untuk mengecek apakah stack sudah penuh.
Perbedaan implementasi Stack menggunakan Array dengan Linked List : 1. Pada Array, pengaksesan dapat dilakukan hanya dengan memanggil inddeks nilai
2. Pada Linked List, pengaksesan bersifat sekuensial, yaitu harus memanggil berurutan dari node awal.
3. Pada Array memiliki sifat tidak bias diubah, kapasistasnya sudah pasti dan tidak diubah-ubah. Sedangkan ,
4. Pada Linked List dapat ditambah kapasitasnya sesuai dengan kebutuhan.