12
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

201410370311239 Windi Widiastuti Asd Modul3 3f

  • Upload
    windi-w

  • View
    26

  • Download
    4

Embed Size (px)

DESCRIPTION

laporan modul 3 asd

Citation preview

Page 1: 201410370311239 Windi Widiastuti Asd Modul3 3f

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

Page 2: 201410370311239 Windi Widiastuti Asd Modul3 3f

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

Page 3: 201410370311239 Windi Widiastuti Asd Modul3 3f

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)

Page 4: 201410370311239 Windi Widiastuti Asd Modul3 3f

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.

Page 5: 201410370311239 Windi Widiastuti Asd Modul3 3f

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);

}

Page 6: 201410370311239 Windi Widiastuti Asd Modul3 3f

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;

}

Page 7: 201410370311239 Windi Widiastuti Asd Modul3 3f

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.

Page 8: 201410370311239 Windi Widiastuti Asd Modul3 3f

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

Page 9: 201410370311239 Windi Widiastuti Asd Modul3 3f

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

Page 10: 201410370311239 Windi Widiastuti Asd Modul3 3f

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);

Page 11: 201410370311239 Windi Widiastuti Asd Modul3 3f

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

Page 12: 201410370311239 Windi Widiastuti Asd Modul3 3f

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.