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 :
Rule mengenai
operator precedence
Assosiativem dan tanda kurung ()
Notasi
Postfix
Dikenal juga dengan "Reverse Polish notation“ contoh : X
Y +
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 norasi di atas, tanda + dikerjakan terlebih dahulu sebelum *.
Jika bertemu operator, maka operasi aritmetik akan sesegera mungkin dikerjakan.contoh jika ditemukan +, maka B dan C akan segera dijumlahkan.
Setelah itu A akan dikalikan dengan hasil B+C, dan hasil keseluruhan akan dibagi dengan D.
Notasi
Prefix
Dikenal juga dengan "Polish notation“ contoh : +
X Y
Operator dituliskan sebelum operand. Pada contoh sebelumnya, jika dituliskan dalam prefix adalah : / * A + B C D
Sebagaimana post fix, operator dievaluasi dari kiri ke kanan.
Operator akan mengambil dua nilai operand terdekat pada kanan operator
Meski pada prefix operator dievaluasi dari kiri ke kanan, namun
prefix menggunakan nilai pada bagian kanan. Jika nilai
operand melibatkan komputasi, maka akan mengubah urutan
operator.
Contoh pada / * A + B C D
Operasi pembagian seharusnya dikerjakan terlebih dahulu, namun karena mendapati * pada bagian kanan, maka akan diubah perkalian terlebih dahulu baru pembagian. Dalam hal ini adalah A akan dikali dengan operand di bagian kanan.
Lagi-lagi, ditemukan +, sehingga operasi + akan dilakukan terlebih dahulu. Dalam hal ini adalah B + C. kemudaian A akan dikalikan dengan hasil B + C, baru hasil semuanya dibagi dengan D.
Contoh
Lain
Infix
|
Postfix
|
Prefix
|
Notes
|
A * B + C / D
|
A B * C D / +
|
+ * A B / C D
|
Kalikan A dan B,
bagi C dengan D, tambahkan hasilnya |
A * (B + C) / D
|
A B C + * D /
|
/ * A + B C D
|
Tambahkan B dan C,
kalikan dengan A, bagi dengan D |
A * (B + C / D)
|
A B C D / + *
|
* A + B / C D
|
Bagi C dengan D,
tambahkan B, kalikan dengan A |
Algoritma Kalkulasi
Postfix (binary)
Selama masih ada token pada input
Ambil
token berikutnya dari
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 kalkulasi
Jika ada lebih dari satu nilai, maka
-(Error) terlalu banyak nilai
operand pada inputan.
0 komentar:
Posting Komentar