Infix, Postfix, and Prefix Expressions in Java
Halo Sobat Blodhil! Notasi Infix, Postfix, dan Prefix adalah tiga cara yang berbeda tetapi setara dalam penulisan ekspresi. Cara termudah untuk mendemonstrasikan perbedaan dengan melihat contoh operator yang menggunakan dua operan.
Notasi infiks: X + Y
Operator ditulis di antara operan mereka. Ini adalah cara biasa kami menulis ekspresi. Ekspresi seperti A * (B + C) / D biasanya diartikan seperti: "Pertama tambahkan B dan C bersama-sama, kemudian kalikan hasilnya dengan A, kemudian bagi dengan D untuk memberikan jawaban akhirnya."
Notasi postfix (juga dikenal sebagai "Reverse Polish notation"): X Y +
Operator ditulis setelah operannya. Ekspresi infix yang diberikan di atas setara dengan A B C + * D /
Urutan evaluasi operator selalu dari kiri ke kanan, dan tanda kurung tidak dapat digunakan untuk mengubah urutan ini. Karena "+" berada di sebelah kiri "*" pada contoh di atas, penambahan harus dilakukan sebelum perkalian.
Operator segera bertindak berdasarkan nilai di sebelah kiri mereka. Misalnya, "+" di atas menggunakan "B" dan "C". Kita dapat menambahkan tanda kurung (sama sekali tidak perlu) untuk membuatnya eksplisit:
((A (B C +) *) D /)
Jadi, "*" menggunakan dua nilai tepat sebelum: "A", dan hasil penjumlahan. Demikian pula, "/" menggunakan hasil perkalian dan "D".
Notasi prefiks (juga dikenal sebagai "notasi Polandia"): + X Y
Operator ditulis sebelum operannya. Ekspresi yang diberikan di atas setara dengan / * A + B C D
Untuk Postfix, operator dievaluasi dari kiri ke kanan dan tanda kurung tidak berguna. Operator bertindak berdasarkan dua nilai terdekat di sebelah kanan. Saya sekali lagi menambahkan tanda kurung (sama sekali tidak perlu) untuk memperjelas ini:
(/ (* A (+ B C)) D)
Meskipun Prefix "operator dievaluasi dari kiri ke kanan", mereka menggunakan nilai di sebelah kanannya, dan jika nilai ini sendiri melibatkan komputasi maka ini mengubah urutan operator harus dievaluasi. Dalam contoh di atas, meskipun pembagiannya adalah operator pertama di sebelah kiri, bekerja berdasarkan hasil perkalian, dan perkalian harus terjadi sebelum pembagian (dan demikian pula penambahan harus terjadi sebelum perkalian).
Karena operator Postfix menggunakan nilai di sebelah kirinya, nilai apapun yang melibatkan komputasi sudah dihitung saat kita pergi dari kiri ke kanan, dan urutan evaluasi operator tidak terganggu dengan cara yang sama seperti pada ekspresi Prefix.
Comments
Post a Comment