Anda di halaman 1dari 17

Jumat,07.00-09.

00

PRAKTIKUM STRUKTUR DATA


LAPORAN RESMI
MODUL 5- QUEUE

SESI/MEJA : B/9
NAMA PRAKTIKAN:
Masti Fatchiyah Maharani

( 1434010077)

ASISTEN PRAKTIKUM:
Try Khurniawati

(1334010038)

Unggul Widi Atmojo

(1334010028)

LABORATORIUM ALGORITMA DAN PEMOGRAMAN KOMPUTER


PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNOLOGI INDUSTRI
UNIVERSITAS PEMBANGUNAN NASIONAL "VETERAN" JATIM
2015

LEMBAR PENGESAHAN
LAPORAN INI TELAH DITERIMA DAN DISETUJI
PRAKTIKUM

: Struktur Data

MODUL

:5

JUDUL

: Queue

SESI

:B

MEJA

:9

Surabaya,

November 2015
Mengetahui,

Asisten Praktikum

Try Khurniawati
Unggul Widi Atmojo

SOAL
1. Buatlah program Queue mengenai sistem informasi parkiran dengan menu:
1. Enqueue
2. Dequeue
3. View
4. Exit

ALGORITMA

1.
2.

Class Que:
Mulai
Deklarasi variabel: nopol=nomor polisi,seri=kode parkir,dan waktu=lama parkir

,nextNode=Node baru,input=objek scanner,a=banyak data,i=variabel pembanding.


3.
Inisialisasi head=null
4.
Inisialisasi tail=null
5.
Membuat scanner baru dari objek input.
6.
Inisialisasi nextNode=null
7.
Selesai

1.
2.
3.
4.

Fungsi enqueue
Mulai
Deklarasi variabel: data=objek dari Node, input=objek dari scanner.
Inisialisasi i=0
Jika i<a bernilai benar maka lanjut ke langkah 5,jika tidak maka lanjut ke

langkah 15
5.
Membuat node baru dari objek data.
6.
Masukkan nopol
7.
Masukkan seri
8.
Masukkan waktu
9.
Jika head=null bernilai benar maka lanjut ke langkah 10,jika tidak maka lanjut
ke langkah 12
10.
Inisialisasi head=data
11.
Inisialisasi tail=data
12.
Panggil nextNode tail
13.
Inisialisasi tail nextNode=data
14.
Inisialisasi tail=data
15.
Proses:i=i+1,kembali ke langkah 9
16.
Selesai

1.
2.
3.
4.

Fungsi dequeue
Mulai
Deklarasi variabel: current=keadaan sebelumnya
Insialisasi Node current=head
Jika head=null bernilai benar maka lanjut ke langkah 5,jika tidak lanjut ke

langkah6
5.
Cetak data kosong.
6.
Jika head=tail bernilai benar maka lanjut ke langkah 7 jika tidak lanjut ke
langkah8
7.
Inisialisasi head=tail=null
8.
Inisialisasi current= panggil nextNode dengan head
9.
Inisialisasi head=current
10.
Insialisasi current=null
11.
Selesai


1.
2.
3.
4.
5.

Fungsi viewNode
Mulai
Deklarasi variabel: current=kondisi sebelumnya,i=variabel pembanding
Inisialisasi i=1
Inisialisasi node current=head
Jika head=null bernilai benar maka lanjut ke langkah 6,jika tidak lanjut ke

6.
7.
8.

langkah7
Cetak data kosong
Cetak no,nopol,seri,dan waktu.
Jika current tidak sama dengan null bernilai benar maka lanjut ke langkah 9,

9.
10.
11.
12.

jika tidak lanjut ke langkah 12


Cetak data.
Inisialisasi current=panggil nextNode dengan current.
Proses= i=i+1,kembali ke langkah 8
Selesai

1.
2.
3.
4.
5.

Main:
Mulai
Deklarasi variabel:a=banyak data,input=objek scanner,k=objek stack,menu.
Insialisasi menu=1
Membuat Que baru dengan objek input.
Jika menu tidak sama dengan 4 bernilai benar maka lanjut ke langkah 6 jika

6.
7.

tidak maka lanjut ke langkah16


Cetak pilih menu
Jika menu=1 benar maka lanjut ke langkah 8 ,jika tidak maka lanjut ke

8.
9.
10.

langkah10
Cetak masukkan banyak data
Panggil fungsi enqueue dengan objek k
Jika menu=2 bernilai benar maka lanjut ke langkah 11,jika tidak maka lanjut ke

11.
12.
13.
14.

langkah 12
Panggil fungsi dequeue dnegan objek k
Jika menu=3 bernilai benar maka lanjut ke langkah 13 jika tidak maka 14
Panggil fungsi viewNode dengan objek k
Jike menu=4 bernilai benar maka lanjut ke langkah,jika tidak maka lanjut ke

15.
16.
17.

langkah
Cetak terimakasih
Cetak maaf,menu tidak tersedia
selesai

DIAGRAM UML

Gambar 1. Diagram uml class Que

FLOWCHART

Gambar 2. Flowchart class Que

Gambar 3. Flowchart fungsi enqueue

Gambar 4. Flowchart fungsi enqueue

Gambar 5. Flowchart fungsi


dequeue

Gambar 6. Flowchart fungsi dequeu

Gambar 7. Flowchart fungsi view

Gambar 7. Flowchart 7. Flowchart fungsi view


main

Gambar 8. Flowchart

Gambar 9. Flowchart main

SOURCECODE

package praktikum;
import java.util.*;
public class Que{
Node head=null, tail=null;
Scanner input=new Scanner(System.in);
private static class Node{
public String nopol,seri,waktu;
public Node nextNode=null;
}
void enqueue(int a){
for (int i=0; i<a; i++){
Node data=new Node();
System.out.print("Masukkan nomor polisi: ");
data.nopol=input.next();
System.out.print("Masukkan kode parkir: ");
data.seri=input.next();
System.out.print("Masukkan lama parkir: ");
data.waktu=input.next();
if (head==null){
head=data;
tail=data;
}
else{
tail.nextNode=data;
tail=data;
}
}
}
void dequeue(){
Node current=head;
if(head==null){
System.out.println("Data kosong");
}else if(head==tail){
head=tail=null;
}else{
current=head.nextNode;
head=current;
current=null;
}
}
void viewnode(){
int i=1;
Node current=head;
if(current==null){
System.out.println("Data kosong");
}else{
System.out.println("NO\tNomor Polisi\tKode Parkir\tLama
Parkir");
while (current != null) {
System.out.println(i+"\t"+current.nopol+"\t"+current.seri+"\t"+current.waktu);
current=current.nextNode;
i++;
}
}
}
public static void main(String args[]){

int a, menu=1;

Que k=new Que();


Scanner input=new Scanner(System.in);
while(menu!=4){
System.out.print("1. Enqueue\n2. Dequeue\n3. View\n4.
Exit\nPilih menu: ");
menu=input.nextInt();
if (menu==1){
System.out.print("Masukkan jumlah data: ");
a=input.nextInt();
k.enqueue(a);
}else if(menu==2){
k.dequeue();
}else if(menu==3){
k.viewnode();
}else if (menu==4){
System.out.print("terimakasih.");
}else{
System.out.print("Maaf menu tidak tersedia.");
}
}
}

Gambar 10. SourceCode Java.

HASIL PRAKTIKUM

Gambar 11. Console Java

ANALISA MASALAH
Permasalahan yang dihadapi praktikan saat membuat sistem informasi
dengan menggunakan queue kali ini adalah menentukan output FIFO pada program.
Pada program praktikan,konsep fifo telah dapat di jalankan namun output saat user
memilih menu 2 yaitu menu view setelah user memasukkan data lebih dari satu tidak
terdeteksi.

KESIMPULAN
Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka
penambahannya berada di posisi belakang (rear) dan jika dilakukan pengambilan
elemen dilakukan di elemen paling depan (front). Oleh karena itu, queue bersifat
FIFO(First in first out).
Operasi-Operasi dasar pada Queue:
1. Enqueue

: Proses penambahan elemen di posisi belakang.

2. Dequeue

: Proses pengambilan elemen di posisi depan.

3. Operasi pemeriksaan queue kosong (fungsi kosong)


4. Operasi pemeriksaan queue penuh (fungsi penuh).