Jumpa lagi ini teman – teman... pada kesempatan kali ini saya akan mencoba untuk menjelaskan beberapa pengimplentasian atau pembuatan class python. Yaitu queue. Sudah taukah apa itu stack dan queue ? jika belum tau, jangan khawatir karena, saya akan mencoba untuk menjelaskannya kepada kalian semua... sebenarnya, saya mendapatkan materi ini saat saya semester 2 lalu.. jadi tidak ada salahnya jika saya pilih untuk saya jadikan materi postingan...
Nah untuk kelancaran pembelajaran ini, alangkah lebih baiknya jika kalian menginstall python versi 3.4 terlebih dahulu... untuk tutorialnya, kalian bisa baca tutorialnya DISINI ya teman – teman... Atau bisa baca di Cara install python versi 3.4 dengan mudah. Nah setelah kalian menginstall python versi 3.4 nya, kalian juga bisa belajar dasar – dasar python DISINI. penjelasan mengenai list, tuple, string, dictionary dan lain sebagainya.
Nah setelah itu, kalian bisa mengembangkannya dengan menggunakan queue.. yuk langsung saja kita mulai..
Penjelasan dasar Queue
Queue merupakan koleksi item yang cara penambahan itemnya terjadi pada sebuah ujung yang biasa disebut sebagai “ekor” atau (rear) dan untuk penghapusannya, terjadi pada ujung yang satunya. Atau biasa kita beri nama “kepala” atau (head). Jadi konsep dari queue ini menggunakan konsep layak nya FIFO yang merupakan kepanjangan dari First in First out. Dalam kehidupan sehari – hari, konsep ini biasa di analogikan sebagai sebuah antrian. Dimana setiap orang yang datang terlebih dahulu, maka ia lah yang akan di layani terlebih dahulu. Nah konsep ini sangat berbeda dengan konsep yang ada pada stack. Namun, sama seperti stack, kelas ini juga memiliki beberapa operasi.
Nah operasi tersebut adalah sebagai berikut :
- queue() membuat suatu antrian baru yang kosong. Tidak memerlukan parameter dan mengembalikan suatu antrian kosong.
- enqueue(item) menambahkan suatu item baru ke ujung saru antrian. Perlu item dan tidak mengembalikan sesuatu.
- dequeue() menghapus item depan dari antrian. Tidak memerlukan parameter dan mengembalikan itemnya. Antrian termodifikasi.
- isEmpty() menguji untuk melihat apakah antrian dalam keadaan kosong. Tidak memerlukan parameter dan mengembalian nilai boolean.
- size() mengembalikan jumlah item yang ada di dalam antrian. Tidak memerlukan parameter dan mengembalikan suatu integer.
Simulasi dan class Queue python.
saya akan mencoba untuk memberikan simulasinya agar kalian dapat memaham konsep dari class queue ini... simulasi tersebut akan saya buat dalam bentuk tabel.. dimana “q” saya anggap sebagai sebuah queue. sehingga, akan lebih terstruktur.. langsung saja ya.. kita simak dibawah ini....
Nama operasi
|
Isi Antrian
|
Nilai kembalian
|
q.isEmpty()
|
[]
|
True
|
q.enqueue
|
[4]
| |
q.enqueue(“dog”)
|
[“dog”, 4]
| |
q.enqueue
|
[True, “dog”, 4]
| |
q.size()
|
[True, “dog”, 4]
|
3
|
q.isEmpty()
|
[True, “dog”, 4]
|
False
|
q.enqueue(8.4)
|
[8.4, True, “dog” 4]
| |
q.deque()
|
[8.4, True, “dog” ]
|
4
|
q.deque()
|
[8.4, True]
|
“dog”
|
q.size()
|
[8.4, True]
|
2
|
Nah itu dia simulasi dari queue ini.. kalain bisa membandingkan antara stack dan queue... yang hampir mirip.. tapi sebenarnnya sangat berbeda dalam hal konsep.. lalu bagai mana program dari class queue ini ? nah berikut saya akan menyertakan program nya.. ini dia...
class Queue: def __init__(self): self.items=[] def isEmpty(self): return self.items==[] def enqueue(self,item): self.items.insert(0,item) def dequeue(self): return self.items.pop() def size(self): return len(self.items) def getList(self): return self.items
contoh penggunaan class queue.
nah kemudian saya akan memberikan contoh program yang menggunakan class queue ini... program ini saya ini dapat digunakan untuk mengacak nama pemilihan nama.. pertama, kita masukan semua nama untuk dimasukkan kedalam program untuk diacak pengambilannya.. setelah memasukkan semua namanya, kita masukkan angak 0 untuk menghentikan program agar berhenti meminta nama untuk dimasukkan... setelah itu, program akan meminta No. urutan nama yang akan kalian pilih... tapi kalian bisa memasukkan angka berapa saja.. contohnya ketika memasukkan 5 nama ke dalam program.. tapi tidak hanya angka 1 sampai 5 saja yang bisa kita masukkan.. tapi angka mulai dari 0 sampai seterusnya... maka dengan segera, akan tampil nama sesuai pilihan kalian..
oke langsung saja ya teman – teman .. ini dia programnya..
class Queue: def __init__(self): self.items=[] def isEmpty(self): return self.items==[] def enqueue(self,item): self.items.insert(0,item) def dequeue(self): return self.items.pop() def size(self): return len(self.items) def getList(self): return self.items def hotPotato(namelist, num): simqueue = Queue() for name in namelist: simqueue.enqueue(name) while simqueue.size() > 1: for i in range(num): simqueue.enqueue(simqueue.dequeue()) simqueue.dequeue() return simqueue.dequeue() masukan = input("masukan nama : ") penampung = Queue() while masukan != '0' : penampung.enqueue(masukan) masukan = input("masukan nama : ") pilih = int(input("masukan angka : ")) print(hotPotato(penampung.getList(), pilih))
nah itu dia code nya teman teman... perlu aku jelaskan tidak program di atas ? hehe.. yawes saya jelaskan secara singkat saja ya teman teman.. ini dia...
class Queue:
def __init__(self):
self.items=[]
def isEmpty(self):
return self.items==[]
def enqueue(self,item):
self.items.insert(0,item)
def dequeue(self):
return self.items.pop()
def size(self):
return len(self.items)
def getList(self):
return self.items
code tersebut sudah saya jelaskan diatas.. karena, code tersebut merupakan sebuah class dari queue.. jadi tidak usah saya perjelas lagi ya teman – teman.. kita langsung skip dan lanjut saja ke code ini selanjutnya ya..
def hotPotato(namelist, num): code ini digunakan untuk membuat class baru yang bernama
‘hotPotato’ yang memerlukan dua parameter untuk dimasukkan. Yang memiliki nama “namelist” dan “num” dan parameter “namelist” merupakan sebuah tipe data list. Dan untuk “num” merupakan sebuah angka atau integer.
simqueue = Queue() code ini digunakan untuk membuat class “queue” dengan nama “simqueue”.
for name in namelist: merupakan sebuah perulangan yang mengambil semua elemen dari “namelist” yang merupakan sebuah tipe data list.
simqueue.enqueue(name) memasukkan setiap elemen di dalam “namelist” yang di ambil oleh variabel “nama”
while simqueue.size() > 1: ini digunakan untuk perulangan sebanyak ukuran dari queue.
for i in range(num): digunakan untuk perulangan yang menghitung dari angka 0 sampai angka
yang sudah kita masukkan.
simqueue.enqueue(simqueue.dequeue()) nah ini untuk memasukkan dan mengeluarkan isi dari queue yang bernama simqueue.. dan merupakan fungsi untuk mengacaknya..
simqueue.dequeue() ini digunakan untuk mengeluarkan elemen yang ada di dalam queue
return simqueue.dequeue() untuk mengeluarkan elemen yang ada di queue sekaligus untuk mengembalikan atau menampilkan hasil dari class ini.
masukan = input("masukan nama : ") nah code ini digunakan agar ketika program dijalankan, maka program akan meminta kita untuk memasukkan nama.
penampung = Queue() nah code ini digunakan untuk membuat class stack baru dengan nama variabel “penampung”
while masukan != '0' : nah ini digunakan untuk membuat perulangan agar program meminta pengguna agar memasukkan nama terus menerus. Sampai selesai. Dan perulangan ini akan berhenti ketika kita memasukkan angka 0.
penampung.enqueue(masukan) nah untuk code yang ini, saya gunakan untuk memasukkan nama yang diinputkan oleh user ke dalam class queue yang saya sudah saya deklarasikan sebelumnya dengan nama variabel “penampung”.
masukan = input("masukan nama : ") nah ini sama seperti yang diatas tadi. Yaitu agar program meminta agar kita memasukkan nama lagi.
pilih = int(input("masukan angka : ")) dan ini digunakan agar program meminta angka yang akan kita pilih namannya.
print(hotPotato(penampung.getList(), pilih)) dan ini untuk memanggil class hotpotato dengan memasukkan parameter yang sudah diinputkan sebelumnya. Yaitu semua elemen nama yang sudah diinputkan dan dimasukkan ke dalam class queue yang sudah saya deklarasikan sebelumnya dengan nama “penampung”. Dan saya menggunakan fungsi “penampung.getList()” agar bisa digunakan. Fungsi “getList” ini saya modif sendiri agar kita bisa mendapatkan semua data yang ada di class queue. Dan parameter yang kedua adalah angka yang sudah di input kan tadi dan sudah saya tampung dalam variabel “pilih”.
Nah sekian dulu ya teman – teman pada kesampatan kali ini.. seperti yang sudah saya katakan diatas, semoga postingan ini dapat bermanfaat... dan jangan lupa berkomentar di bawah postingan ini ya... biar ada responnya.. hehe jika kalian berkenan, mohon di share ke teman sosial media kalian ya.. siapa tau ada yang membutuhkan mengenai informasi yang satu ini... terimakasih sudah membaca dan berkunjung ke blog..
wassalamualaikum wr. wb.
ConversionConversion EmoticonEmoticon