PENGGUNAAN
/ APLIKASI STACK
Logika stack digunakan untuk menyelesaikan
berbagai macam masalah
Antara lain digunakan pada complier, operating
system dan dalam program-program aplikasi
Berikut ini tiga buah contoh aplikasi stack
MATCHING
PARENTSHESES
Proses ini dilakukan complier untuk memeriksa
kelengkapan tanda kurung yang terdapat pada suatu ekspresi aritmetik
Sedangkan stack disini digunakan tempat
prosesnya
Algoritma yang digunakan adalah :
- Elemen-elemen suatu ekspresi aritmetik (string) di_scan dari kiri ke kanan .
- Jika ditemukan simbol “(“ atau “left parenthesis”, maka simbol tersbut di-push ke dalam stack .
- Jika ditemukan simbol “)” atau “right parenthesis” ,
maka isi stack diperiksa.
- Jika stack kosong terjadi kesalahan. Berarti : ada simbol “)”, tetapi tidak ada simbol “(“ yang seharusnya mendahului.
- Jika stack tidak kosong artinya ada pasangannya dan langsung di POP keluar stack. - Misalkan NEXT CHAR adalah suatu karakter terakhir dalam suatu string.
BERIKUT INI BENTUK FLOWCHART (LOGIKA PROSES) YANG DIGUNAKAN PADA PROSES MATCHING INI :
NOTASI POSTFIX
Bentuk aplikasi stack yang
lain adalah mengubah suatu ekspresi aritmatik (string) ke dalam notasi postfix.
Notasi postfix ini digunakan
oleh complier untuk menyatakan suatu ekspresi
aritmatik dalam bahasa tingkat tinggi (high level language)
Stack digunakan oleh complier
untuk mentransformasikan ekspresi aritmatik menjadi suatu ekspresi dalam
bentuk/ notasi postfix.
Notasi diberikan ekspresi aritmatik : A + B ;
Maka bentuknya dalam notasi postfix menjadi : AB
+
Urutan (prioritas) dari operator adalah :
- Perpangkatan (^)
- Perkalian (*) atau Pembagian (/)
- Penjumlahan (+) atau Pengurangan (-)
- Ekspresi aritmatik yang diberikan di- “Scan” dari kiri ke kanan.
- Bila simbol yang di-scan adalah “(“, maka simbol tersebut di push ke dalam stack.
- Bila simbol yang di-scan adalah “)”, maka seluruh isi stack di pop keluar mulai dari simbol “(“ yang pertama ditemukan dalam stack.
- Bila simbol adalah operator, maka dilakukan
perbandingan dulu dengan simbol (operator) yang berada pada posisi top dalam
stack.
- Jika derajatnya setara atau lebih rendah dari simbol yang berada pada posisi top, maka top stack di-pop keluar sebagai output dan simbol yang baru di-push ke dalam stack.
- Jika derajatnya lebih tinggi dari simbol yang berada pada posisi top, maka simbol (operator) yang di-scan tersebut di-push ke dalam stack. - Bila simbol yang di-scan adalah operand, maka simbol tersebut langsung sebagai output.
- Bila simbol adalah “;” maka seluruh isi stack di-pop sebagai output.
Misal
diberikan sebuah ekspresi aritmatik dengan bentuk sbb:
(( A + B ) *
C / D + E ^F ) / G;
Selanjutnya
akan dicari bentuk ekspresi diatas dalam notasi postfix.
Proses yang dilakukan dapat
digambarkan dalam tabel berikut :
No comments:
Post a Comment