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

Postingan populer dari blog ini

Program Tipe Data Record Bahasa Pascal

ARRAY 2 DIMENSI