LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 306 306 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA antrian.tail--; return e; } void Clear() { antrian.head=antrian.tail=-1; printf("CLEAR"); } void Tampil() { if(IsEmpty()==0) { for(int i=antrian.head;i<=antrian.tail;i++) { printf(" %d",antrian.data[i]); } }else printf("data kosong!\n");
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 307 307 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA } main() { int pil; int data; Create(); do{ cout<<endl<<endl; cout<<" =============================="<<endl; cout<<" =\t PROGRAM QUEUE ="<<endl; cout<<" =============================="<<endl; cout<<" = 1. ENQUEUE = "<<endl; cout<<" = 2. DEQUEUE = "<<endl; cout<<" = 3. TAMPIL = "<<endl; cout<<" = 4. CLEAR = "<<endl; cout<<" = 5. EXIT ="<<endl; cout<<" =============================="<<endl;
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 308 308 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA cout<<" Masukan Pilihan : ";cin>>pil; switch(pil) { case 1: cout<<"Masukan Data : ";cin>>data; Enqueue(data); break; case 2: Dequeue(); break; case 3: Tampil(); break; case 4:
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 309 309 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Clear(); break; case 5: break; } getch(); } while(pil!=5); return 0; }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 310 310 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Tampilan diDevC++ akan seperti dibawah ini: Gambar 7. 1 Tampilan source code diatas diDevC++ 1 (bagian 1)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 311 311 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 2 Tampilan source code diatas diDevC++ 1 (bagian 2) Gambar 7. 3 Tampilan source code diatas diDevC++ 1 (bagian 3)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 312 312 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 4 Tampilan source code diatas diDevC++ 1 (bagian 4) Gambar 7. 5 Tampilan source code diatas diDevC++ 1 (bagian 5)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 313 313 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 7.4 Latihan Queue 7.4.1 Kasus Queue dalam Array 1 Gambar 7. 6 flowchart contoh soal queue 1
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 314 314 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan flowchart di atas: Dimulai dengan terminator dan header lalu dimasukkan variabel yang diinginkan. Memasuki decision while untuk melanjutkan case yang diinginkan atau tidak sama sekali. Diberikan case berupa case 1 enqueue, memasuki decision if rear==MAX-1, Jika Yes print Queue Overflow, Jika No memasuki proses rear=rear+1 dan kembali ke decision while. Case 2 dequeue, memasuki decision if front==-1 II front > rear, Jika Yes Print Queue Underflow, Jika No memasuki proses front=front+1 dan kembali ke decision while. Case 3 display, memasuki decision if front==-1, Jika Yes print Queue is empty, Jika No memasuki ulangan for (i=front;i<=rear;i++), lalu print queue_arr[i], kemudian kembali ke decision while. Case 4 exit, proses exit lalu end dengan simbol terminator. Jika tidak dipilih maka pilihan tidak tersedia dan ditutup dengan simbol terminator sebagai penyelesaiannya. Program dari flowchart di atas adalah sebagai berikut: #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()
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 315 315 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA { int choice; while(1) { printf("1.Insert\n"); printf("2.Delete\n"); printf("3.Display\n"); printf("4.Quit\n"); printf("Enter your choice : "); scanf("%d",&choice); switch(choice) { case 1 : enqueue(); break; case 2 : dequeue(); break; case 3: display(); break; case 4:
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 316 316 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA exit(1); default: printf("PILIHAN TIDAK TERSEDIA\n"); } } getch(); } 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 ; }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 317 317 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA } void dequeue() { if (front ==-1 || front > rear) { printf("Queue Underflow\n"); return ; } else { printf("Element deleted from queue is : %d\n",queue_arr[front]); front = front + 1; } } void display() { int i; if (front ==-1) printf("Queue is empty\n"); else { printf("Queue is :\n"); for(i = front; i <= rear; i++)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 318 318 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA printf("%d ",queue_arr[i]); printf("\n"); } } Hasil eksekusi program di atas adalah sebagai berikut: Gambar 7. 7 program queue 1 (1)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 319 319 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 8 program queue 1 (2) Gambar 7. 9 program queue 1 (3)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 320 320 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 10 hasil running program queue 1 (1)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 321 321 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 7.4.2 Kasus Queue 2 Gambar 7. 11 flowchart contoh soal queue 2
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 322 322 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Penjelasan flowchart di atas: Dimulai dengan terminator dan header lalu dimasukkan variabel yang diinginkan. Proses berlanjut ke dalam sistem switch untuk masuk kedalam kasus atau pilihan yang diberikan yaitu case 1 enqueue, memasuki decision if temp==NULL, Jika Yes print Memory Allocation Failed, Jika No maka masuk decision if front==NULL, Jika Yes proses front=rear=temp lalu print Node has been inserted at End Succesfully. Jika No proses rear=temp lalu print Node has been inserted at End Succesfully. Kemudian end dengan simbol terminator. Case 2 dequeue, memasuki decision if front==NULL, Jika Yes print underflow!!!, Jika No proses rear=NULL lalu print Deleted Node(From Front) with the Data: %d\n, kemudian end dengan simbol terminator. Case 3 display, memasuki decision if front==NULL, Jika Yes print Empty Queue, Jika No proses while lalu print Rear, kemudian end dengan simbol terminator. Case 4 exit, lalu end dengan simbol terminator. default jika pesan tidak ditemukan. Print PILIHAN TIDAK TERSEDIA, Lalu tutup dengan simbol terminator untuk penyelesaiannya. Program dari flowchart di atas adalah sebagai berikut: #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node { int data; struct node *link; }
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 323 323 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA NODE; NODE *front, *rear = NULL; void enqueue(); void dequeue(); void display(); int main() { int choice = 0; 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 : enqueue(); break; case 2: dequeue();
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 324 324 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA break; case 3: display(); break; case 4: exit(0); default: printf("\nPILIHAN TIDAK TERSEDIA\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("\nMemory Allocation Failed"); else {
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 325 325 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 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) { printf(" Underflow!!!"); } else
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 326 326 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA { 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("Empty Queue\n"); else { temp = front; printf("Front->"); while (temp)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 327 327 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA { printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n"); } } Hasil eksekusi program di atas adalah sebagai berikut: Gambar 7. 12 program queue 2 (1)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 328 328 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 13program queue 2 (2)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 329 329 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 14 program queue 2 (3)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 330 330 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Gambar 7. 15 hasil running program queue 2 (1) Gambar 7. 16 hasil running program queue 2 (2)
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 331 331 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA 7.5 Kesimpulan dan Saran 7.5.1 Kesimpulan Queue atau antrian merupakan kumpulan elemen yang pengisian dan penghapusan elemen yang dilakukan dari sisi atau gerbang yang berbeda beda. Pengisian dilakukan dari gerbang belakang dan penghapusan gerbang depan. Hal ini menunjukan bahwa untuk queue mempunyai dua gerbang yaitu gerbang depan dan belakang. Dengan demikian dapat dlihat bahwa queue mempunyai sifat FIFO ( Frist in, Frist out ), yaitu elemen yang pertama masuk akan keluar pertama juga. 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. Dan memahami strukturt data yang digunakan dalam antrian (queue).
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 332 332 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 333 333 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA DAFTAR PUSTAKA YOKYAKARTA, U. A. (2018). Algoritma Struktur Data. Algoritma Struktur Data , 2026. Ahmad muhardian. (2019, may 26). Belajar Pemrograman C #15: Apa itu Pointer? Retrieved 12 20, 2022, from Belajar Pemrograman C#15: apa itu pointer?-Petani Kode: https://www.petanikode.com/c-pointer/ Fajar . (2019, maret 4). Pointer. Retrieved 12 20, 2022, from Ponter-Belajar C++: https://www.belajarcpp.com/tutorial/cpp/pointer/ Muhammad Sholeh, Rochmat Haryanto, A. P. (2013). Panduan Belajar Pemograman Terstruktur. Universitas Amikom Yogyakarta. (2018). Algoritma Struktur Data. Diakses pada 28 November 2022, dari http://materi.amikom.ac.id/2020/10/25102020_Modul%20Teori%20Algoritma%20Struktur% 20Data.pdf Delima.Konsep Dasar Algoritma Pemrograman dan Bahasa Pemrograman. Diakses pada 28 November 2022, dari Fakultas Ilmu Tarbiyah dan Keguruan UINSU. https://osf.io/cp5zr/download/?format=pdf Nur Hidayati, M.Kom. (2016). Modul Struktur Data. Jakarta: Bina SaranaInformatika. Tersedia dari. https://repository.bsi.ac.id/index.php/unduh/item/283413/Modul_strukturData.pdf. diakses pada 29 November 2022
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 334 334 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA Budiman, Edy. (2020). Algoritma dan Pemograman. Samarinda:Fakultas Teknologi Informasi dan Komputer (FTIK) Universitas Mulawarnman. Tersedia dari https://repository.unmul.ac.id/bitstream/handle/123456789/4927/Buku%20Algoritma %20dan%20Pemrograman.pdf
LAB REKAYASA PERANGKAT LUNAK | TEKN8IK INFORMATIKA2 UNKHAIR 335 335 LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA