139 int pushed_item; if(top == (MAX - 1)) printf("Stack Overflow\n"); else { printf("\nEnter the item to be pushed in stack : "); 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--)
140 printf("%d\n", stack_arr[i] ); }} Compile sampai benar Gambar 6.22 Struktur pemograman Gambar 6.23 Struktur pemograman
141 Gambar 6.24 Stuktur Pemograman Gambar 6.25 Hasil running
142 Buatlah program baru dengan cara file-new-source atau gunakan CTRL+N kemudian ketik source code programnnya seperti dibawah :
143 Flowchart 6.3 Studi Kasus 3 #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(); 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)
144 { case 1 : push(); break; case 2: pop(); break; case 3: display(); 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));
145 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"); } } void pop() { NODE *tmp; if(top == NULL) printf("Stack is empty!!\n"); else { tmp = top; printf("Popped data : %d\n",tmp->data); top = top->link; free(tmp); } } void display() { NODE *temp;
146 if(top == NULL) { printf("Empty Stack !!!\n"); } else { temp = top; printf("____[Stack]____\n"); while(temp != NULL) { printf("\n__\n"); printf("|%4d|",temp->data); temp = temp->link; } } } Compile sampai benar
147 Gambar 6.26 Struktur pemograman Gambar 6.27 Sturktur Progam
148 Gambar 6.28 Stuktur Program Gambar 6.29 Stuktur Program
149 Tampilan running Gambar 6.30 Hasil running Gambar 6.31 Hasil running
150 Gambar 6.32 Hasil running
151 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 FirstOut (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 6.7 Lembaran Asistensi
153 BAB VII QUEUE 7.1 PENDAHULUAN Queue adalah sekumpulan data yang mana penambahan dan penghapusan elemennya dilakukan dari sisi yang berbeda-beda. Dengan demikian, queue bekerja dengan prinsip FIFO (First In First Out), yaitu elemen yang pertama masuk akan keluar pertama juga. Queue bisa disebut juga antrian pada struktur data. Pada queue terdapat satu pintu masuk di satu ujung yang merupakan sisi belakang (rear) sebagai jalur penambahan elemen dan satu pintu keluar di ujung lainnnya yang merupakan sisi depan (front) sebagai jalur penghapusan atau pengeluaran elemen. Ada terdapat dua operasi penting dalam queue yaitu, Add dan Delete. Add berfungsi untuk menambahkan sebuah elemen ke dalam antrian dan Delete berfungsi untuk menghapus atau mengeluarkan elemen dari antrian. Dalam ilmu komputer, queue banyak digunakan terutama dalam sistem operasi yang memerlukan manajemen sumber daya dan penjadwalan. Pada queue juga terdapat suatu operasi bernama Add_priority yang bekerja tidak lagi menerapkan konsep antrian yang murni melainkan sesuai prioritas tertentu pada elemen, sehingga elemen yang baru ditambah tidak selalu berada di akhir. Queue dapat diimplementasikan menggunakan struktur data linked list atau array. Dalam kehidupan sehari-hari, contoh queue diimplementasikan seperti: mengantri tiket bioskop, antrian di SPBU, antrian pendaftaran mahasiswa, dan lain-lain. Dalam istilah pemrogramman, menambahkan elemen dalam struktur data queue disebut enqueue, sedangkan penghapusan elemen dari queue disebut dequeue.
154 7.2 TUJUAN PRAKTIKUM a. Memahami konsep queue b. Mempraktikkan cara penggunaan queue dalam C++ c. Membuat program yang dapat dieksekusi d. Menyimpan, meng-compile, dan menjalankan program yang dibuat. 7.3 LANGKAH – LANGKAH KEGIATAN PRAKTIKUM a. Buka aplikasi Dev C++ melalui start menu : Gambar 7.1 Tampilan Aplikasi Dev C++ b. Tampilan awal Dev C++ tampak seperti pada gambar dibawah : Gambar 7.2 Tampilan Awal Dev C++
155 c. Buatlah program baru dengan cara klik file – new – source file atau tekan tombol Ctrl+N pada keyboard, tampak seperti pada gambar dibawah ini : Gambar 7.3 Membuat Program Baru d. Ketik source code program dibawah ini : Gambar 7.4 Struktur Kode C++
156 Gambar 7.5 Struktur Kode C++ (lanjutan) e. Setelah menulis source code nya, simpan projek dengan cara klik file – save atau tekan tombol Ctrl+S pada keyboard, kemudian beri nama sesuai keinginan kalian, tampak seperti pada gambar dibawah : Gambar 7.6 Proses Penyimpanan
157 Gambar 7.7 Proses Pemberian Nama f. Setelah file berhasil disimpan, klik compile dan run pada item atau tekan tombol F11 pada keyboard, tampak seperti pada gambar dibawah : Gambar 7.8 Item Compile Dan Run
158 g. Setelah program berhasil compile dan run, maka akan muncul jendela yang menampilkan hasil running, tampak seperti pada gambar dibawah : Gambar 7.9 Tampilan Hasil Running (enqueue) Gambar 7.10 Tampilan Hasil Running (dequeue) Gambar 7.11 Tampilan Hasil Running (exit)
159 h. Anda telah berhasil mengaplikasikan queue menggunakan C++ 7.4 LATIHAN KEGIATAN PRAKTIKUM a. Latihan 1 Buatlah program baru dengan cara klik file – new – source file atau tekan Ctrl+N pada keyboard, kemudian ketik source code program dibawah ini : #include <iostream> #include <conio.h> #include <stdlib.h> #define MAX 5 using namespace std; int nomer[MAX]; int head=-1; int tail=-1; bool IsEmpty(){ if(tail == -1){ return true; }else{ return false; } } bool IsFull(){ if(tail == MAX-1){ return true; }else{ return false; } } void AntrianMasuk(int no){ if (IsEmpty()){
160 head=tail=0; }else { tail++; } nomer[tail]=no; } void AntrianKeluar(){ if(IsEmpty()){ cout<<"Antrian sudah kosong ! "; getch(); }else { for(int a=head;a<tail;a++){ nomer[a]=nomer[a+1]; } tail--; if(tail == -1){ head = -1; } } } void Clear(){ head=tail=-1; } void View(){ if(IsEmpty()){ cout<<"Antrian kosong ! "; }else { system("cls"); for(int a=head;a<=tail;a++){ cout << "================================="
161 << "\n >> No. Antri : [" << nomer[a] << "]" << "\n==============================="<< endl; } } } int main(){ system("cls"); int choose, p=1, urut; do{ system("cls"); cout << "\n\n===== PROGRAM ANTRIAN C++ =====" << "\n===============================" << "\n|1. Tambah Antrian |" << "\n|2. Panggil Antrian |" << "\n|3. Lihat daftar antrian |" << "\n|4. Format |" << "\n|5. Exit |" << "\n==============================="; cout << "\nChoose ! "; cin >> choose; cout << "\n\n"; if(choose == 1){ if(IsFull()) { cout<<"Antrian sudah penuh, mohon tunggu beberapa saat lagi "; } else{ urut=p; AntrianMasuk(urut); cout << "---------------------------------" << endl; cout << "| NO. ANTRIAN |" << endl; cout << "| " << p << " ||" << endl; cout << "---------------------------------" << endl;
162 cout << "| Silahkan Mengantri |" << endl; cout << "| Menunggu " << tail << " Antrian ||" << endl; cout << "---------------------------------" << endl; p++; } } else if(choose == 2){ cout << "=================================" << endl; cout << "No. Antri : [" << nomer[head] << "]"; cout << "\n=================================" << endl; AntrianKeluar(); cout << "Silahkan Dipanggil !" << endl; } else if(choose == 3){ View(); } else if(choose == 4){ Clear(); cout<<"Antrian dikosongkan ! "; } else if(choose == 5){ } else{ cout << "Masukan anda salah ! \n"<< endl; } getch(); }while(choose!=5); } Compile dan run, jika error perbaiki hingga benar.
163 Gambar 7.12 Struktur Kode C++ Latihan 1 Gambar 7.13 Struktur Kode C++ Latihan 1(lanjutan)
164 Gambar 7.14 Struktur Kode C++ Latihan 1(lanjutan) Gambar 7.15 Struktur Kode C++ Latihan 1(lanjutan) Gambar 7.16 Tampilan Hasil Running (tambah antrian)
165 Gambar 7.17 Tampilan Hasil Running (panggil antrian) Gambar 7.18 Tampilan Hasil Running (daftar antrian) Gambar 7.19 Tampilan Hasil Running (format)
166 7.5 STUDY KASUS a. Buatlah program queue dengan menggunakan array. Berikut flowchart kasus 1 : Flowchart 7.1 Studi Kasus 1
167 Penjelasan : Flowchart tersebut menggunakan simbol terminal sebagai awalan dan akhiran, pendeklarasian menggunakan simbol preparation, pada tahap menampilkan pilihan enqueue, dequeue, display dan exit menggunakan simbol process, kemudian pada opsi pilihan antara Ya dan Tidak menggunakan simbol decision, dan pada pengeluaran maupun memasukkan data menggunakan simbol input/output, selesai. Berikut source code study kasus 1 : #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() { int choice; while(1){ printf("| Nama : Febriyanty Efendi |\n"); printf("| NPM : 07352211072 |\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");
168 } else { printf("\n PLEASE INSERT/DELETE DATA\n"); } printf("\n 1. Enqueue\n"); printf(" 2. Dequeue\n"); printf(" 3. Display\n"); printf(" 4. Exit\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(); system("cls"); } getch(); } void enqueue(){ int added_item; if (rear == MAX - 1){ printf(" Queue Overflow\n"); } else{
169 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; } } } 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"); }
170 } Compile dan run, jika error perbaiki hingga benar. Gambar 7.20 Source Code Studi Kasus 1
171 Gambar 7.21 Source Code Studi Kasus 1(lanjutan) Gambar 7.22 Source Code Studi Kasus 1(lanjutan) Gambar 7.23 Tampilan Hasil Running (enqueue)
172 Gambar 7.24 Tampilan Hasil Running (dequeue) Gambar 7.25 Tampilan Hasil Running (Display) Gambar 7.26 Tampilan Hasil Running (Exit)
173 b. Buatlah program queue. Berikut flowchart kasus 2 : Flowchart 7.2 Study Kasus 2
174 Penjelasan : Flowchart tersebut menggunakan simbol terminal sebagai awalan dan akhiran, pendeklarasian menggunakan simbol preparation, pada tahap menampilkan pilihan enqueue, dequeue, display dan exit menggunakan simbol process, kemudian pada opsi pilihan antara Ya dan Tidak menggunakan simbol decision, dan pada pengeluaran maupun memasukkan data menggunakan simbol input/output, selesai. Berikut source code study kasus 1 : #include <stdlib.h> #include <stdio.h> #include <conio.h> typedef struct node { int data; struct node *link; } NODE; NODE *front, *rear = NULL; void enqueue(); void dequeue(); void display(); int main(){ int choice = 0; while(1) { printf("| Nama : Febriyanty Efendi |\n");
175 printf("| NPM : 07352211072 |\n"); printf("| Judul: Queue |\n"); printf(" ----------------------------- \n"); printf("\n 1.Enqueue\n"); printf(" 2.Dequeue\n"); printf(" 3.Display\n"); printf(" 4.Exit\n\n"); printf(" Enter your choice : "); scanf("%d",&choice); switch(choice){ case 1 : enqueue(); break; case 2: dequeue(); break; case 3: display(); break; case 4: printf("\n === PROGRAM QUEUE SELESAI ===\n"); exit(0); default:
176 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"); } else{ temp ->data = info; temp ->link = NULL; if (front == NULL){ front = rear = temp; } else{ rear ->link = temp; rear = temp;
177 } printf(" Node has been inserted at End Successfully !!"); } } void dequeue(){ NODE *temp; int info; if (front == NULL) { 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;
178 if (front == NULL){ printf("\n Empty Queue\n"); } else { temp = front; printf("\n Front->"); while (temp) { printf("[%d]->", temp->data); temp = temp->link; } printf("Rear\n"); } } Compile dan run, jika error perbaiki hingga benar.
179 Gambar 7.27 Source Code Studi Kasus 2 Gambar 7.28 Source Code Studi Kasus 2 (lanjutan)
180 Gambar 7.29 Source Code Studi Kasus 2 (lanjutan) Gambar 7.30 Tampilan Hasil Running (enqueue) Gambar 7.31 Tampilan Hasil Running (dequeue)
181 Gambar 7.32 Tampilan Hasil Running (display) Gambar 7.33 Tampilan Hasil Running (exit)
182 7.6 KESIMPULAN DAN SARAN a. Kesimpulan Queue merupakan struktur data yang beroperasi dengan mengeanut prinsip FIFO (First In First Out), yaitu elemen yang pertama dimasukkan akan menjadi elemen yang pertama dikeluarkan. Data-data yang terdapat dalam program queue terstruktur dan sederhana. b. Saran Membutuhkan pemahaman dalam mempraktikkan program queue dan juga membutuhkan ketelitian dalam penulisan kode program. Dalam menjalankan queue, jika terdapat kesalahan pada penulisan program maupun pendeklarasian maka program tidak dapat berjalan dengan baik.
183 7.7 Lembaran Asistensi
184 BIODATA Nama Lengkap : Febriyanty Efendi Nama Panggilan : Eby TTL : Bacan, 17 Januari 2005 Jenis Kelamin : Perempuan Agama : Islam Alamat : Toboko Perguruan Tinggi : Universitas Khairun Ternate Program Studi : Teknik Informatika Kelas : 1 IF 2 Semester : 1 (Satu) Riwayat Pendidikan : - SD Negeri 4 Tobelo - SMP Negeri 1 Halmahera Utara - SMA Negeri 6 Halmahera Utara Hobi : Main Game dan Bermain Basket Golongan Darah : B Instagram : @febriyanty_05 Email : [email protected]
185 DOKUMENTASI
186