Upload
windi-w
View
26
Download
4
Tags:
Embed Size (px)
DESCRIPTION
laporan modul 3 asd
Citation preview
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Pengampu :
Yufiz Azhar, SKom
Nama:
201410370311239_WINDI WIDIASTUTI
Laporan Praktikum Algoritma &
Struktur Data
Modul ke-3
STACK DAN QUEUE
Daftar Isi :
1. Deskripsi Praktikum
2. Perangkat Lunak
3. Teori Penunjang
4. Prosedur Pelaksanaan
5. Implementasi dan Hasil Praktikum
6. Kesimpulan
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Daftar Isi
1. Deskripsi Praktikum ............................................................................................................... 3
2. Perangkat Lunak .................................................................................................................... 3
3. Teori Penunjang ...................................................................................................................... 3
4. Prosedur Pelaksanaan ............................................................................................................ 7
5. Implementasi dan Hasil Praktikum ...................................................................................... 7
6. Kesimpulan ............................................................................................................................ 12
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
1. Deskripsi Praktikum
Pada praktikum modul 3 ini (Stack dn Queue) akan melakukan praktikum mengenai
stack dan queue. Pengertian stack sendiri adalah sebuah struktur data yang semua
penyisipan dan penghapusan input pada ujung yang disebut TOP atau tumpukan,
stack memiliki sifat LIFO. Sedangkan Queue merupakan penambahan elemen pada
sisi yang berbeda dengan penghapusan elemen, queue ini memiliki sifat FIFO.
Tujuan praktikum modul ke 3 sebagai berikut :
1. Memahami dan mengerti dari konsep stack dan queue
2. Memahami perbedaan antara stack dan queue
3. Mampu mengimplementasikan stack dan queue kedalam sebuah program
2. Perangkat Lunak
Perangkat PC yang terinstall Java
Editor Java (Netbeans IDE 7.4)
3. Teori Penunjang
STACK
Merupakan struktur data dimana semua penyisipan dan penghapusan entri
dibuat pada salah satu ujung yang disebut TOP (puncak) tumpukan.
Menggunakan prinsip kerja LIFO (Last In First Out).
Opreasi dasar pada stack
a. Inisialisasi (create stack)
Untuk menginisialisasi tumpukan, menyiapkan tempat yang nantinya
digunakan untuk menyimpan tumpukan.
b. Cek kosong (Isempty)
Melakukan pengecekan apakah tumpukan kosong atau tidak.
c. Cek penuh
Untuk mengecek apakah tupukan penuh atau tidak.
d. Tambah stack (PUSH)
Untuk menambah elemen ke dalam tumpukan.
e. Ambil dari tumpukan (POP)
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Untuk mengambil sebuah elemen dari tumpukan.
Deklarasi Stack
in size;
long stack[];
int top;
Inisialisasi Stack
public Tumpukan(int s){
size = s;
stack = new long[size];
top = -1;
}
Fungsi Cek Kosong
public boolean isEmpty(){
return (top ==-1);
}
Fungsi Cek Penuh
public boolean isFull(){
return (top == size-1);
}
Fungsi PUSH
public void push (long j){
stack[++top]=j;
}
Fungsi POP
public long pop (){
return stack [top--];
}
QUEUE
Aturan queue :
Penambahan elemen dilakukan di sisi yang berbeda dengan penghapusan
elemen.
Elemen yang dapat dihapus adalah elemen yang berada di posisi terdepan
(front) dari queue.
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Untuk operasi penyisipan (insertion) elemen dilakukan pada posisi belakang
(rear) dari queue.
Skema pengaksesan : First In, First Out (FIFO)
Contoh:
Antrian printer
Antrian tiket bioskop
Antrian nasabah di teller bank, dll
Seperti halnya stack, queue juga dapat direpresentasikan sebagai array (static
queue) maupun linked list (dynamic queue).
Deklarasi queue menggunakan Array
int size;
long queue[];
int rear;
int front;
int jumItem;
Operasi dasar QUEUE
– Inisialisasi
Untuk menginisialisasi antrian, menyiapkan tempat yang nantinya digunakan
untuk menyimpan antrian.
public Antrian (int s){
size = s;
queue = new long [size];
rear = -1;
front = 0;
jumItem = 0;
}
– Cek kosong (Isempty)
Melakukan pengecekan apakah antrian kosong atau tidak
public boolean isEmpty(){
return (jumItem == 0);
return (rear == -1);
}
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
– Cek penuh
Untuk mengecek apakah tupukan penuh atau tidak
public boolean isFull(){
return (rean == size);
}
– Enqueue
Untuk menambah elemen ke dalam antrian
public void enqueue (long j){
if(!isFull()){
queue[++rear]=j;
jumItem++;
}
}
– Dequeue
Untuk mengambil sebuah elemen dari antrian
public long boolean(){
long temp = queue[0];
queue[front];
if(!isEmpty()){
for(int i = 0; i<jumItem; i++)
queue[i] = queue[i+1];
jumItem--;
rear--;
}
return temp;
}
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
4. Prosedur Pelaksanaan
1. Melakukan latihan pada modul 3 yang tersedia terlebih dahulu
2. Mengerjakan tugas praktikum.
3. Mengerjakan tugas praktikum nomor satu
4. Membuat program konversi bilangan dari desimal ke biner
5. Buat object untuk menyimpan tumpukan dari stack
6. Buat Inputan user, simpan inputan user ke dalam variable decimal.
7. Bagi variable decimal dengan angka 2
8. Ambil sisa pembagian variable decimal, lalu simpan ke variable sisa. Kemudian
simpan isi variable sisa kedalam stack. Ambil (pop) nilai yang ada di stack.
Tampilkan variable biner.
9. Mengerjakan tugas praktikum nomor 2. Jika tidak bisa lompati ke nomor
selanjutnya
10. Mengerjakan tugas praktikum nomor 3
11. Membuat program mengubah notasi infix ke postfix.
12. Membuat pengondisian untuk simbol – simbol operator (+,-,*,/,^)
13. Membuat konversi, kemudian simpan kedalam variable s.
14. Membuat proses simbol yang akan di eksekusi
15. Tampilkan hasil postfix
5. Implementasi dan Hasil Praktikum
TUGAS PRAKTIKUM
1. Impelementasikan class stack yang ada pada latihan diatas untuk membuat program
“konversi bilangan desimal ke bilangan biner”, dengan algoritma sebagai berikut :
Konversi Bilangan Desimal ke Biner.
a. Simpan inputan user ke dalam variable decimal
b. Bagi variable decimal dengan angka 2
c. Ambil sisa pembagian variable decimal, lalu simpan dalam variable sisa.
Kemudian simpan isi variable sisa ke dalam stack.
d. Ulangi langkah 1 dan 2 selama decimal tidak bernilai 0. Jika variable decimal
telah bernilai 0 maka lanjutkan ke langkah 5.
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
e. Ambil (pop) nilai yang ada di stack. Kemudian tambahkan/simpan (append)
hasilnya pada variable biner.
f. Tampilkan isi variable biner ke layar .
g. Selesai.
Contoh tampilan program konversi desimal ke biner :
Input : 25
Hasil biner : 11001
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Source Code
package DecimalBinary;
import java.util.*;
import java.util.Scanner;
public class DecimalBinaryStack {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
Stack<Integer> stack = new Stack<Integer>();
try{
System.out.println("Masukno ongko: ");
int decimal = in.nextInt();
while (decimal != 0)
{
int d = decimal % 2;
stack.push(d);
decimal /= 2;
}
System.out.print("\nHasil Biner e ngenelo bro :");
while (!(stack.isEmpty() ))
{
System.out.print(stack.pop());
}
System.out.println();
}catch(java.util.InputMismatchException |
ArrayIndexOutOfBoundsException e){
System.out.println("Inputanmu salah bro");
}
}
}
Print Screen Hasil
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
2. Ubahlah notasi infix yang dimasukkan oleh user menjadi notasi postfix dengan
memanfaatkan stack dan queue.
Contoh tampilan aplikasi :
Notasi infix : A * ( B + C ) / D ^ E – F
Notasi postfix : A B C + * D E ^ / F –
Source Code
package PostfixInfix;
import java.util.Scanner;
import java.util.Stack;
public class InfixToPostfix {
private boolean isOperator(char c){
if(c == '+' || c == '-' || c == '*' || c =='/' || c == '^')
return true;
return false;
}
private boolean checkPrecedence(char c1, char c2){
if((c2 == '+' || c2 == '-') && (c1 == '+' || c1 == '-'))
return true;
else if((c2 == '*' || c2 == '/') && (c1 == '+' || c1 == '-'
|| c1 == '*' || c1 == '/'))
return true;
else if((c2 == '^') && (c1 == '+' || c1 == '-' || c1 == '*'
|| c1 == '/'))
return true;
else
return false;
}
public String convert(String infix){
System.out.printf("%-8s%-10s%-15s\n",
"Input","Stack","Postfix");
String postfix = "";
Stack<Character> s = new Stack<>();
s.push('#');
System.out.printf("%-8s%-10s%-15s\n", "",
format(s.toString()),postfix);
for(int i = 0; i < infix.length(); i++){
char inputSymbol = infix.charAt(i);
if(isOperator(inputSymbol)){
while(checkPrecedence(inputSymbol, s.peek()))
postfix += s.pop();
s.push(inputSymbol);
}
else if(inputSymbol == '(')
s.push(inputSymbol);
else if(inputSymbol == ')'){
while(s.peek() != '(')
postfix += s.pop();
s.pop();
}
else
postfix += inputSymbol;
System.out.printf("%-8s%-10s%-15s\n",
""+inputSymbol,format(s.toString()),postfix);
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
}
while(s.peek() != '#'){
postfix += s.pop();
System.out.printf("%-8s%-10s%-15s\n",
"",format(s.toString()),postfix);
}
return postfix;
}
private String format(String s){
s = s.replaceAll(",","");
s = s.replaceAll(" ",""); string
s = s.substring(1, s.length()-1);
return s;
}
public static void main(String[] args) {
InfixToPostfix obj = new InfixToPostfix();
Scanner sc = new Scanner(System.in);
System.out.print("Infix : \t");
String infix = sc.next();
System.out.print("Postfix : \t"+obj.convert(infix));
}
}
Print Screen Hasil
Dokumen Laboratorium Teknik Informatika UMM @ 2015 – Laporan Modul Praktikum Algoritma dan Struktur Data By. [201410370311239] [WINDI WIDIASTUTI]
Analisis Hasil Percobaan
1. Untuk Stack jika terdapat tumpukan yang terakhir masuk, maka elemen
tersebutlah yang akan dikeluarkan terlebih dahulu.
2. Untuk Queue jika terdapat antrian elemen, yang pertama masuk akan
menjadi yang pertama dikeluarkan dari queue.
6. Kesimpulan
Pada praktikum modul 3 ini dapat ditarik kesimpulan bahwa stack itu
mempunyai konsep yaitu LIFO (Last In First Out), yaitu tumpukan yang
terakhir masuk ke dalam stack maka elemen tersebut akan menjadi yang
pertama yang akan dikeluarkan dari stack. Penambahan elemen baru
dinamakan push, untuk penghapusan atau pengambilan dari tumpukan
dinamakan pop.
Sedangkan queue (antrian) memiliki pengertian yang konsepnya
hampir sama dengan stack, namun pada queue ini menggunkan sistem FIFO
yaitu (First In First Out) artinya elemen yang pertama masuk maka elemen
pertama yang akan dikeluarkan dari queue.