PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 137 Tampilan hasil compile and run ketika mengeluarkan data (pilihan 2). Gambar 6.22 Tampilan Hasil Running (Pop) Tampilan hasil compile and run ketika stack kosong (pilihan 2 dan 3). Gambar 6.23 Tampilan Hasil Running Gambar 6.24 Tampilan Hasil Running Pilihan 2 (Stack Underflow) Pilihan 3 (Stack Underflow)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 138 Tampilan hasil compile and run ketika hendak keluar (pilihan 4). Gambar 6.25 Tampilan Hasil Running (Exit)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 139 b. Program Stack Flowchart Program Stack Flowchart 6.2 Program Stack Penjelasan: Flowchart di atas dimulai dengan menggunakan simbol terminal, lalu mendeklarasikan variabel beserta tipe datanya, yaitu int data, struct node *link, serta mendeklarasikan fungsi yang akan digunakan selanjutnya, yaitu push(), pop(), dan Int main() Int choice = 0 Start Int data Struct node *link NODE, NODE *top = NULL, void push(), void pop(), void display() 1.push 2.pop 3.display 4.quit Enter your choice: Scanf(“%d”,&choic e) PILIHAN TIDAK TERSEDIA case 1 case 2 case 3 case 4 default No No No No Yes Yes Yes Yes While(1) switch(choice) push() pop() display() exit(0)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 140 display() menggunakan simbol preparation. Kemudian mendeklarasikan fungsi utama, yaitu int main() dan int choice = 0 dengan menggunakan simbol proses. Selanjutnya masuk ke tahap perulangan, dimulai dari while(1), menampilkan pilihan yang dicetak menggunakan simbol input/ouput, dan membuat inputan untuk dimasukkan ke dalam variabel choice. Selanjutnya, di dalam proses perulangan, terdapat pilihan dalam 5 kasus. Jika benar, maka ke kasus pertama, untuk memuat fungsi push. Jika salah, maka ke kasus dua. Jika pada kasus kedua benar, maka memuat fungsi pop. Jika salah, maka ke kasus tiga. Jika pada kasus tiga benar, maka memuat fungsi display. Jika salah, maka ke kasus empat, yaitu exit atau selesai. Jika inputan tidak termasuk ke dalam keempat kasus, maka kasus default akan berjalan dan kembali mengulangi proses perulangan. Penulisan kodenya seperti di bawah ini. #include<stdio.h> #include<stdlib.h> #include <conio.h> typedef struct node{ int data; struct node *link; } NODE; NODE *top = NULL; void push(); void pop(); void display();
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 141 int main(){ int choice = 0; int temp; while(1){ printf("\n1.Push\n"); printf("2.Pop\n"); printf("3.Display\n"); printf("4.Quit\n\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice){ case 1 : push(); getch(); system("cls"); break; case 2: pop(); getch(); system("cls"); break; case 3: display();
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 142 break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push(){ NODE *temp; int info = 0; printf("Enter data to be pushed (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL){ printf("\nMemory Allocation Failed"); } else{ temp->data = info; temp->link = top; top = temp; printf("Node has been inserted at Top(Front) Successfully !!\n");
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 143 } } void pop(){ NODE *temp; if(top == NULL){ printf("Stack is empty!!\n"); } else { temp = top; printf("Popped data : %d\n", temp->data); top = top->link; free(temp); } } void display(){ NODE *temp; if(top == NULL){ printf("Empty Stack !!!\n"); } else{ temp = top; printf("Stack : \n"); while(temp != NULL){
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 144 printf("\n ____\n"); printf("|%4d|",temp->data); printf("\n ____\n"); temp = temp->link; } } getch(); system("cls"); }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 145 Tampilan baris kode seperti di bawah ini. Gambar 6.26 Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 146 Lanjutan tampilan baris kode. Gambar 6.27 Lanjutan Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 147 Gambar 6.28 Lanjutan Tampilan Baris Kode Tampilan hasil compile and run ketika memasukkan data (pilihan 1). Gambar 6.29 Tampilan Hasil Running (Push)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 148 Tampilan hasil compile and run ketika mengeluarkan data (pilihan 2). Gambar 6.30 Tampilan Hasil Running (Pop) Tampilan hasil compile and run ketika menampilkan data (pilihan 3). Gambar 6.31 Tampilan Hasil Running (Display)
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 149 Tampilan hasil compile and run untuk keluar (pilihan 4). Gambar 6.32 Tampilan Hasil Running (Quit) 6.5. KESIMPULAN DAN SARAN 1. Kesimpulan Stack termasuk dalam jenis struktur data abstrak. Stack adalah jenis struktur data yang memakai sistem LIFO seperti tumpukan pada kegiatan di dunia nyata pada umumnya. Terdapat banyak fungsi yang membantu dalam proses pengerjaan program stack. Namun, fungsi yang paling utama adalah fungsi push() dan fungsi pop(). 2. Saran Mengetahui konsep perulangan, agar lebih mudah dalam memahami alur proses dari unsur array yang dibuat dalam proses membuat program stack, teliti dalam pembuatan program dan dalam proses debugging, serta mencoba memahami pesan error yang disampaikan sebelum ditanyakan kepada orang lain atau mencari maksud dari error tersebut di internet.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 150
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 151 BAB VII QUEUE 7.1. PENDAHULUAN Queue atau antrian merupakan struktur data atau kumpulan elemen yang pengisian dan pengeluaran elemennya dilakukan dari sisi yang berbeda. Pengisian dilakukan dari sisi belakang dan pengeluaran dari sisi depan. Dapat diketahui dari jumlah lokasi pengisian dan pengeluaran yang terdiri dari masing-masing satu sisi, dan prosesnya yang dilakukan dengan dua sisi, maka dapat diketahui bahwa queue memakai konsep FIFO atau First In First Out, yaitu elemen yang pertama kali masuk akan keluar pertama kali juga. Pada konteks array, proses pengisian elemen queue digunakan untuk mengambil atau mengeluarkan elemen dari suatu queue. Proses pengeluaran elemen dari antrian selalu dari sisi depan, sehingga penunjuk depan menjadi naik satu (depan+1) jika depan lebih kecil dari maksimum elemen array. Namun, depan akan di atur menjadi satu (depan = 1 ) jika depan sama dengan maksimum elemen array. 7.2. TUJUAN PRAKTIKUM 1. Memahami konsep queue 2. Mempraktikkan cara penggunaan queue dalam C++ 7.3. LANGKAH-LANGKAH KEGIATAN PRAKTIKUM 1. Bukalah aplikasi Dev C++ melalui start menu.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 152 Gambar 7.1 Tampilan Aplikasi Dev C++
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 153 2. Tampilan awal akan tampak seperti gambar di bawah ini. Gambar 7.2 Tampilan Awal Dev C++ 3. Buatlah program baru dengan menekan menu file, new, source file atau dengan menekan Ctrl+N pada keyboard secara bersamaan seperti gambar di bawah ini. Gambar 7.3 Membuat Projek Baru
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 154 4. Ketik source code programnya seperti gambar di bawah ini. Gambar 7.4 Struktur Kode C++ 5. Tekan tombol compile and run atau dengan menekan shortcut fn+f11 secara bersamaan seperti pada gambar di bawah ini. Gambar 7.5 Proses Compile Sekaligus Run
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 155 6. Akan muncul dialog untuk menyimpan program. Ketik nama sesuai yang diinginkan. Gambar 7.6 Proses Penyimpanan 7. Muncul tampilan hasil running atau hasil dari kode yang diketikkan. Gambar 7.7 Tampilan Hasil Running 8. Program awal dengan menggunakan bahasa C++ dan editor Dev C++ telah berhasil dibuat.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 156 7.4. STUDY CASES a. Program Queue dengan Menggunakan Array Flowchart Program Queue dengan Menggunakan Array Flowchart 7.1 Program Queue dengan Menggunakan Array
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 157 Penjelasan: Program dimulai dengan simbol terminator –start dan end. Kemudian mendeklarasikan variabel MAX = 5, front = -1 dan rear = -1, serta queue_arr [MAX] dengan tipe data integer menggunakan simbol preparation. Lalu memanggil fungsi enqueue() untuk memasukkan data, dequeue() untuk mengeluarkan data, dan display() untuk menampilkan data di dalam array. Selanjutnya ke fungsi main() atau fungsi utama yang dilanjutkan dengan mendeklarasikan variabel choice bertipe data integer. Kemudian menampilkan nama dan npm menggunakan simbol input/ouput. Kemudian masuk proses penginputan nilai ke variabel choice . Kemudian masuk ke seleksi bersyarat jika inputan yang diterima adalah 1 maka jalankan fungsi enqueue(). Jika inputan yang diterima adalah 2 maka jalankan fungsi dequeue(). Jika inputan yang diterima adalah 3 maka jalankan fungsi display(). Jika inputan yang diterima adalah 4 maka program selesai. Jika inputan yang diterima selain dari syarat di atas maka tampilkan “pilihan tidak tersedia”. Lalu program akan melakukan perulangan secara terus menerus ke proses memasukkan nilai pada variabel choice kecuali nilai yang diinputkan adalah 4, karena program akan selesai. Penulisan kodenya seperti di bawah ini. /*Program of queue using array*/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 158 int rear = -1; int front = -1; int queue_arr[MAX]; void enqueue(); void dequeue(); void display(); main(){ int choice ; while(1){ printf("\n Nama : Annisa Sabur \n"); printf(" NPM : 07352211091\n"); printf("-------------------------\n"); printf(" 1. Insert\n"); printf(" 2. Delete\n"); printf(" 3. Display\n"); printf(" 4. Quit\n"); printf(" Enter your choice : ");
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 159 scanf("%d",&choice ); switch(choice ){ case 1 : enqueue(); break; case 2 : dequeue(); break; case 3: display(); break; case 4: exit(1); default: printf(" PILIHAN TIDAK TERSEDIA\n"); } } getch();
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 160 } void enqueue(){ int added_item; if (rear == (MAX - 1)){ printf(" Queue Overflow\n");} (else) if (front == -1){ front = 0; } printf(" Input the element for adding in queue : "); scanf("%d", &added_item); rear = rear + 1; queue_arr[rear] = added_item ; } } void dequeue(){ if (front == -1){ printf(" Queue Underflow\n"); } else{
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 161 printf(" Element deleted from queue is : %d\n", queue_arr[front]); front = front + 1; if (front > rear){ front = rear= -1; } } } void display(){ int i; if (front == -1){ printf(" Queue is empty\n"); } else{ printf(" Queue is :\n\n"); printf("front ->"); for(i = front; i <= rear; i++){ printf(" [%d",queue_arr[i]); printf("] "); } printf("-> rear\n"); } }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 162 Tampilan baris kode seperti di bawah ini. Gambar 7.8 Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 163 Gambar 7.9 Lanjutan Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 164 Gambar 7.10 Lanjutan Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 165 Tampilan hasil compile and run ketika menjalankan fungsi enqueue(). Gambar 7.11 Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 166 Tampilan hasil compile and run ketika menjalankan fungsi dequeue() dan juga fungsi display(). Gambar 7.12 Lanjutan Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 167 b. Program Queue Flowchart Program Queue Flowchart 7.2 Program Queue
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 168 Penjelasan: Program dimulai dengan simbol terminator –start dan end. Selanjutnya mendeklarasikan variabel data dengan tipe data integer, *link dengan struct node, NODE *front, serta *rear = NULL yang sudah diinisialisasi. Kemudian program memanggil fungsi enqueue(), dequeue(), dan display(). Selanjutnya masuk pada fungsi utama lalu mendeklarasikan sekaligus menginisialisasi variabel choice = 0 dengan tipe data integer. Program menampilakan nama dan npm, lalu masuk proses penginputan nilai ke dalam variabel choice. Selanjutnya masuk ke seleksi syarat. Jika inputan yang diterima adalah 1, maka jalankan fungsi enqueue(). Jika inputan yang diterima adalah 2, maka jalankan fungsi dequeue(). Jika inputan yang diterima adalah 3 maka jalankan fungsi display(). Jika inputan yang diterima adalah 4, maka program selesai. Jika inputan yang diterima selain dari syarat di atas, maka tampilkan “PILIHAN TIDAK TERSEDIA, euy” lalu program akan kembali mengulangi proses tadi secara terus menerus dari proses inputan nilai choice, kecuali jika nilai yang diinputkan adalah 4 karena program akan selesai. Penulisan kodenya seperti di bawah ini. #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node{ int data; struct node *link; } NODE;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 169 NODE *front, *rear = NULL; void enqueue(); void dequeue(); void display(); int main(){ int choice = 0; while(1){ printf("\n\n Nama : Annisa Sabur\t|"); printf("\n NPM : 07352211091\t|"); printf("\n------------------------\n"); printf(" 1.Push\n"); printf(" 2.Pop\n"); printf(" 3.Display\n"); printf(" 4.Quit\n\n"); printf(" Masukkan Pilihan (1-4): "); scanf("%d",&choice); switch(choice){ case 1 : enqueue(); break; case 2: dequeue(); break;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 170 case 3: display(); break; case 4: printf(" === PROGRAM QUEUE SELESAI === "); exit(0); default: printf("\n PILIHAN TIDAK TERSEDIA, euy\n"); } } getch(); } void enqueue(){ NODE *temp; int info = 0; printf(" Enter data to be enqueued (0-9999) : "); scanf("%d",&info); temp = (NODE *) malloc(sizeof(NODE)); if (temp == NULL){ printf("\n Memory Allocation Failed"); } else{ temp->data = info;
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 171 temp->link = NULL; if (front == NULL){ front = rear = temp; } else{ rear->link = temp; rear = temp; } printf(" Node has been inserted at End Successfully !!"); } } void dequeue(){ NODE *temp; int info; if (front == NULL){ printf("Underflow, euy!!!"); } else{ temp = front; info = front->data; if (front == rear){ rear = NULL; }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 172 front = front->link; temp->link = NULL; printf(" Deleted Node(From Front)with the Data: %d\n", info); free(temp); } } void display(){ NODE *temp; if (front == NULL){ printf("\n Empty Queue, euy\n"); } else{ temp = front; printf("\n Front->"); while (temp) { printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n"); } }
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 173 Tampilan baris kode seperti di bawah ini. Gambar 7.13 Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 174 Gambar 7.14 Lanjutan Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 175 Gambar 7.15 Lanjutan Tampilan Baris Kode
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 176 Gambar 7.16 Lanjutan Tampilan Baris Kode Tampilan hasil compile and run. Gambar 7.17 Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 177 Gambar 7.18 Lanjutan Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 178 Gambar 7.19 Lanjutan Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 179 Gambar 7.20 Lanjutan Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 180 Gambar 7.21 Lanjutan Tampilan Hasil Running Gambar 7.22 Lanjutan Tampilan Hasil Running
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 181 7.5. KESIMPULAN DAN SARAN 1. Kesimpulan Queue (antrian) adalah salah satu list linear dari struktur data yang beroperasi dengan cara FIFO (Frist in, Frist out), yaitu elemen pertama yang masuk merupakan elemen yang keluar pertama kali. Data-data di dalam antrian dapat bertipe integer, real, record, dalam bentuk sederhana atau terstruktur. 2. Saran Diharapkan agar dapat memahami dengan betul materi queue ini, serta dapat mempraktikkan sendiri dan juga menyelesaikan studi kasus lainnya. Unsur ketelitian dan kemampuan dalam mengenali error maupun bug juga perlu dikembangkan.
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 182
PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LABORATORIUM REKAYASA PERANGKAT LUNAK | 183 DAFTAR PUSTAKA Marzuki, A. 2021. CARA PENULISAN DAFTAR PUSTAKA YANG DIKUTIP DARI YOUTUBE. Diperoleh dari https://www.youtube.com/watch?v=2PoigsTdKUM Techopedia. 2023. Apa Itu Laboratorium Lonceng? [Definisi dari Techopedia]. https://id.theastrologypage.com/bell-labs#:~:text=Definisi%20- %20Apa%20yang%20dimaksud%20dengan%20Bell%20Labs%3F,industri%20telek omunikasi%20dan%20sekitarnya.%20Techopedia%20menjelaskan%20Bell%20Lab s Wikipedia. 2019. C++. https://id.wikipedia.org/wiki/C%2B%2B PetaniKode.Tutorial Pemrograman C++ untuk Pemula. https://www.petanikode.com/tutorial/c++ JagatKoding. 2020. Scripting C++. https://www.youtube.com/playlist?list=PL3uuG4lYbnOyBfw6cgmCWQSZDntAoExpJ