sd ii hasil.docx

19
LAPORAN HASIL PRAKTIKUM STRUKTUR DATA NAMA : PENGKI NIM : DBC 114 070 KELAS : B MODUL : II (QUEUE) JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS PALANGKA RAYA 2015

Upload: pengki-ekopurnomo

Post on 12-Nov-2015

15 views

Category:

Documents


0 download

TRANSCRIPT

LAPORAN HASIL PRAKTIKUMSTRUKTUR DATA

NAMA:PENGKINIM:DBC 114 070KELAS:BMODUL:II (QUEUE)

JURUSAN/PROGRAM STUDI TEKNIK INFORMATIKAFAKULTAS TEKNIKUNIVERSITAS PALANGKA RAYA2015BAB ITUJUAN DAN LANDASAN TEORI16

1. Tujuan 1. Mahasiswa mampu memahami konsep queue.1. Mahasiswa mampu mengimplementasikan queue untuk memecahkan masalah tertentu.1. Landasan TeoriQueue (antrian) adalah kumpulan objek data yang tipenya sama, tersusun sebagai sebuah barisan linier. Elemen pertama disebut sebagai front/head dan elemen terakhir disebut rear/tail. Penambahan data dilakukan pada akhir elemen, sedangkan penghapusan data dilakukan pada elemen pertama. Sifat queue tersebut dikenal dengan istilah FIFO (First In First Out).Queue dapat dideklarasikan dengan sebuah record yang mempunyai elemenelemen sebagai berikut : variabel front untuk menunjuk elemen pertama, variabel rear untuk menunjuk elemen terakhir, dan sebuah array tabelemen untuk menyimpan elemen queue. Deklarasi selengkapnya sebagai berikut: ConstNMAX = ....;NULL = 0;Typetipedata = ....;queue = recordtabelemen : array[1 .. NMAX] of tipedatafront,rear : NULL ... NMAX;\End;Berdasarkan sifatnya, maka ada 2 operasi terhadap queue, yaitu :1. Penambahan data pada elemen akhir queue, disebut Enqueue2. Penghapusan data pada elemen pertama queue, disebut Dequeue.

Proses untuk membuat queue dalam keadaan kosong dapat didefinisikan sebagai berikut:Procedure Inisialisasi (var Q : queue);BeginQ.front := NULL;Q.rear := NULL;End;Proses untuk mengetahui status queue dalam keadaan kosong atau tidak dapat didefinisikan sebagai berikut:Function EmptyQ (Q : queue) : Boolean;BeginEmptyQ := ((Q.front=Null)and (Q.rear=Null));End;Pada saat penambahan data apabila ingin mengetahui apakah queue sudah penuh atau belum, maka perlu diperhitungkan junlah elemen data pada queue. Sebuah queue penuh jika Q.rear = NMAX. Namun demikian tidak selamanya kondisi Q.rear = NMAX menunjukkan bahwa queue telah penuh. Kondisi Q.rear = NMAX akan menunjukkan queue telah penuh bila selama proses pengoperasian queue belum pernah ada data yang keluar (Dequeue). Bila telah pernah terjadi operasi Dequeue maka akan terjadi pergeseran penanda front sebanyak data yang akan keluar. Hal ini terjadi karena operasi Dequeue dengan array hanya memindahkan index penanda front ke index yang di atasnya. Dalam hal ini penghapusan elemen di depan mengakibatkan array pada index awal menjadi kosong dan tidak terpakai. Jika hal ini terjadi maka perlu dilakukan setup ulang index front (consolidate) dengan memindahkan semua data ke bagian awal dari tabel.Procedure Consolidate (var Q : queue);{IS : Q.rear = NMAX dan Q.front 1}{FS : Q.front = 1 dan Q.rear = banyaknya data}Vari, j : integer;Beginj:=1;for i:= Q.front to Q.rear dobeginQ.tabelemen[j] := Q.tabelemen[i];j:=j+1;end;Q.front :=1;Q.rear :=j;End;

Procedure Enqueue (var Q : queue; data : tipedata);BeginIf EmptyQ(Q) thenQ.front := 1;If Q.rear NMAX thenBeginQ.rear := Q.rear+1;Q.tabelemen[Q.rear] := data;EndElseIf Q.front 1 thenBeginConsolidate(Q);Q.rear := Q.rear+1;Q.tabelemen[Q.rear] := data;End;End;

Procedure Dequeue (var Q : queue; var data : tipedata);BeginIf not Empty(Q) thenBegindata := Q.tabelemen[Q.front];Q.front := Q.front+1;If (Q.front > Q.rear) thenBeginQ.front := NULL;Q.rear := NULL;End;Elsedata := .... ;End;

BAB IILANGKAH KERJA

Sebuah plasa mempunyai ruang parkir yang hanya bisa diisi sampai 5 mobil saja pada satu jalur. Mobil yang datang lewat salah satu jalur (sebut saja A), sedang mobil yang akan keluar lewat jalur lainnya (sebut saja B). Jika ada sebuah mobil yang akan keluar dan kebetulan berada di tengah, maka mobil - mobil lain yang berada di depannya harus dipindahkan dulu, setelah mobil tersebut keluar maka mobil-mobil yang dipindahkan tadi disusun kembali seperti semula. Jika mobil yang akan masuk, tetapi jalur parkir sudah penuh maka ada pesan Parkir penuh!. Buatlah program dari kasus diatas.

BAB IIIPEMBAHASAN

CODINGuses crt;varqueue:array[1..5] of integer;i,pos,pil:integer;procedure enqueue;varbil:integer;beginclrscr;if (pos>=5) thenbeginwriteln('Antrean penuh'); readln();endelsebeginwrite('Masukkan no Plat (Hanya Angka 4 Angka Saja) : ');readln(bil);pos:=pos+1;queue[pos]:=bil;end;end;procedure deque;beginclrscr;if (pos=0) thenbeginwriteln('Tidak ada Antrean');readln();endelsebeginpos:=pos-1;for i:=1 to pos dobeginqueue[i]:=queue[i+1];end;end;end;procedure display;vark,l:integer;beginclrscr;if (pos=0) thenbeginwriteln('Tidak ada Antrean');readln();endelsebeginl:=1;for k:=pos downto 1 dobegingotoxy(k*10,6);write('