NOTASI
INFIX, PREFIX, POSTFIX
Notasi infix
§ Contoh
: X + Y
§ Operator
ditulis di antara operand
§ Sebagai
contoh A * ( B + C ) / D yang biasa berarti “tambahkan B dan C terlebih dahulu,
dan kalikan dengan A . setelah itu bagi dengan D”
§ Notasi
infix membutuhkan informasi ekstra :
o Rule
mengenai operator Precedence
o Assosiativem
dan tanda kurung ( )
Notasi Postfix
§ Dikenal
juga dengan “ Reverse Polish Notation” contoh = XY +
§ Operator
ditulis setelah operand . contoh lain A
B C + * D /
§ Operator
selalu terurut dari kiri ke kanan , dan
kurung tidak dapat dipergunakan untuk mengubah urutan operasi
§ Contoh
= pada notasi di atas , tanda +
dikerjakan terlebih dahulu sebelum *
§ Jika
bertemu operator, maka operasi aritmatik akan segera mungkin dikerjakan contoh
jika ditemukan + , B dan C akan segera
dijumlahkan
§ Setelah
itu A akan dikalikan dengan hasil B + c dan hasil keseluruhan akan dibagi
dengan D
§ Contoh
: A x ( B + C) / D (operasi infix ke postfix)
CONTOH :
Notasi Prefix
§ Dikenal
juga dengan “ Polish Notation” contoh = XY +
§ Operator
dituliskan sebelum operand . pada contoh : sebelumnya, jika dituliskan pada
prefix adalah : / * A + B C D
§ Sebagaimana
postfix , operator di evaluasi dari kiri ke kanan
§ Operator
akan mengambil dua nilai operand terdekat pada kanan operand
§ Meski
pada prefix operator di evaluasi dari kiri ke kanan , namun prefix menggunakan
nilai pada bagian kanan , jika nilai operand melibatkan komputasi , maka akan
mengubah urutan operator
§ Contoh lain :
CONTOH :
Notasikan ke dalam infix , postfix dan prefix
1. Infix
Sx = (pow (x,2) + a b + y ) / ( pow (
(a + c + d)
( x * x + a * b + y ) / (a + c + d) (a + c +
d)
2. Postfix
Output
Stack
ALGORITMA
KALKULASI POSTFIX (BINARY)
Selama
masih ada token pada input
Jika
token adalah operand
- push ke dalam stack
Selain
itu (token adalah operator)
- Pop 2 kali nilai pada stack.
- Evaluasi nilai yang dipop dengan operator,
- Push hasil operasi.
Jika
hanya satu nilai pada stack,maka
- Nilai adalah hasil kalkulator
Jika
ada lebih dari satu nilai,maka
- (error) terlalu banyak nilai operand pada inputan
CONTOH : 5 1 2 + 4 * 3 - +
CONTOH : 5 1 2 + 4 * 3 - +
KONVERSI INFIX TO POSTFIX
Algoritma Shunting Yard
CONTOH : 3 + 4 * 2 / ( 1 – 5 ) ^ 2 ^ 3
CONTOH : 3 + 4 * 2 / ( 1 – 5 ) ^ 2 ^ 3
CONTOH : 3 + 4 * 2 / ( 1 – 5 ) ^ 2 ^ 3
No comments:
Post a Comment