Anda di halaman 1dari 20

PEMROGRAMAN ANTRIAN PENGAMBILAN OBAT BERBASIS

QUEUE

Dosen Pengampu :

Abdi Pandu Kusuma, S.Kom, M.T

ANGGOTA KELOMPOK
 FERDINAN RISKI SUGANDA (22104420007)
 WILDAN DWI JATMIKO (22104420016)
 MOHAMAD RONALD SUBAGTI (22104420018)

PROGRAM STUDI SISTEM KOMPUTER

FAKULTAS TEKNOLOGI INFORMASI

UNIVERSITAS ISLAM BALITAR

2023
KATA PENGANTAR

Puji syukur kami panjatkan ke-hadirat Tuhan Yang Maha Esa, karena atas rahmat dan
hidayah-Nya. Adapun tujuan penulisan makalah ini adalah untuk memberikan wawasan
mengenai mata kuliah Pemrograman Terstruktur, dengan judul “ PEMROGRAMAN
PENGAMBILAN OBAT BERBASIS QUEUE”.

Dengan tulisan ini kami diharapkan mahasiswa mampu untuk memahami makna dari
Demokrasi Indonesia. Kami sadar tulisan ini terdapat banyak kekurangan. Oleh karena itu,
kami mengharapkan adanya kritik dan saran yang bersifat membangun dari berbagai pihak,
agar bisa menjadi lebih baik lagi.

Kami berharap semoga tulisan ini dapat memberi informasi yang berguna bagi
pembacanya, terutama mahasiswa, supaya kelak menjadi pribadi yang berdemokrasi
pancasila, karena kita adalah penerus Bangsa Indonesia.

1
DAFTAR ISI

PEMROGRAMAN ANTRIAN PENGAMBILAN OBAT BERBASIS QUEUE ............... 0


KATA PENGANTAR ............................................................................................................... 1
DAFTAR ISI............................................................................................................................. 2
BAB 1 PENDAHULUAN ........................................................................................................ 3
1.1 Latar Belakang .......................................................................................................... 3
1.2 Ruang Lingkup.......................................................................................................... 3
BAB 2 DASAR TEORI............................................................................................................ 4
2.1 Queue .......................................................................................................................... 4
BAB 3 PERANCANGAN PROGRAM.................................................................................. 5
3.1 Perancangan Program Queue .................................................................................. 5
3.2 Desain Layout:........................................................................................................... 5
3.3 Operasi Dasar ............................................................................................................ 5
3.4 Algoritma ................................................................................................................... 5
3.5 Kode (dalam bahasa C++) ........................................................................................ 6
BAB 4 PEMBAHASAN PROGRAM................................................................................... 11
4.1 Deklarasi dan Inisialisasi Variabel ........................................................................ 11
4.2 Fungsi `IsEmpty()` dan `IsFull()`........................................................................... 11
4.3 Fungsi `Masuk(int ya)`............................................................................................ 11
4.4 Fungsi `Keluar()` ..................................................................................................... 12
4.5 Fungsi `Clear()` ....................................................................................................... 12
4.6 Fungsi `View()` ........................................................................................................ 13
4.7 Di dalam fungsi `main()`......................................................................................... 14
4.8 Running Program.................................................................................................... 15
BAB 5 KESIMPULAN & SARAN ....................................................................................... 17
5.1 Kesimpulan .............................................................................................................. 17
5.2 Saran......................................................................................................................... 17
DAFTAR PUSTAKA ............................................................................................................. 18
BIODATA KELOMPOK....................................................................................................... 19

2
BAB 1 PENDAHULUAN

1.1 Latar Belakang


Latar Belakang Queue:
Queue (antrian) adalah struktur data lain yang penting dalam pemrograman. Konsep queue
terinspirasi dari antrian dalam kehidupan nyata, seperti antrian pembayaran di kasir. Dalam
queue, elemen-elemen data disimpan dalam urutan linear dan aksesnya terbatas pada dua
ujung, yaitu "front" (depan) dan "rear" (belakang). Elemen pertama yang dimasukkan ke
dalam queue akan menjadi elemen pertama yang dikeluarkan.
Queue bekerja berdasarkan prinsip FIFO (First-In, First-Out), yang berarti elemen pertama
yang dimasukkan ke dalam queue adalah yang pertama kali dikeluarkan. Operasi tambahan
pada queue meliputi "enqueue" (memasukkan elemen ke dalam queue) dan "dequeue"
(mengeluarkan elemen dari queue). Enqueue dilakukan pada rear, sedangkan dequeue
dilakukan pada front.
Queue memiliki berbagai aplikasi dalam pemrograman, seperti pengelolaan antrian tugas
dalam sistem operasi, pengiriman pesan dalam protokol komunikasi, penjadwalan tugas
dalam algoritma pemrosesan data, dan sebagainya. Seperti halnya stack, operasi enqueue
dan dequeue pada queue juga dilakukan dalam waktu konstan (O(1)).

1.2 Ruang Lingkup


Queue digunakan untuk memenuhi kebutuhan penyimpanan dan pengambilan data dalam
pemrograman. Keduanya dapat digunakan di berbagai bidang, termasuk pemrograman
umum, sistem operasi, basis data, pemrosesan data, dan pengembangan perangkat lunak.
Stack dan queue biasanya digunakan ketika kita perlu mengatur urutan akses data dan
menjaga urutan operasi yang sesuai. Keduanya memberikan pendekatan yang sederhana
dan efisien untuk masalah tersebut. Stack dan queue juga merupakan dasar dari struktur
data yang lebih kompleks, seperti linked list, tree, dan graph.
Namun, terdapat perbedaan ruang lingkup antara stack dan queue. Stack lebih cocok
digunakan ketika kita hanya perlu mengakses elemen teratas (top) dari tumpukan,
sedangkan queue lebih cocok digunakan ketika kita perlu mengakses elemen depan (front)
dan belakang (rear) dari antrian. Pemilihan stack atau queue tergantung pada kebutuhan
dan karakteristik spesifik dari masalah yang dihadapi dalam pemrograman.

3
BAB 2 DASAR TEORI

2.1 Queue
Queue merupakan struktur data yang mengikuti prinsip FIFO (First-In-First-Out), artinya
elemen pertama yang dimasukkan ke dalam queue akan menjadi elemen pertama yang
dihapus. Konsep queue mirip dengan antrian di kasir, di mana orang yang pertama kali
datang akan dilayani lebih dulu.

Operasi utama dalam queue adalah:


1. Enqueue: Menambahkan elemen ke dalam queue pada posisi akhir.
2. Dequeue: Menghapus dan mengembalikan elemen pertama dari queue.
3. Front: Mengakses elemen pertama tanpa menghapusnya.
4. Rear: Mengakses elemen terakhir tanpa menghapusnya.
5. isEmpty: Memeriksa apakah queue kosong atau tidak.
Contoh penggunaan queue:
1. Penjadwalan tugas dalam sistem operasi.
2. Antrian pesan di aplikasi pesan.
3. Proses pemrosesan data secara berurutan.

4
BAB 3 PERANCANGAN PROGRAM

3.1 Perancangan Program Queue


Queue adalah struktur data berbasis FIFO (First-In-First-Out), yang berarti elemen
pertama yang dimasukkan adalah yang pertama kali dikeluarkan. Berikut adalah
perancangan program Queue:

3.2 Desain Layout:


Anda dapat menggunakan tipe data array atau linked list untuk mengimplementasikan
Queue.
Buat variabel penunjuk atau indeks (misalnya front dan rear) yang menunjukkan posisi
elemen depan dan belakang di Queue.

3.3 Operasi Dasar

• enqueue(item): Menambahkan elemen ke Queue. Jika Queue penuh, tampilkan pesan


kesalahan.
• dequeue(): Menghapus dan mengembalikan elemen depan dari Queue. Jika Queue
kosong, tampilkan pesan kesalahan.
• peek(): Mengembalikan elemen depan dari Queue tanpa menghapusnya. Jika Queue
kosong, tampilkan pesan kesalahan.
• isEmpty(): Memeriksa apakah Queue kosong atau tidak.
• isFull(): Memeriksa apakah Queue penuh atau tidak.
• size(): Mengembalikan jumlah elemen saat ini di dalam Queue.

3.4 Algoritma
1) Mulai
2) Deklarasikan dan inisialisasikan variabel global: nomer[MAX], head=-1, tail=-1, dan
k=1
3) Buat fungsi IsEmpty yang mengembalikan true jika tail sama dengan -1, dan false jika
tidak
4) Buat fungsi IsFull yang mengembalikan true jika tail sama dengan MAX-1, dan false
jika tidak
5) Buat fungsi Masuk dengan parameter ya
A. Jika IsEmpty bernilai true, set head dan tail ke 0
B. Jika tidak, increment tail
C. Simpan ya di nomer[tail]
6) Buat fungsi Keluar
A. Jika IsEmpty bernilai true, cetak "Antrian sudah kosong!"
B. Jika tidak, lakukan perulangan dari head sampai tail-1

5
C. Geser elemen nomer[j] dengan nomer[j+1]
D. Kurangi tail dengan 1
E. Jika tail sama dengan -1, set head ke -1
7) Buat fungsi Clear
A. Set head dan tail ke -1
B. Set k ke 1
8) Buat fungsi View
A. Jika IsEmpty bernilai true, cetak "Antrian kosong!"
B. Jika tidak, lakukan perulangan dari head sampai tail
C. Cetak nomor antrian
9) Di dalam `main()`
A. Deklarasikan variabel pilihan dan urutan
B. Lakukan perulangan do-while
C. Bersihkan layar konsol
D. Tampilkan menu dan minta input pilihan
1. Jika pilihan sama dengan 1:
A. Jika IsFull bernilai true, cetak "Antrian sudah penuh!"
B. Jika tidak, panggil fungsi Masuk dengan argumen k
C. Cetak nomor antrian dan antrian yang menunggu
D. Tambahkan 1 ke k
2. Jika pilihan sama dengan 2:
A. Cetak nomor antrian dari nomer[head]
B. Panggil fungsi Keluar
C. Cetak "Silahkan! Anda Dipanggil!"
10) Selesai
3.5 Kode (dalam bahasa C++)

#include <iostream>
#include <conio.h>

#include <windows.h>

#define MAX 10

using namespace std;


int nomer[MAX];

int head=-1, tail=-1, k=1;


6
bool IsEmpty(){

if(tail == -1){
return true;

}else{

return false;

}
}

bool IsFull(){

if(tail == MAX-1){

return true;
}else{

return false;

}
void Masuk(int ya){

if (IsEmpty()){

head=tail=0;
}else {

tail++;

nomer[tail]=ya;
}

void Keluar(){

if(IsEmpty()){

cout<<"Antrian sudah kosong ! ";


} else {

for(int j=head;j<tail;j++){

nomer[j]=nomer[j+1];
}

7
tail--;

if(tail == -1){
head = -1;

}
void Clear(){

head=tail=-1;

k=1;

}
void View(){

if(IsEmpty()){

cout<<"Antrian kosong ! ";

}else {
{int j;

cout<<endl;

cout<<"== No. Antrian yang telah dilayani =="<<endl;


for(int k=1;k<=j;k++)

cout << "---------------------------------"<<endl;

cout << "No. Antrian : [" << k << "]"<<endl;


cout << "----------------------------------"<< endl;}

cout<<endl;

cout<<endl;

cout<<"== No. Antrian yang Belum dilayani =="<<endl;


for(j=head;j<=tail;j++)

cout << "----------------------------------"<<endl;


cout << "No. Antrian : [" << nomer[j] << "]"<<endl;

8
cout <<"-----------------------------------"<< endl;}}

}
}

int main(){

int pilihan, urutan;

do{
system("cls");
cout << "====== Biodata Kelompok 2 ======\nNama: Ferdinan Riski
Suganda\nNIM: 2104420007\nNama: Mohamad Ronald Subagti\nNIM:
2104420018\nNama: Wildan Dwi Jatmiko\nNIM: 2104420016";
cout << "\n====== PROGRAM ANTRIAN PENGAMBILAN OBAT
======="<<endl;

cout << "================================="<<endl;

cout << "|1. Tambahkan Antrian |"<<endl;


cout << "|2. Panggilkan Antrian |"<<endl;

cout << "|3. Lihat semua daftar |"<<endl;

cout << "|4. Hapus Semua daftar |"<<endl;


cout << "|5. Keluar |"<<endl;

cout << "================================="<<endl;

cout << "\nPilih : "; cin >> pilihan;

cout <<endl;
if(pilihan == 1){

if(IsFull()) {

cout<<"Antrian sudah penuh, mohon tunggu beberapa saat lagi ";

}
else{

urutan=k;

Masuk(urutan);
cout << "No. Antrian : "<< k<<endl;

cout << "Antian yang Menunggu : "<< tail<<endl;

k++;
9
}

}
else if(pilihan == 2){

cout << "No. Antrian : " << nomer[head] << endl;

Keluar();

cout << "Silahkan! Anda Dipanggil!" << endl;


}

else if(pilihan == 3){

View();

}
else if(pilihan == 4){

Clear();

cout<<"Antrian Berhasil dikosongkan ! ";

}
else if(pilihan == 5){

else{
cout << "Input yang dimasukan anda salah ! "<< endl;

getch();

}
while(pilihan!=5);

10
BAB 4 PEMBAHASAN PROGRAM

4.1 Deklarasi dan Inisialisasi Variabel

• `nomer[MAX]`: Array untuk menyimpan nomor antrian.


• `head dan tail`: Menunjukkan posisi awal dan akhir antrian dalam array.
• `k`: Nomor antrian yang akan diberikan kepada pelanggan berikutnya.

4.2 Fungsi `IsEmpty()` dan `IsFull()`

• `IsEmpty()`: Memeriksa apakah antrian kosong dengan memeriksa apakah `tail`


bernilai -1.
• `IsFull()`: Memeriksa apakah antrian penuh dengan memeriksa apakah `tail` sama
dengan `MAX-1`.

4.3 Fungsi `Masuk(int ya)`

• Memasukkan nomor antrian baru ke dalam antrian.


• Jika antrian kosong, maka `head` dan `tail` diatur ke 0.
• Jika antrian tidak kosong, `tail` dinaikkan.
• Nomor antrian baru disimpan di posisi `tail`.

11
4.4 Fungsi `Keluar()`

• Menghapus nomor antrian dari depan antrian.


• Jika antrian kosong, maka pesan "Antrian sudah kosong!" ditampilkan.
• Jika antrian tidak kosong, nomor antrian yang ada di depan dihapus dan elemen-
elemen antrian bergeser ke depan.
• `tail` dan `head` diatur ulang jika antrian kosong setelah penghapusan.

4.5 Fungsi `Clear()`

• Mengosongkan seluruh antrian dengan mengatur `head` dan `tail` kembali ke nilai
awal -1.

12
4.6 Fungsi `View()`

• Menampilkan nomor antrian yang telah dilayani dan yang belum dilayani.
• Jika antrian kosong, maka pesan "Antrian kosong!" ditampilkan.

13
4.7 Di dalam fungsi `main()`

• Terdapat loop `do-while` yang berjalan selama `pilihan` tidak sama dengan 5
(keluar).
• Menu program ditampilkan kepada pengguna.
• Pengguna memilih pilihan yang diinginkan.
• Pilihan-pilihan tersebut memanggil fungsi-fungsi yang sesuai untuk menambahkan
antrian, memanggil antrian, melihat daftar antrian, menghapus antrian, atau keluar
dari program.
• Setiap pilihan juga menampilkan pesan atau informasi yang relevan kepada
pengguna.

Program ini memberikan fitur sederhana untuk mengelola antrian pengambilan obat.
Pengguna dapat menambahkan antrian, memanggil antrian berikutnya, melihat daftar
antrian, menghapus semua antrian, atau keluar dari program. Nomor antrian yang baru
ditambahkan ke antrian akan ditampilkan kepada pengguna.

14
4.8 Running Program
1. Tampilan Program

2. Tambahkan Antrian

▪ Masukkan angka 1 untuk mengambil nomer antrian dan menampilkan berapa


jumlah antrian yang menunggu.
3. Panggil Antrian

▪ Masukkan angka 2 untuk memanggil nomer antrian.

15
4. Lihat Semua Daftar

▪ Masukkan angka 3 untuk mengentahui antrian yang belum dilayani.

5. Hapus Semua Daftar

▪ Masukkan angka 4 untuk menghapus daftar antrian

6. Keluar

▪ Masukkan angka 5 untuk keluar dari progam

16
BAB 5 KESIMPULAN & SARAN

5.1 Kesimpulan
Program yang telah dijelaskan adalah implementasi sederhana dari antrian (queue) dalam
bahasa C++. Program ini memungkinkan pengguna untuk menambahkan antrian,
memanggil antrian berikutnya, melihat daftar antrian, menghapus semua antrian, dan
keluar dari program. Program ini menggunakan array untuk menyimpan nomor antrian dan
memiliki fungsi-fungsi untuk memeriksa apakah antrian kosong atau penuh, serta untuk
menambahkan, menghapus, dan melihat elemen-elemen antrian.

5.2 Saran
1. Menambahkan validasi input: Program saat ini belum memiliki validasi input yang
kuat. Anda dapat mempertimbangkan untuk menambahkan validasi input untuk
memastikan bahwa pengguna hanya memasukkan input yang valid, seperti angka yang
sesuai dengan pilihan yang tersedia.
2. Meningkatkan penggunaan fungsi dan modularitas: Meskipun program ini berfungsi
dengan baik, Anda dapat mempertimbangkan untuk membagi logika program menjadi
fungsi-fungsi yang lebih kecil dan terpisah. Hal ini akan meningkatkan modularitas
dan kemudahan pemeliharaan program.
3. Memberikan pesan kesalahan yang lebih deskriptif: Saat ini, program memberikan
pesan kesalahan yang sederhana jika ada operasi yang tidak berhasil dilakukan. Anda
dapat memperbaiki ini dengan memberikan pesan kesalahan yang lebih deskriptif
kepada pengguna, sehingga mereka dapat memahami apa yang salah dan bagaimana
memperbaikinya.
4. Menyempurnakan tampilan daftar antrian: Anda dapat mempertimbangkan untuk
memperbaiki tampilan daftar antrian agar lebih mudah dibaca dan dipahami oleh
pengguna. Misalnya, Anda dapat menambahkan format tabel atau pemformatan
lainnya untuk memisahkan setiap nomor antrian dengan jelas.
Dengan melakukan peningkatan tersebut, program antrian ini dapat menjadi lebih
interaktif, mudah digunakan, dan lebih informatif bagi pengguna.

17
DAFTAR PUSTAKA

Kurniawan, D. (2007). REKAYASA CITRA PADA GAMBAR DIGITAL.


Harijanto, B., Apriyani, M. E., & Hamdana, E. N. (2021). Online learning system for
kampus merdeka: Innovative learning in COVID-19 pandemic. IJORER: International
Journal of Recent Educational Research, 2(5), 590-599.

18
BIODATA KELOMPOK

NIM : 22104420007
NAMA LENKAP : FERDINAN RISKI SUGANDA
TTL : BLITAR, 01 OKTOBER 2003
ALAMAT : Desa.Jatilengger, Kec.Ponggok,
Kab.Blitar
HOBBY : Bermain Game

NIM : 22104420018
NAMA LENKAP : MOHAMAD RONALD SUBAGTI
TTL : BLITAR, 15 MEI 2003
ALAMAT : Desa.Jimbe, Kec.Kademangan,
Kab.Blitar
HOBBY : Bermusik

NIM : 22104420016
NAMA LENKAP : WILDAN DWI JATMIKO
TTL : BLITAR, 11 OKTOBER 2003
ALAMAT : Desa.Plosorejo, Kec.Kademangan,
Kab.Blitar
HOBBY : Bermain Bola

19

Anda mungkin juga menyukai