The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.
Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by Nirkartika, 2023-01-23 03:34:28

LAPORAN PRAKTIKUM ALGORITMA

LAPORAN PRAKTIKUM ALGORITMA

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 136 BAB VII QUEUE 7.1 Pendahuluan 7.1.1 Queue Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasipenyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisibelakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisiyang lainnya. Queue merupakan kumpulan data dengan penambahan data hanyamelalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan(head). Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO (First InFirst Out), yaitu data yang pertama masuk akan keluar terlebih dahulu dan data yang terakhir masuk akan keluar terakhir. Hal yang perlu diingat : 1. Queue disebut juga antrian dimana data masuk di satu sisi dan keluar di sisi yang lain. 2. Queue bersifat FIFO (First In First Out). Elemen yang pertama kali masuk ke dalam queue disebut elemen depan (front/head of queue), sedangkan elemen yang terakhir kali masuk ke queue disebut elemen belakang(rear/tail of queue). Perbedaan antara stack dan queue terdapat pada aturanpenambahan dan penghapusan elemen. Pada stack, operasi penambahan danpenghapusan elemen dilakukan di satu ujung. Elemen yang terakhir kali dimasukkanakan berada paling dekat dengan ujung atau dianggap paling atas sehingga padaoperasi penghapusan, elemen teratas tersebut akan dihapus paling awal, sifat demikiandikenal dengan LIFO. Pada queue, operasi tersebut dilakukan di tempat yang berbeda.Penambahan elemen selalu dilakukan melalui salah satu ujung, menempati posisi dibelakang elemen‐elemen yang sudah masuk sebelumnya atau menjadi elemen paling belakang.


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 137 Sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan. Sifat yang demikiandikenal dengan FIFO. 7.2 Tujuan Praktikum a. Memahami konsep Queue b. Mempraktikan cara penggunaan Queue dalam C++ 7.3 Latihan Kegiatan Praktikum 7.3.1 Buatlah Program Queue Dalam Array 1. Buatlah program baru dengan cara File – menu – source atau gunakan CTRL + N 2. Selanjutnya ketik source programnya seperti dibawah ini: /*Program of queue using array*/ #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int rear = -1; int front = -1; int queue_arr[MAX]; void enqueue(); void dequeue(); void display(); main(){


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 138 int choice; while(1){ printf("| Nama : Nirkartika Kamal |\n"); printf("| NPM : 07352211017 |\n"); printf("| Judul: Queue |\n"); printf(" ----------------------------- \n"); if (rear == MAX - 1 & front == 0){ printf("\n QUEUE IS FULL\n"); } else if (front == -1){ printf("\n QUEUE IS EMPTY\n"); } else { printf("\n PLEASE INSERT/DELETE DATA\n"); } printf("\n 1. Insert\n"); printf(" 2. Delete\n"); printf(" 3. Display\n"); printf(" 4. Quit\n"); printf(" Enter your choice : "); scanf("%d",&choice); switch(choice){


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 139 case 1 : enqueue(); break; case 2 : dequeue(); break; case 3: display(); break; case 4: exit(1); default: printf(" PILIHAN TIDAK TERSEDIA\n"); } getch(); system("cls"); } getch(); } void enqueue(){ int added_item; if (rear == MAX - 1){


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 140 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{ printf(" Element deleted from queue is : %d\n", queue_arr[front]); front = front + 1; if (front > rear){ front = rear= -1; }


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 141 } } 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"); } }


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 142 5. Compile program dengan menekan F9 7.2 Lanjutan Compile 7.1 Compile


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 143 7.4 Lanjutan Compile 7.3 Lanjutan Compile


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 144 6. Running programnya dengan menekan F10 Gambar 7.6 Running menambahkan data antrian sampai max Gambar 7.7 Running data antrian Gambar 7.5 Running menambahkan data antrian


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 145 7.4 Studi Kasus 7.4.1 Latihan Hasil Kerja Praktikum 1 1. Tools yang digunakan Dev C++ 2. Buatlah program Queue Gambar 7.8 Running setelah satu data dikeluarkan


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 146 3. Flowchart Penjelasan: Program dimulai dengan mendeklarasikan variabel data dengan tipedata integer. Dan mendeklarasikan *link dengan struct node. Dan mendeklarasikan NODE *front, *rear = NULL. Lalu program memanggil fungsi enqueue(), dequeue(), dan display(). Kemudian mendeklarasikan variabel choice = 1 dengan tipedata integer. Kemudian masuk proses Gambar 7.9 flowchart


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 147 penginputan nilai ke variabel choice. Kemudian 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” lalu program akan melakukan perulangan secara terus menerus ke proses inputan nilai choice 4. Langkah-langkah praktikum a. Bukalah software Dev C++ b. Ketik source kode programnya #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node{ int data; struct node *link; } NODE; NODE *front, *rear = NULL; Gambar 7.10 jendela kerja Dev C++


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 148 void enqueue(); void dequeue(); void display(); int main(){ int choice = 0; while(1) { printf("| Nama : Nirkartika Kamal |\n"); printf("| NPM : 07352211017 |\n"); printf("| Judul: Queue |\n"); printf(" ----------------------------- \n"); printf("\n 1.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 : enqueue(); break; case 2: dequeue();


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 149 break; case 3: display(); break; case 4: printf(" === PROGRAM QUEUE SELESAI ==="); exit(0); default: printf("\n PILIHAN TIDAK TERSEDIA\n"); } getch(); system("cls"); } 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){


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 150 printf("\n Memory Allocation Failed"); } else{ temp ->data = info; 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) {


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 151 printf(" Underflow!!!"); } else { temp = front; info = front ->data; if (front == rear) { rear = NULL; } 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\n"); }


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 152 else { temp = front; printf("\n Front->"); while (temp) { printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n"); } }


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 153 c. Compile program dengan menekan F9 Gambar 7.11 Compile Gambar 7.12 Lanjutan Compile


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 154 Gambar 7.13 Lanjutan Compile


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 155 d. Jalankan programnya dengan menekan F10 Gambar 7.14 Lanjutan Compile 7.15 Hasil Running menambahkan data antrian


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 156 7.16 Hasil Running menambahkan data antrian sampai 3 7.17 Hasil Running menampilkan data antrian 7.18 Hasil Running mengeluarkan data antrian


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 157 e. Simpan file dengan nama praktikum 7.5 Kesimpulan dan Saran 7.5.1 Kesimpulan Queue (Antrian) adalah suatu bentuk khusus dari List Linier dengan operasipenyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisibelakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisiyang lainnya. Queue merupakan kumpulan data dengan penambahan data hanyamelalui satu sisi, yaitu belakang (tail) dan penghapusan data hanya melalui sisi depan(head). Berbeda dengan stack yang bersifat LIFO maka queue bersifat FIFO (First InFirst Out), yaitu data yang pertama masuk akan keluar terlebih dahulu dan data yang terakhir masuk akan keluar terakhir. 7.5.2 Saran Di harapkan agar dapat memahami dengan betul mengenai materi queue ini. Serta dapat mempraktikan sendiri dan juga menyelesaikan studi kasus lainnya. 7.19 Hasil Running setelah satu data antrian dikeluarkan


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 158


PRAKTIKUM ALGORITMA DAN STRUKTUR DATA LAB REKAYASA PERANGKAT LUNAK | TEKNIK INFORMATIKA UNKHAIR 159 DAFTAR PUSTAKA Uce, I dan Yunianita, R. 2020. “Algoritma Dan Pemrograman Dalam Bahasa C++”. https://press.umsida.ac.id/index.php/umsidapress/article/view/978-623-6833-67- 4/759 (Diakses pada 29 November 2022). Aditya. 2021. “Struktur Dasar C++”.https://www.academia.edu/18830434/Struktur_dasar_c_ (Diakses pada 29 November 2022). Andy, N. 2020. “Mengenal 6 Tipe Struktur Data Dalam Pemrograman” https://qwords.com/blog/apa-itu-struktur-data/ (Diakses pada 4 Desember 2022). Tedy, S. 2020. “Struktur Dasar C++”. http://gdpengetahuan.blogspot.com/2017/04/strukturdasar-c.html?m=1 (Diakses pada 4 Desember 2020). Mukti, W. 2019. “Pemrograman Dasar Variabel, Konstanta dan Tipe Data”. https://www.academia.edu/44211786/Pemrograman_Dasar_Variabel_Konstanta_ dan_Tipe_Data (Diakse pada 6 Desember 2022). Masirwin, A. 2016. “Struktur Dasar Algoritma”. https://masirwin.com/struktur-dasaralgoritma/ (Diakse pada 12 Desember 2022). Uchta. 2022. “Pemrograman C++ Bab 12 Array”. https://www.academia.edu/35362129/Pemograman_C_Bab_12_Array_pdf (Diakses pada 20 Desember 2022). Fajar. 2019. “Pointer”. https://www.belajarcpp.com/tutorial/cpp/pointer/ (Diakses pada 20 Desember 2022). Bundet. 2020. “Pengertian Pointer Dalam C++”. https://bundet.com/d/995-pengertianpointer-dalam-c (Diakses pada 20 Desember 2022). Dwi, Y. 2021. “Program Stack Dengan Menggunakan Bahasa Pemrograman C++”. https://www.academia.edu/30019746/C_Stack_pdf (Diakses pada 22 Desember 2022). Ripaldi, K. 2020. “Struktur Data Queue”. https://www.academia.edu/43671713/Struktur_Data_Queue_C_ (Diakses pada 23 Desember 2022).


Click to View FlipBook Version