PROGRAM ANTRIAN ATAU QUEUE
A. Pengertian Program Antrian atau Queue
Queue/antrian adalah ordered list
dengan penyisipan di satu ujung, sedang penghapusan di ujung lain. Ujung
penyisipan biasa disebutrear/tail, sedang ujung penghapusa disebut front/head.
Fenomena yang muncul adalah elemen yang lebih dulu disisipkan akan juga lebih
dulu diambil. Queue berdisiplin FIFO (First In, First Out). Queue merupakan
kasus khusus ordered list. Dengan karakteristik terbatas itu maka kita dapat
melakukan optimasi representasi ADT Queue untuk memperoleh kerja paling
optimal. Misalnya Queue Q= (a1,a2,a3...,an), maka
1.Elemen a1 adalah elemen paling
depan
2.Elemen ai adalah diatas elemen
ai-1, di mana 1<i<n.
3.Elemen an adalah elemen paling
belakang
Head
(atau front) menunjuk ke awal antrian Q (atau elemen terdepan), sedangkan tail ( rear) menunjuk akhir antrian Q (atau elemen paling belakang).Disiplin FIFO pada Queue berimplikasi jika elemen A, B, C, D, E dimasukkan ke Queue, maka penghapusan/pengambilan elemen akan terjadi dengan urutan A, B, C, D, E.
B.
Karakteristik
Queue
Karakteristik penting antrian sebagai berikut :
1.Elemen antrian yaitu item-item
data yang terdapat di elemen antrian.
2.Head/front (elemen terdepan
dari antrian ).
3.Tail/rear (elemen terakhir dari
antrian ).
4.Jumlah elemen pada antrian
(count).
5.Status/kondisi antrian.
Kondisi antrian yang menjadi perhatian adalah :
·
Penuh
Bila elemen di antrian mencapai
kapasitas maksimum antrian. Pada kondisi ini, tidak mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi kesalahan Overflow.
·
Kosong
Bila tidak ada elemen di antrian.
Pada kondisi ini, tidak mungkin dilakukan pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan Underflow.
C. Operasi-Operasi Pokok Di Queue
Operasi-operasi
pokok antrian sebagai berikut :
1. createQueue (Q), atau constructor menciptakan antrian
kosong Q.
2. addQueue (Q, X) memasukkan elemen X sebagai elemen akhir
di Q.
3. removeQueue (Q, X)atau mengambil elemen depan di antrian
Q ke elemenX.
Operasi-operasi pengaksesan tambahan yang dapat dilakukan
adalah :
1. headQueue (Q), atau Front (Q, X) mengirim elemen terdepan
tanpa menghapus.
2. tailQueue (Q), mengirim elemen tanpa menghapusnya.
Operasi-0perasi Query
tambahan yang dapat dilakukan adalah :
1. isEmptyQueue (Q), mengirim apakah antrian Q adalah
kosong.
2. isFullQueue (Q), mengirim apakah antrian Q adalah penuh
bila kapasitas antrian Q didefinisikan.
3. isOverflowQueue (Q), mengirim apakah antrian Q telah
mengalamioverflow.
4. isUnderflowQueue (Q), mengirim apakah antrian Q
mengalamiunderflow.
Operasi-operasi
terhadap seluruh antrian Q antara lain adalah :
1. sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
2. isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2
sama isinya.
Jumlah operasi pokok
Queue tidak banyak. Dengan demikian, sangat sederhana untuk menyatakan apa pun mengenai
implementasinya.
D. Penggunaan Queue
Meski Queue
sangat sederhana, namun Queue merupakan kakas dasar penyelesaian
masalah-masalah besar. penggunaan Queue yang utama adalah untuk simulasi
fenomena antrian di dunia nyata, serta fenomena antrian di pengolahan data. Penggunaan
Queue dapat dicontohkan seperti dibawah ini :
1.
Simulasi antrian di dunia nyata, antara lain :
·
Antrian pembelian tiket di depan loket untuk bis,
kereta api, bioskop.
·
Antrian mobil di depan gerbang jalan tol.
·
Antrian kendaraan di jalanan umum.
2. System
produksi
·
Barisan bahan atau komponen yang akan diproses suatu
mesin.
·
Barisan bahan atau komponen yang akan diproses suatu
manusia
Untuk lebih jelasnya,dbawah ini ada contoh jurnal antrian :
Rumah makan Kober
Mie Setan didirikan pertama kali oleh Bapak Bambang pada tahun 2008 tepatnya di
kota Malang. Nama “Kober” ini diambil dari sebuah singkatan yaitu kelompok
bermain, karena pemilik memiliki keinginan agar warung ini menjadi tempat
berkumpulnya para komunitas yang ada di kota Malang. Awal mulanya Kober Mie
Setan hanya sebuah warung makan yang terletak di Jl.Bromo No. 1A Malang. Warung
ini dulunya adalah sebuah show room fixed gear tempat berkumpulnya
komunitas sepeda balap, di depan tempat tersebut terdapat café kecil dan
salah satu menu yang paling banyak di minati adalah mie, sehingga show room
fixed gear kemudian dirubah menjadi warung mie.
Antusias warga
Malang yang tinggi membuat warung mie semakin ramai dan semakin berkembang. Hal
ini menjadi acuan pemilik rumah makan Kober Mie Setan untuk mengembangkan
bisnisnya dan membuka cabang di kota lain yaitu di kota Gresik dan di kota
Surabaya pada tahun 2011. Selain itu juga pada tahun 2014 Kober Mie Setan
melebarkan ekspansinya di Bali. Di kota Malang saat ini terdapat 3 cabang rumah
makan Kober Mie Setan. Selain di Jl.Bromo No. 1A Malang, Kober Mie Setan juga
terdapat di de Paviliun Jl. Soekarno Hatta dan di Jl.Buring No. 37
Malang. Pada penelitian ini dilakukan di rumah makan Kober Mie Setan yang
terletak di Jl. Soekarno Hatta-Malang,
Rumah makan Kober
Mie Setan Jl.Soekarno Hatta-Malang buka pada pukul 15.00 WIB dan close order
pada pukul 24.00 WIB. Menu utama yang disajikan yaitu Mie Setan dan Mie
Iblis. Kedua mie tersebut disajikan dengan topping yang sama yaitu ayam
yang digiling halus, ada krupuk pangsit, ditambah siomay goreng, dan irisan
daging olahan. Namun, yang membedakan kedua jenis mie ini adalah Mie Setan yang
merupakan mie rebus tanpa kuah dengan tingkat kepedasan dari level 1 sampai
level 5. Cabai yang digunakan berjumlah 12 cabai pada level 1, 25 cabai pada
level 2, 35 cabai pada level 3 dan 45 cabai pada level 4, hingga 60 cabai pada
level 5, sedangkan mie iblis adalah mie goreng dengan tambahan kecap, level
kepedasnnya yaitu dengan sebutan S untuk 10 cabai, M untuk 20 cabai dan L untuk
30 cabai. Selain itu juga terdapat mie angle, aneka dimsum dan beberapa
minuman yang diberi nama-nama unik seperti Es Tuyul, Es Gondoruwo, Es Sundel
Bolong serta berbagai coffee dan frappe.
Pada rumah makan
ini terdapat 31 orang pegawai, yang dibagi menjadi pegawai tetap dan pegawai training
di tiap-tiap departemen. Departemen yang ada mencakup bagian kasir (server),
cooking, bartender dan waiters. Pada fasilitas pelayanan
kasir (server) terdapat 5 orang pegawai, dengan rincian 3 orang pegawai
tetap dan 2 orang pegawai training. Pada Bartender terdapat 3 orang
pegawai yang dibagi menjadi 2 orang pegawai tetap dan 1 orang pegawai training
dan terdapat 23 orang ditempatkan di bagian cooking dan waiters.
Disiplin Antrian
Pada rumah makan
Kober Mie setan terdapat sistem antrian dengan satu fasilitas pelayanan kasir.
Disiplin antrian yang digunakan adalah First Come First Served (FCFS),
dimana didalam sistem ini pelanggan yang datang lebih dahulu akan mendapatkan
giliran pelayanan terlebih dahulu. Penerapan sistem ini dengan menggunakan
garis tunggu antrian (waiting lines). Pelanggan yang datang tidak
langsung mendapatkan pelayanan, akan tetapi pelanggan tersebut harus memasuki
garis tunggu antrian yang memanjang kebelakang sesuai dengan urutan kedatangan.
Kemudian pelanggan tersebut menunggu sampai akhirnya mendapatkan pelayanan.
Menurut Nasution (2012), disiplin pelayanan First Come First Served (FCFS) atau
First In First Out (FIFO) artinya yang lebih dahulu datang (sampai),
akan lebih dahulu dilayani (keluar). Jenis sistem antrian adalah Single
Channel-Single Phase yaitu hanya ada satu jalur antrian dan hanya terdapat
satu fasilitas pelayanan (server). Menurut Hardiyatmo (2007), sistem
antrian jalur tunggal (single channel, single server) berarti dalam
sistem antrian hanya terdapat satu pemberi layanan serta satu jenis layanan
yang diberikan.
Komponen Fasilitas
Pelayanan Pelanggan
Fasilitas
pelayanan pelanggan di rumah makan Kober Mie Setan memiliki beberapa komponen,
antara lain yaitu :
1. Kasir (Server)
Kasir (Server)
merupakan komponen sistem pelayanan yang bertugas melakukan pelayanan terhadap
pemesanan menu makanan dan proses pembayaran. Pada rumah makan ini terdapat
satu fasilitas pelayanan kasir (server) atau disebut dengan sistem
saluran tunggal. Kasir (server) tersebut bekerja mulai pukul 14.00 WIB
sampai 02.00 WIB dan tidak terdapat sift kerja. Menurut Aminudin (2005),
bila terdapat satu saluran pelayanan maka dikatakan sistem saluran tunggal,
sedangkan sistem saluran majemuk mempunyai sumber pelayanan (server)
lebih dari satu yang beroperasi secara bersamaan.
2. Tempat menunggu
Pada rumah makan
ini terdapat dua jenis tempat untuk menunggu, yaitu waiting lines dan
ruang tunggu. Waiting lines merupakan garis tunggu antrian,
dimana pelanggan yang datang tidak langsung mendapatkan pelayanan oleh kasir (server)
tetapi harus memasuki waiting lines terlebih dahulu untuk menunggu
sampai tiba mendapatkan pelayanan. sedangkan ruang tunggu yaitu khusus untuk
pelanggan dengan memesan makan yang langsung di bawa pulang. Di sana di
sediakan kursi bagi pelanggan untuk menunggu makanan yang dipesan sudah siap.
Pengolahan
Data
Sebelum data yang
diperoleh diolah lebih lanjut, dilakukan terlebih dahulu pengujian kecukupan
data untuk mengetahui data yang didapatkan sudah sesuai atau masih kurang.
Dalam perhitungan uji kecukupan data juga diperlukan tingkat ketelitian dan
tingkat keyakinan. Di dalam aktifitas pengukuran kerja akan diambil tingkat
ketelitian 5% dan tingkat keyakinan 95%. Menurut Candra (2007), uji kecukupan
data dengan tingkat kepercayaan 95% (k=2) dan tingkat ketelitian 5% (0,05)
menunjukkan sekurang-kurangnya 95 dari 100 harga rata-rata dari data yang
diukur memilikipenyimpangan tidak melebihi 5%. Perhitungan uji kecukupan data
adalah sebagai berikut :
N’ = 2.871 ≈ 3
Berdasarkan hasil
perhitungan tersebut didapatkan jumlah pengamatan yang seharusnya dilakukan (N’)
sebesar 2.871 ≈ 3, sedangkan jumlah pengamatan yang telah dilakukan (N) sebesar
42 data. Karena jumlah pengamatan yang dilakukan lebih besar dari pada jumlah
pengamatan yang seharusnya dilakukan (N > N’), maka dapat disimpulkan
bahwa data yang diambil sudah cukup. Menurut Utami (2012), jika data yang
diambil sudah cukup (N > N’), maka penelitian dapat dilanjutkan
dengan pengolahan data, jika data yang diambil belum cukup, dilakukan
pengulangan proses pengumpulan data.
Program Bahasa C++
#include <iostream>
#define MAX 20 //maksimum data queue
using namespace std;
//Deklarasi struct antrian
struct Queue {
int
front, rear, data[MAX];
}Q;
//cek apakah antrian penuh
bool isFull() {
return
Q.rear == MAX;
}
//cek apakah antrian kosong
bool isEmpty() {
return
Q.rear == 0;
}
//Menampilkan Queue
void printQueue() {
if
(isEmpty()) {
cout
<< "Antrian kosong"<<endl;
}
else {
cout
<< "QUEUE : ";
for
(int i = Q.front; i < Q.rear; i++)
//menambahkan
koma jika data tidak terdapat di antrian pertama
cout
<< Q.data[i] << ((Q.rear-1 == i) ? "" : ",");
cout
<< endl;
}
}
//manambahkan data ke antrian
void enqueue() {
if
(isFull())
{
cout
<< "Antrian penuh!"<<endl;
}
else {
int
data;
//menambahkan
data ke antrian
cout
<< "Masukkan Data : ";cin >> data;
Q.data[Q.rear]
= data;
//menempatkan
tail pada elemen data terakhir yang ditambahkan
Q.rear++;
cout
<< "Data ditambahkan\n";
printQueue();
}
}
// mengambil data dari antrian
void dequeue() {
if
(isEmpty())
{
cout
<< "Antrian masih kosong"<<endl;
}
else{
cout
<< "Mengambil data \"" << Q.data[Q.front] <<
"\"..." << endl;
//menggeser
antrian data ke head
for
(int i = Q.front; i < Q.rear; i++)
Q.data[i]
= Q.data[i + 1];
//menempatkan
tail pada data terakhir yang digeser
Q.rear--;
printQueue();
}
}
int main() {
int
choose;
do
{
//Tampilan
menu
cout
<< "-------------------\n"
<<
" Menu Pilihan\n"
<< "-------------------\n"
<<
" [1] Enqueue \n"
<<
" [2] Dequeue\n"
<<
" [3] Keluar \n\n"
<<
"-------------------\n"
<<
"Masukkan pilihan : "; cin >> choose;
switch
(choose)
{
case
1:
enqueue();
break;
case
2:
dequeue();
break;
default:
cout
<< "Pilihan tidak tersedia";
break;
}
} while
(choose !=3);
return 0;
}
Output Dari Program Tersebut
Komentar
Posting Komentar