QUEUE
Dosen Pengampu :
ANGGOTA KELOMPOK
FERDINAN RISKI SUGANDA (22104420007)
WILDAN DWI JATMIKO (22104420016)
MOHAMAD RONALD SUBAGTI (22104420018)
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
2
BAB 1 PENDAHULUAN
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.
4
BAB 3 PERANCANGAN PROGRAM
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
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()){
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()){
}else {
{int j;
cout<<endl;
cout<<endl;
cout<<endl;
8
cout <<"-----------------------------------"<< endl;}}
}
}
int main(){
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;
if(pilihan == 1){
if(IsFull()) {
}
else{
urutan=k;
Masuk(urutan);
cout << "No. Antrian : "<< k<<endl;
k++;
9
}
}
else if(pilihan == 2){
Keluar();
View();
}
else if(pilihan == 4){
Clear();
}
else if(pilihan == 5){
else{
cout << "Input yang dimasukan anda salah ! "<< endl;
getch();
}
while(pilihan!=5);
10
BAB 4 PEMBAHASAN PROGRAM
11
4.4 Fungsi `Keluar()`
• 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
15
4. Lihat Semua Daftar
6. Keluar
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
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