Rabu, 13 Maret 2013

Notasi Infix

Contoh : X + Y
Operator ditulis di antara operand.
Sebagai contoh A * ( B + C ) / D yang biasa berartitambahkan 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