P06 : Queue
Tools: Python dan Visual Studio Code
Pengumpulan Tugas
Kumpulkan File Percobaan beserta File Tugas 1 dan Tugas 2!
1. contoh_queue_1.py 2. contoh_queue_2.py 3. contoh_queue_3.py 4. tugas_queue_1.pdf 5. tugas_queue_2.py
Kumpulkan file-file diatas dalam satu file zip dengan format:
NIM_minggu6.zip
Queue mengikuti prinsip First-in-First-Out (FIFO). Operasi terjadi dari kedua ujungnya sehingga kita dapat dengan mudah menambahkan elemen ke belakang dan dapat menghapus elemen dari depan. Contoh Queue di Python dapat diimplementasikan menggunakan cara-cara berikut:
• list
• collections.deque
• queue.Queue
Percobaan 1: Queue dengan list
List adalah struktur data bawaan Python yang dapat digunakan sebagai queue. Operasi enqueue() dan dequeue(), menggunakan fungsi append() dan pop(). Namun, list cukup lambat untuk tujuan ini karena menyisipkan atau menghapus elemen di awal membutuhkan pemindahan/pergeseran semua elemen lainnya satu per satu, membutuhkan O(n) waktu.
Untuk contoh implementasinya ikuti langkah-langkah berikut:
1. Pada VSCode, buat sebuah file dengan nama contoh_queue_1.py
2. Pada IDE, masukkan kode program dan eksekusi file contoh_queue_1.py untuk melihat hasil program:
Percobaan 2: Queue dengan collections.deque
Queue dengan Python dapat diimplementasikan menggunakan class deque dari modul collections. Deque lebih disukai daripada list dalam kasus di mana kita memerlukan operasi penambahan dan hapus yang lebih cepat dari kedua ujung wadah, karena deque menyediakan kompleksitas waktu O(1) untuk operasi penambahan dan hapus dibandingkan dengan list yang menyediakan kompleksitas waktu O(n) . Operasi enqueue dan deque dilakukan menggunakan fungsi append() dan popleft().
Untuk contoh implementasinya ikuti langkah-langkah berikut:
1. Pada VSCode, buat sebuah file dengan nama contoh_queue_2.py
2. Pada IDE, masukkan kode program dan eksekusi file contoh_queue_2.py untuk melihat hasil program:
Percobaan 3: Queue dengan queue.Queue
Queue adalah modul bawaan Python yang digunakan untuk mengimplementasikan antrian.
queue.Queue(maxsize) menginisialisasi variabel ke ukuran maksimal maxsize. Maksimal nol '0' berarti antrian tak terbatas. Antrean ini mengikuti aturan FIFO.
Ada berbagai fungsi yang tersedia dalam modul ini:
• maxsize – Jumlah item yang diperbolehkan dalam antrian.
• empty() – Mengembalikan True jika antrian kosong, False jika sebaliknya.
• full() – Mengembalikan True jika ada item maxsize dalam antrean. Jika antrian diinisialisasi dengan maxsize=0 (default), maka full() tidak pernah mengembalikan True.
• get() – Menghapus dan mengembalikan item dari antrian. Jika antrian kosong, tunggu sampai item tersedia.
• get_nowait() – Mengembalikan item jika segera tersedia, jika tidak naikkan QueueEmpty.
• put(item) – Memasukkan item ke dalam antrian. Jika antrean sudah penuh, tunggu hingga slot kosong tersedia sebelum menambahkan item.
• put_nowait(item) – Masukkan item ke dalam antrian tanpa pemblokiran. Jika tidak ada slot gratis yang segera tersedia, naikkan QueueFull.
• qsize() – Mengembalikan jumlah item dalam antrian.
contoh implementasinya ikuti langkah-langkah berikut:
1. Pada VSCode, buat sebuah file dengan nama contoh_queue_3.py
2. Pada IDE, masukkan kode program dan eksekusi file contoh_queue_3.py untuk melihat hasil program:
Tugas 1:
Jelaskan perbedaan masing-masing dari ketiga percobaan di atas!
Simpan file dengan nama tugas_queue_1.pdf Tugas 2:
Dengan fungsi, buatlah program yang dapat mengelola antrian pasien di suatu klinik praktek dokter.
Ditentukan batas maksimal antrian pada satu hari adalah 30 pasien saja. Program dapat:
1. Menambah data antrian pasien 2. Panggil pasien
3. Menampilkan data antrian pasien 4. Keluar
Simpan file dengan nama tugas-queue_2.py