137 | P R A K T I K U M A L G O R I T M A 2 0 2 2 { if (T.atas == max-1) return 1; else return 0; } void input (int data) { if (kosong () == 1) { T.atas++; T.data [T.atas] = data; cout << "Data " << T.data[T.atas] <<" masuk ke stack\n"; } else if (penuh () == 0) { T.atas++; T.data [T.atas] = data; cout << "Data " << T.data [T.atas] << " masuk ke stack\n"; } } void hapus() {
138 | P R A K T I K U M A L G O R I T M A 2 0 2 2 if (kosong() == 0) { cout << "Data teratas sudah terambil\n"; T.atas--; } else cout << "Data kosong\n"; } void tampil() { if (kosong() == 0) { for (int i = T.atas; i >= 0; i--) { cout << "\nTumpukan ke "<< i + 1 << "=" << T.data[i]; } } else cout << "Tumpukan kosong\n"; } void bersih() { T.atas =- 1;
139 | P R A K T I K U M A L G O R I T M A 2 0 2 2 cout << "Tumpukan kosong!\n"; } main(void) { int pil, data; awal(); do { cout << "\n1. Input\n2. Hapus\n3. Tampil\n4. Bersihkan\n5. Keluar\nMasukan pilihan : "; cin >> pil; switch (pil) { case 1: cout << "Masukan data = "; cin >> data; input (data); break; case 2: hapus(); break; case 3: tampil(); break;
140 | P R A K T I K U M A L G O R I T M A 2 0 2 2 case 4: bersih(); break; case 5: cout << "Terimakasih, tekan enter untuk keluar"<< endl; case 6:; cout << "Nama : Dea Safitri Salamate\n"; } getch();} while (pil != 5);}
141 | P R A K T I K U M A L G O R I T M A 2 0 2 2 1. Compile dan perbaiki program hingga benar Gambar 6.12 Struktur code program
142 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 6.13 Struktur Code program
143 | P R A K T I K U M A L G O R I T M A 2 0 2 2 2. Setelah itu akan ditampilkan hasil running Gambar 6.14 Hasil running program
144 | P R A K T I K U M A L G O R I T M A 2 0 2 2 b. Buatlah program baru dengan cara File-New-source atau gunakan Ctrl+N kemudian ketik source code programnya seperti dibawah ini: Flowchart 6.2 studi kasus 2
145 | P R A K T I K U M A L G O R I T M A 2 0 2 2 #include <stdio.h> #include <stdlib.h> #include <conio.h> #define MAX 5 int top = -1; int stack_arr[MAX]; void push(); void pop(); void display(); int main() { int choice; 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 :
146 | P R A K T I K U M A L G O R I T M A 2 0 2 2 push(); break; case 2: pop(); break; case 3: display(); break; case 4: exit(1); default: printf("\nPILIHAN TIDAK TERSEDIA\n"); } } getch(); } void push() { int pushed_item; if(top == (MAX - 1)) printf("Stack Overflow\n"); else { printf("\nEnter the item to be pushed in stack : ");
147 | P R A K T I K U M A L G O R I T M A 2 0 2 2 scanf("%d",&pushed_item); top = top + 1; stack_arr[top] = pushed_item; } } void pop() { if(top == -1) printf("Stack Underflow\n"); else { printf("Popped element is : %d\n",stack_arr[top]); top = top - 1; } } void display() { int i; if(top == -1) printf("Stack is empty\n"); else { printf("\nStack elements :\n"); for(i = top; i >=0; i--) printf("%d\n", stack_arr[i] ); }}
148 | P R A K T I K U M A L G O R I T M A 2 0 2 2 1. Compile dan perbaiki program hingga benar Gambar 6.15 Struktur code program
149 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 6.16 Struktur Code
150 | P R A K T I K U M A L G O R I T M A 2 0 2 2 2. Akan ditampilkan hasil running program Gambar 6.17 Hasil running
151 | P R A K T I K U M A L G O R I T M A 2 0 2 2 6.6 KESIMPULAN DAN SARAN a. Kesimpulan Stack adalah suatu koleksi atau kumpulan item data yang terorganisasi dalam bentuk urutan linier, yang operasi pemasukkan dan penghapusan datanya dilakukan pada salah satu sisinya. Keunikkan pada stack adalah dimana node yang ditambahkan dalam list dan diambil dari list hanya pada kepala, dengan prinsip pengolahannya adalah Last-in First-Out (LIFO). b. Saran Laporan ini masih terdapat banyak kesalahan karena terbatasnya pengetahuan dan kurangnya referensi materi pada laporannya ini. Diharapkan kepada pembaca dapat memberikan saran sebagai motivasi pembuatan laporan selanjutnya.
152 | P R A K T I K U M A L G O R I T M A 2 0 2 2
153 | P R A K T I K U M A L G O R I T M A 2 0 2 2 BAB VII QUEUE 7.1 PENDAHULUAN 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 apat dilihat bahwa queue mempunyai sifat FIFO (First In, First Out) yaitu elemen yang pertama masuk akan keluar pertama juga. Representasi queue dapat di deklarasikan dengan menggunakan array atau linked list. Representasi queue dengan array ada penunjuk depan dan belakang yang digunakan untuk menunjuk elemen posisi depan dan elemen posisi belakang, sehingga dapat diketahui queue kosong atau tidak. Queue dapat ditambah selama belakang tidak sama dengan isi dan maksimum array. Operasi penyisipan elemen queue digunakan untuk mengambil atau menghapus elemen dan suatu queue. Operasi penghapusan elemen pada circular yang dihapus adalah selalu yang berada didepan sehingga penunjuk depan akan naik satu (depan+1) jika depan lebih kecil dari maksimum elemen array, tetapi depan diatur menjadi satu (depan = 1) jika depan sama dengan maksimum elemen array. 7.2 TUJUAN PRATIKUM a. Memahami konsep Queue b. Mempraktekan cara penggunaan Queue dalam C++
154 | P R A K T I K U M A L G O R I T M A 2 0 2 2 7.3 LANGKAH-LANGKAH KEGIATAN PRATIKUM a. Bukalah aplikasi Dev C++ melalui start menu : Gambar 7.1 Tampilan aplikasi Dev C++ b. Tampilan awal akan nampak seperti gambar dibawah ini : Gambar 7.2 Tampilan awal Dev C++ c. Buatlah program dengan cara File-New-Source atau tekan tombol Ctrl+N seperti gambar dibawah ini : Gambar 7.3 Membuat file baru
155 | P R A K T I K U M A L G O R I T M A 2 0 2 2 d. Ketik source code program seprti gambar dibawah ini : Gambar 7.4 Stuktur code program Gambar 7.5 Lanjutan Struktur code program
156 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.6 Lanjutan struktur kode program
157 | P R A K T I K U M A L G O R I T M A 2 0 2 2 e. Setelah mengetik/menulis sourcenya, tekan compile dan run atau gunakan tombol shortcut fn+F11 seperti pada gambar dibawah ini: Gambar 7.7 Proses compile f. Akan muncul pemberitahuan untuk menyimpan program. Berikan nama sesuai dengan keinginan masing-masing. Misalnya “Queue Latihan 002”. Kemudian simpan dengan format cpp. Gambar 7.8 Proses penyimpanan g. Setelah klik save, akan muncul jendela yang menampilkan hasil program queue yang telah dibuat. Gambar 7.9 Tampilan hasil running
158 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.10 Lanjutan hasil running Gambar 7.11 Lanjutan hasil running Gambar 7.12 Lanjutan hasil running
159 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.13 Lanjutan hasil running Gambar 7.14 Lanjutan hasil running. h. Anda telah berhasil membuat sebuah program queue dengan bahasa pemograman C++ menggunakan Dev C++
160 | P R A K T I K U M A L G O R I T M A 2 0 2 2 7.4 STUDI KASUS a. Buatlah program queue dengan menggunakan array Flowchart program queue dengan menggunakan array Flowchart 7.1 program queue fungsi main()
161 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Penjelasan flowchart : Program dimulai dengan mendeklarasikan variabel MAX bernilai 5 dan variabel front dan rear = -1, dan queue_arr [MAX] dengan tipedata integer. Kemudian kita memanggil fungsi enqueue(), dequeue(), dan display(). Kemudian program mendeklarasikan variabel choice dengan tipedata integer. Kemudian program menampilakan nama, npm, dan judul. Kemudian masuk kondisi jika rear == -1 & front == 0 maka tampilkan “queue is full”. Jika front == -1 maka tampilkan “queue is empty”. Jika selain dari syarat di atas maka tampilkan “please insert/delete data”. Kemudian masuk proses 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 kecuali nilai yang diinputkan adalah 4 karena program akan selesai.
162 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Flowchart 7.2 program queue fungsi enqueue Penjelasan flowchart : Flowchart ini merupakan bagian fungsi enqueue() yang berfungsi sebagai proses penginputan atau penambahan data antrian. Dimulai dari mendeklarasikan variabel added_item bertipe data integer. Kemudian masuk ke percabangan dengan syarat jika rear == MAX -1 maka tampilkan “queue overflow” kemudian kembali ke fungsi main(). jika tidak maka lakukan proses penginputan data antrian. Jika front == -1 maka lakukan proses pemberian nilai front = 0. Kemudian menginputan nilia ke variabel added_item. Dan lakukan proses rear= rear + 1 dan queue_arr[rear] = added_item. Lalu kembali ke fungsi main().
163 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Flowchart 7.3 program queue fungsi dequeue Penjelasan flowchart : Flowchart ini merupakan bagian fungsi dequeue() yang berfungsi sebagai proses mengeluarkan data antrian. Dimulai dengan seleksi syarat jika front == -1 maka tampilkan “queue underflow” lalu kembali ke fungsi main(). Jika tidak maka jalankan proses front = front + 1. Kemudian cek syarat jika nilai front > rear maka jalankan proses front = rear = - 1 kemudian kembali ke fungsi main(). Jika tidak maka program langsung kembali ke fungsi main().
164 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Flowchart 7.4 program queue fungsi display() Penjelasan: Flowchart ini merupakan bagian fungsi display() yang berfungsi sebagai proses untuk menampilkan data-data antrian. Dimulai dengan mendeklarasikan variabel i = front. Kemudian mengecek seleksi syarat jika front == -1 maka tampilkan “Queue is Empty” lalu kembali ke fungsi main(). Jika tidak maka lakukan perulangan untuk menampilkan data dari variabel queue_arr [i]. dengan syarat jika i <= rear maka i++ dan kemudian menampilkan data dari variabel queue_arr [i]. jika syarat perulangannya tidak terpenuhi lagi maka kembali ke fungsi main(). Buatlah program baru dengan cara file – menu – source atau gunakan CTRL + N kemudian ketik source programnya seperti dibawah ini : #include <stdio.h>
165 | P R A K T I K U M A L G O R I T M A 2 0 2 2 #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(){ int choice; while(1){ printf(" Nama : Dea Safitri Salamate \n"); printf(" NPM : 07352211078 \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");
166 | P R A K T I K U M A L G O R I T M A 2 0 2 2 } 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){ case 1 : enqueue(); break; case 2 : dequeue(); break; case 3: display(); break; case 4: exit(1); default: printf(" PILIHAN TIDAK TERSEDIA\n"); } getch();
167 | P R A K T I K U M A L G O R I T M A 2 0 2 2 system("cls"); } 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 ; } } void dequeue(){ if (front == -1){ printf(" Queue Underflow\n"); }
168 | P R A K T I K U M A L G O R I T M A 2 0 2 2 else{ 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"); } }
169 | P R A K T I K U M A L G O R I T M A 2 0 2 2 1. Compile dan perbaiki program hingga benar Gambar 7.15 Struktur kode program
170 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.16 Lanjutan struktur kode program (1) Gambar 7.17 Lanjutan struktur kode program (2)
171 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.18 Lanjutan struktur kode program (3) 2. Setelah diperbaiki dan di-compile, maka akan ditampilkan hasil running dari program Gambar 7.19 Hasil running program, saat memasukkan data
172 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.20 Lanjutan hasil running Gambar 7.21 Hasil running
173 | P R A K T I K U M A L G O R I T M A 2 0 2 2 b. Buatlah sebuah program queue Flowchart program queue Flowchart 7.5 studi kasus 2
174 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Penjelasan flowchart : 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 program menampilakan nama, npm, dan judul. Kemudian masuk proses 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 kecuali nilai yang diinputkan adalah 4 karena program akan selesai. Buatlah program baru dengan cara File-New-Source atau gunakan Ctrl+N kemudian ketik source kode programnya seperti dibawah ini : #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node{ int data; struct node *link; } NODE;
175 | P R A K T I K U M A L G O R I T M A 2 0 2 2 NODE *front, *rear = NULL; void enqueue(); void dequeue(); void display(); int main(){ int choice = 0; while(1) { printf("nama : Dea Safitri Salamate \n"); printf("npm : 07352211078 \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(); break;
176 | P R A K T I K U M A L G O R I T M A 2 0 2 2 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){ printf("\n Memory Allocation Failed"); }
177 | P R A K T I K U M A L G O R I T M A 2 0 2 2 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) { printf(" Underflow!!!"); } else {
178 | P R A K T I K U M A L G O R I T M A 2 0 2 2 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"); } else { temp = front; printf("\n Front->"); while (temp) {
179 | P R A K T I K U M A L G O R I T M A 2 0 2 2 printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n"); }} 1. Compile dan perbaiki program hingga benar Gambar 7.22 Struktur code program
180 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.23 Lanjutan struktur kode program (1) Gambar 7.24 Lanjutan struktur kode program (2)
181 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.25 Lanjutan struktur kode program (3) 2. Setelah selesai di perbaiki dan di-compile, maka akan ditampilkan hasil running program seperti gambar dibawah ini : Gambar 7.26 Hasil running untuk menu push
182 | P R A K T I K U M A L G O R I T M A 2 0 2 2 Gambar 7.27 Lanjutan hasil running untuk menu pop Gambar 7.28 Hasil running untuk menu display Gambar 7.29 Hasil running untuk menu quit
183 | P R A K T I K U M A L G O R I T M A 2 0 2 2 7.5 KESIMPULAN DAN SARAN a. 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 pertama keluar. Data data di dalam antrian dapat bertipe integral, real, record, dalam bentuk sederhana atau terstruktur. b. Saran Di harapkan agar dapat memahami dengan betul mengenai materi queue ini. Serta dapat mempraktikan sendiri dan juga menyelesaikan studi kasus lainnya.
184 | P R A K T I K U M A L G O R I T M A 2 0 2 2
185 | P R A K T I K U M A L G O R I T M A 2 0 2 2
185 | P R A K T I K U M A L G O R I T M A 2 0 2 2 BAB VIII PENUTUP 8.1 KESIMPULAN Dari hasil praktikum pembuatan program dengan menggunakan aplikasi Borland C++ dapat ditarik kesimpulan umum cara membuat program yang menggunakan aplikasi Borland C++ ternyata memiliki banyak manfaat. contohnya program yang sangat penting digunakan dalam keseharian bagi seorang pelajar adalah operator aritmatika dan juga bagi seorang yang bekerja mencakupdata-data karyawan maupun banyak kegunaan dari program C++ diantaranya menghitung indeks massa tubuh (IMT). 8.2 SARAN Adapun saran yang saya sampaikan yaitu : 1. Laporan ini agar dapat dijadikan sebagai bahan bacaan yang mampu menambah ilmu bagi para pembacanya. 2. Laporan ini juga dapat dijadikan sebagai bahan panduan dalam pembuatan laporan nantinya.