Jumpa lagi ini
teman – teman... pada kesempatan kali ini saya akan mencoba untuk menjelaskan
beberapa pengimplentasian atau pembuatan class python. Yaitu stack. 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 stack.. yuk langsung
saja kita mulai..
Pembuatan dan penjelasan Stack.
Sebelum kita
membuat class dari stack, alangkah lebih baiknya jika kita mengetahui apa itu
stack. Stack merupakan sebuah kumpulan data atau item dengan cara penambahan
item baru serta penghapusan, selalu terjadi pada tempat atau ujung yang sama.
Stack ini biasa di analogikan seperti tumpukan pada piring. Dimana kita
mengambil maupun meletakkan piring selalu pada sisi atasnya. Walaupun
sebenarnya kita bisa mengambil dan meletakkan piring di sisi bawah. Namun hal
tersebut susah ya dilaksakan? Maka yang umum dan mudah adalah pada sisi
atasnya. Dan ujung tempat data di tambah maupun di hapus, biasa disebut sebagai
TOP. Dan sisi yang satunya, adalah BASE. Dan class Stack ini memiliki konsep
LIFO (last in first out) atau dalam bahasa indonesianya adalah data yang
terakhir masuk, maka ialah yang pertama akan dikeluarkan.
Nah, class stack ini memiliki beberapa
operasi yang akan kita buat nantinya.. untuk mengetahui apa saja oprasinya,
silahkan cek di bawah ini ya...
- stack() membuat suatu stack baru yang kosong. Tidak memerlukan parameter dan mengembalikan suatu stack kosong.
- push(item) menambahkan suatu item baru ke atas (top) dari stack. Perlu item dan tidak mengembalikan apapun.
- pop() menghapus item teratas dari stack. Tidak perlu parameter dan mengembalikan item. Stack berubah.
- peek() mengembalikan top item dari stack tetapi tidak menghapusnya. Tidak memerlukan parameter dan stack tidak berubah.
- isEmpty() memeriksa apakah stack dalam keadaan kosong. Tidak memerlukan parameter dan mengembalikan nilai boolean.
- size() mengembalikan jumlah item di dalam stack. Tidak memerlukan parameter dan mengembalikan suatu integer.
Nah itu dia
operasi – operasi yang ada di dalam Stack.. nah selanjutnya saya akan
memberikan penggambaran secara umum dalam tabel bagaimana kerja dari Stack ini.. seperti yang sudah saya katakan
diatas, Operasi push akan menambahkan
item baru ke ujung list, operasi pop
akan menghapus pada ujung
yang sama tersebut.
Anggap saja kita
telah membuat Stack dengan nama S.. maka kerjanya akan seperti berikut ini...
Operasi
stack
|
Isi
stack
|
Nilai
kembalian
|
S.isEmpty()
|
[]
|
True
|
S.push(4)
|
[4]
|
|
S.push(‘dog’)
|
[4,’dog’]
|
|
S.pekk()
|
[4,’dog’]
|
‘dog’
|
S.push(True)
|
[4,’dog’,True]
|
|
S.size()
|
[4,’dog’,True]
|
3
|
S.isEmpty()
|
[4,’dog’,True]
|
False
|
S.push(8.5)
|
[4,’dog’,True,8.5]
|
|
S.pop()
|
[4,’dog’,True]
|
8.5
|
S.pop()
|
[4,’dog’]
|
True
|
S.size()
|
[4,’dog’]
|
2
|
Nah setelah kita
tahu algoritma dari penggunaan stack ini, dan selanjutnya adalah kita akan
membuat class dari Stack ini... yuk langsung saja.. ini dia..
class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items)
nah itu dia Code
dari class Stack... nah setelah itu, taukah apa saja pemanfaatan dari class
stack ini? sebenarnya, penggunaan stack ini cukup banyak.. nah berikut ini saya
akan memberikan beberapa contoh penggunaan dari class stack. Yang mungkin akan
membuat pikiran kalian terbuka dan tau apa fungsi dari class stack ini...
Contoh penggunaan
Stack yang akan saya berikan adalah contoh pengecekan keseimbangan
dari tanda kurung... dimana kita tau, kurung yang digunakan dalam penulisan itu
haruslah seimbang.. dimana ada kurung buka ‘(‘ maka harus ditutup dengan kurung
tutup ‘)’. Jika keduanya tidak seimbang, maka akan terjadi kesalahan.. nah
nantinya saya akan membagikan code pemanfaatan Stack yang insyaallah seperti
itu jalannya... nah langsung saja ya.. berikut saya sertakan programnya..
class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return self.items[len(self.items)-1] def size(self): return len(self.items) def parChecker(symbolString): s = Stack() balanced = True index = 0 while index < len(symbolString) and balanced: symbol = symbolString[index] if symbol == "(": s.push(symbol) elif symbol == “)” : if s.isEmpty(): balanced = False else: s.pop() index = index + 1 if balanced and s.isEmpty(): return True else: return False print(parChecker('((()))')) print(parChecker('(()'))
nah selanjutnya
saya akan mencoba menjelaskan mengenai isi dari code diatas... yuk langsung
saja ya...
s = Stack()
balanced = True
index = 0
code di atas ini
merupakan sebuah pendeklarasian variabel.. dimana kita tahu, ‘s’ merupakan
class stack yang akan kita gunakan sebagai alat pengecekan nantinya...
while index <
len(symbolString) and balanced:
nah kemudian,
code diatas merupakan sebuah perulangan yang akan mengecek apakah teks dan
simbol (symbolstring) yang di masukkan itu kosong atau tidak serta akan
mengecek nilai dari ‘balanced’ apakah ‘true’ atau ‘false’. Jika teks dan simbol
(symbolstring) kosong, maka perulangan ini tidak akan berfungsi.. kemudian, jika isi dari ‘balanced’ ini
‘false’ maka perulangan juga tidak akan berjalan... jadi untuk menjalankannya,
teks dan masukan atau ‘simbolstring’ tidak boleh kosong, dan ‘balanced’ juga
harus bernilai True. Untuk lebih jelasnya, silahkan pelajari lebih lanjut
mengenai perulangan...
symbol = symbolString[index]
nah code di atas
digunakan untuk mengambil huruf demi huruf yang ada pada ‘simbolSting’ yang
merupakan parameter dari class pengecek tanda kurung ini... untuk mempelajari
lebih lanjut mengenai parameter, silahkan kalian cari di google.
Nah cara
mengambil huruf demi huruf yang ada di
parameter, variabel ‘simbol’ ini menggunakan indek... yang nantinya akan
berulang dari angka pertama yaitu 0 dan akan bertambah sampai banyak nya teks
yang ada di parameter class ini yaitu ‘simbolString’.
if symbol == "(":
s.push(symbol)
elif symbol == “)” :
if s.isEmpty():
balanced = False
else:
s.pop()
index = index + 1
nah untuk code
diatas, merupakan inti dari programnya. Karena, diatas merupakan sebuah
pengkondisian atau penentuan.. jika kalian belum tau apa itu pengkondisian,
silahkan kalian baca DISINI ya... nah kembali lagi, jika variabel “symbol”
berisi tanda kurung buka “(“ maka tanda
kurung tersebut akan di masukkan kedalam teks. Kemudian, apabila variabel
“symbol” berisi kurung tutup “)” maka akan di cek terlebih dahulu apakah stack
dalam keadaan kosong atau tidak. Jika berada pada keadaan kosong, maka langsung
kita kasi nilai “balanced” nya false. Karena sudah pasti, teks yang berisi
tanda kurung tersebut sudah tidak seimbang. Karena tidak ada tanda kurung buka
tapi ada kurung tutup nya. Tapi, jika stack ada isi nya, maka kita akan
keluarkan elemen stack sebanyak satu buah. Setelah itu, nilai di dalam variabel
“index” akan bertambah sebanyak 1.
if balanced and s.isEmpty():
return True
else:
return False
nah code diatas,
digunakan untuk menentukan output nantinya. Jika “balanced” bernilai “True” ,
dan stack berada dalam keadaan kosong, maka class ini akan mengembalikan nilai
“True”. Yang berarti, tanda kurung
berada pada kondisi seimbang.Tetapi, jika salah satu dari kedua penentu
“balanced” dan “s.isEmpty” bernilai “False” , maka class akan mengembalikan nilai
“False” yang artinya tanda kurung tidak seimbang.
print(parChecker('((moham(villa))apdg)'))
print(parChecker('villa(moham(apdg)'))
nah untuk code
diatas, merupakan sebuah pemanggilan class parChecke yang sudah kita buat
tadi... yang sekaligus mencetak nilai kembaliah dari class yang di panggil
tersebut...
Nah itu dia teman
– teman.. ulasan saya mengenai stack dan queue... sebenarnya ini merupakan
materi dari mata kuliah yang pernah dan sudah saya dapat kan di semester dua
dulu.. jadi materi ini saya bagikan, dengan harapan dapat memberikan manfaat
bagi yang membutuhkan referensi mengenai materi yang satu ini..
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