Pertemuan ke:
03 Fakultas
Sains dan Teknologi
Pemanfaatan Stack
Akhir Presentasi
Manfaat Stack
• Salah satu pemanfaatan stack oleh Compiler adalah
untuk memeriksa kelengkapan kurung buka dan kurung
tutup suatu arithmetic statement.
• Contoh :
– Program yang menerim INPUT sebuah Arithmetic Statement
((A+B)*(C-D)). Kemudian periksa kurung buka dan kurung
tutup apakah saling berpasangan. Cetak BENAR bila tepat
saling berpasangan, atau cetak SALAH bila tidak tepat saling
berpasangan.
Kreativitas Membangkitkan 2
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Bila di input : Maka Cetak:
A+B*C–D/E BENAR
A + B * (C – D) / E BENAR
(A + B) * (C – D) / E BENAR
(A + B * (C – D) / E) BENAR
(A + B * (C – D) / E SALAH
(A + B) * C – D) / E SALAH
)A+B * (C – D / E SALAH
Kreativitas Membangkitkan 4
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Stack untuk Konversi Bentuk Arithmetic
• Dalam Operasi arithmetic terdapat istilah Operand dan
Operator.
• Bila terdapat sebuah arithmetic statement : A * (B + C)
– Maka A,B, dan C disebut Operand (yang dioperasikan)
– *, + disebut Operator (yang mengoperasikan)
– Kurung buka dan kurung tutup juga disebut operator, tapi
bukan operator yang mengoperasikan, tugasnya
menggelompokkan suatu hasil opersasi menjadi satu
kesatuan nilai. Sekaligus ikut mengatur urutan operasi.
Kreativitas Membangkitkan 5
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Notasi Arithmetic
• Terdapat 3 notasi operasi arithmetic yaitu Prefix, Infix dan Postfix.
INFIX POSTFIX PREFIX
A+B AB+ +AB
A+B+C AB+C+ ++ABC
A+B*C AB C*+ +A*BC
(A + B) * C AB+C* *+ABC
A +B + C * D AB+CD*+ ++AB*CD
A + (B + C) * D ABC+D*+ +A*+BCD
Kreativitas Membangkitkan 8
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Algortima
• Siapkan Stack misal dengan char S[26]
• Telusuri isi array A karakter per karakter sampai ditemui karakter NULL (‘\0’)
• Bila isinya Operand, maka langsung dicetak
• Bila isinya kurung buka ‘(‘, maka simpan (PUSH) kurung buka ke Stack.
Kreativitas Membangkitkan 9
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
• Bila isinya Operator maka Periksa :
– Bila Stack masih kosong (Top = -1), atau Stack yang paling atas berisi kurung buka
(S[Top]==‘(’) maka simpan (PUSH) Operator tadi ke Stack.
– Bila Stack ada isinya, (Top>-1), dan isi stack yang paling atas (S[Top] bukan kurung buka
‘(‘, maka : isi stack pasti operator, sehingga lalukan pemeriksaan. Bandingkan nilai
Operator yang ada di stack dengan nilai operator yang baru dibaca.
– Bila nilai Operator di Stack >= dengan nilai operator baru, maka keluarkan terus menerus
dan cetak operator isi stack sampai ditemui isi stack = kurung buka ‘(‘ atau sampai ditemui
operator yang nilainya lebih rendah dari nilai operator baru, atau ditemui isi stack habis.
Kemudian simpan (PUSH) operator baru ke stack.
– Bila nilai operator baru lebih besar dari nilai operator yang ada distack, maka simpan
(PUSH) operator baru ke stack.
– Bila isinya kurung tutup ‘)’, maka keluarkan (POP) dan cetak isi stack satu per satu sampai
ditemuai isi stak = kurung buka ‘(‘. Setelah itu keluarkan isi stack yang berupa kurung buka
tersebut dari dalam stack.
– Demikian terus menerus sampai ditemui isi array A = ‘\0’ dan keluarkan serta cetak isi stack
satu persatu sampai isi stack habis.
Kreativitas Membangkitkan 12
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Terima Kasih
Aditiya Hermawan, M.Kom