Anda di halaman 1dari 8

Nama : Romdan M Ubaidilah NIM : 125150202111008 Kelas : TIF L Dasar teori :

Stack atau tumpukan adalah representasi data yang meniru cara kerja suatu tumpukan dalam dunia nyata. Prinsip tumpukan adalah barang yang masuk terlebih dahulu dia akan keluar belakangan atau sebaliknya. Prinsip ini dikenal dengan LIFO (Last In First Out). Sesuai dengan perilaku masalah ini dalam dunia nyata, pemasukan kedalam tumpukan disebut push dan pengambilannya disebut pop. Implementasi stack dapat dilakukan menggunakan array atau menggunakan linkedlist.

ADT Stack denga Array


ADT suatu stack menggunakan array dapat digambarkan sebagai berikut : SizPosisi To Top ItermD id e p t `

Dengan model representasi stack seperti di atas maka dapat disusun ADT Stack sebagai berikut :
Stack Int size Int pos Object []temData Stack(int) boolean isFull() boolean isEnpty() push(Object dt) Object pop()

Tugas :
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 33 34 35 36 37 38 39 40 41 42 43 Class StackObject package praktikum; /** * @author ubai313 */ public class StackObject { private int size; private int top; private Object data[]; public StackObject(int n) { top = -1; size = n; data = new Object[size]; } public boolean isPalindrome() { return true; } public boolean isFull() { return top == (size - 1) ? true : false; } public boolean isEmpty() { return top == -1 ? true : false; } public void push(int dt) { if (!isFull()) { data[++top] = dt; } } public void push(Object dt) { if (!isFull()) { data[++top] = dt; } } public Object pop() { Object hasil = -999; if (!isEmpty()) { hasil = data[top--]; } return hasil; } }

Class Buku

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

package praktikum; /** * @author ubai313 */ public 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); } }

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

Class AppStackObject package praktikum; import java.util.Scanner; /** * @author ubai313 */ public class AppStackObject { private static int menu; private static Scanner sc = new Scanner(System.in); // @param args the command line arguments public static void main(String[] args) { // TODO code application logic here int menu; char o; StackObject so = new StackObject(3); boolean terus = false; while (!terus) { System.out.println("o---------------------------------------o"); System.out.println("| PROGRAM STACK TUGAS 4 ASD |"); System.out.println("o---------------------------------------o"); System.out.println("o 1. Konversi Bilangan Desimal ke Biner o"); System.out.println("o 2. Object Double o"); System.out.println("o 3. Object Buku

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83

o"); System.out.println("o 4. Keluar Program o"); System.out.println("o---------------------------------------o"); System.out.print("=> Masukkan Pilihan:"); menu = sc.nextInt(); switch (menu) { case 1: System.out.print("=> Masukkan Nilai (Bilangan Desimal): "); int nilai = sc.nextInt(); System.out.print("=> Hasil Konversi Bilangan Desimal Menjadi Bilangan Biner adalah: "); so.push(nilai); StackObject s = new StackObject(100); while (nilai != 0) { int sisa = nilai % 2; s.push(sisa); nilai = nilai / 2; } while (!s.isEmpty()) { System.out.print(s.pop()); } System.out.println(); break; case 2: System.out.print("=> Masukkan angka ke-1: "); int p = sc.nextInt(); System.out.print("=> Masukkan angka ke-2: "); int q = sc.nextInt(); System.out.print("=> Masukkan angka ke-3: "); int r = sc.nextInt(); System.out.println("=> Stack dengan Object Double yaitu: "); so.push(new Double(p)); so.push(new Double(q)); so.push(new Double(r)); while (!so.isEmpty()) { System.out.println(so.pop()); } while (!so.isEmpty()) { System.out.println(so.pop()); } break; case 3: StackObject soBuku = new StackObject(3); soBuku.push(new Buku("Mudah Membuat Website Dengan CSS3 dan HTML5", "Ubaidilah, Romdan M")); soBuku.push(new Buku("Java? so what gitu loh!!!", "Ubaidilah, Romdan M")); soBuku.push(new Buku("10 Langkah Jitu Menjadi Seorang System Analist", "Ubaidilah, Romdan M"));

84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

System.out.println("o----------------------------------------------------------------------------o"); System.out.printf("| %-32s | %35s\n", "Judul Buku", " Nama Pengarang |"); System.out.println("o----------------------------------------------------------------------------o"); while (!soBuku.isEmpty()) { System.out.print(soBuku.pop()); System.out.println("o----------------------------------------------------------------------------o"); } break; case 4: System.out.println("o------------| Terima Kasih |-----------o"); System.exit(0); break; default: System.out.println("Inputan Yang Anda Masukkan Salah!!!"); } System.out.println(); System.out.print("Kembali Ke Menu Utama(Y/T) :"); String jawab = sc.next(); char A = jawab.charAt(0); if ((A == 'T') || (A == 't')) { terus = true; } else if ((A == 'Y') || (A == 'y')) { terus = false; } else { System.exit(0); } } } }

Penjelasan untuk class StackObject:


A. public StackObject() = ini adalah sebuah constructor yang berguna untuk memberikan sebuah nilai awal B. public boolean isPalindrome() = ini adalah sebuah method yang fungsinya untuk mengembalikan nilai true apabila barisan elemen merupakan palindrome dan false jika bukan. C. public boolean isFull() = ini adalah sebuah method digunakan untuk mengecek apakah stack sudah dalam keadaan penuh

D. public boolean isEmpty() = ini adalah sebuah method yang fungsinya untuk mengembalikan true jika tidak terdapat elemen dan false jika memiliki elemen minimal satu. E. public void push(Object dt) = method yang berfungsi untuk mengisi stack F. public Object pop() = method pop() digunakan untuk mengeluarkan elemen di dalam stack.

Penjelasan untuk class Buku:


A. public Buku(String jdl, String peng) = ini adalah sebuah constructor yang berguna untuk memberikan sebuah nilai awal B. public String toString()= ini adalah sebuah method yang fungsinya untuk mencetak keluaran dari class Buku.

Penjelasan untuk class AppStackObject:


A. StackObject so = new StackObject(3); = ini fungsinya untuk pembuatan object dari class StackObject dengan memberikan jumlah nilai array 3. B. int nilai = sc.nextInt(); = untuk menginput nilai dari user. C. StackObject s = new StackObject(100); = Didalam method main terdapat StackObject s = new StackObject(100); Yang berarti ukuran array pada object adalah 100 Dalam menggunakan perulangan while dengan syarat (nilai != 0) maka program akan mengerjakan : int sisa = nilai % 2; s.push(sisa); nilai = nilai / 2; D. so.push(new Double(p)); = Masukkan nilai array double. E. while (!so.isEmpty()) { System.out.println(so.p op()); } while (!so.isEmpty()) { System.out.println(so.p op()); } while (!so.isEmpty()) dengan syarat pemanggilan method pop bila array sudah melampaui batas maka akan mengerjakan

F. soBuku.push(new Buku("Mudah Membuat Website Dengan CSS3 dan HTML5", "Ubaidilah, Romdan M")); // ini gunanya untuk memberi nilai/mengisi data String pada index array. Bila array sudah melampaui batas maka akan mengerjakan while (! so.isEmpty()) dengan syarat pemanggilan method pop().

Screen shot :

Gambar 1. Outputan Menu Konversi Bilangan Desimal ke Biner dan Menampilkan Object Java

Gambar 2. Outputan Object Buku dan Keluar dari Program

Kesimpulan :
Operasi Stack terbatas pada elemen pada top dari stack. Push(item) menambah satu item pada top, Pop() menghapus elemen dari top, Peek() mengakses nilai pada top. Stack menggunakan prinsip Last In First Out (FIFO) karena stack itu seperti sebuah tumpukan apabila kita menumpuk buku dan kita akan mengambil satu persatu maka yang akan kita amabil buku teratas atau buku yang terkhir di taruh, sama halnya dengan penggunaan stack.

Anda mungkin juga menyukai