สถิติการเข้าชม

วันอังคารที่ 4 สิงหาคม พ.ศ. 2552

DTS 06-29/07/52

สรุป
โดยโอเปอเรเตอร์ก็คือเครื่องหมายการคำนวณต่างๆ
เช่น + - * / ในขณะที่ตัวโอเปอแรนด์ซึ่งเป็นตัวถูกดำเนินการนั้น
อาจเป็นได้ทั้งตัวแปรหรือค่าคงที่ใดๆ โดยนิพจน์ทางคณิตศาสตร์
สามารถนำเสนอให้แตกต่างกันได้ถึง 3 รูปแบบ ด้วยกัน ดังนี้
1. นิพจน์ Infix
นิพจน์คณิตศาสตร์ที่อยู่ในรูปแบบของ Infix นั้น ก็คือนิพจน์
โดยทั่วไปที่เรามักใช้กับการคำนวณสูตรตัวเลขต่างๆ โดย
โอเปอเรเตอร์จะอยู่ระหว่างตัวโอเปอแรนด์

2. นิพจน์ Postfix
นิพจน์คณิตศาสตร์ที่อยู่ในรูปแบบของ Postfix นั้น คือ
นิพจน์ในรูปแบบที่โอเปอเรเตอร์จะอยู่ข้างหลังตัวโอเปอแรนด์

3. นิพจน์ Prefix
นิพจน์คณิตศาสตร์ที่อยู่ในรูปแบบของ Prefix จะตรงกันข้าม
กับ Postfix โดยจะนำโอเปอเรเตอร์ไปไว้อยู่ข้างหน้าตัวโอเปอแรนด์

สำหรับนิพจน์ทั้งสามรูปแบบ สามารถแสดงได้ตามตัวอย่างข้างล่างดังนี้
Prefix : +AB
Infix : A+B
Postfix : AB+

อัลกอริทึมการแปลงนิพจน์ Infix มาเป็นนิพจน์ Postfix มีขั้นตอน ดังนี้
1. ถ้าข้อมูลเข้าเป็นโอเปอแรนด์ ให้เอาต์พุตไป Postfix

2. ถ้าข้อมูลเข้าเป็นโอเปอเรเตอร์
2.1 ถ้าสแตกว่าง ให้ push ลงในสแตก
2.2 ถ้าภายในสแตกมีข้อมูลอยู่ ให้ทำการเปรียบเทียบ ดังนี้
2.3 ถ้าโอเปอเรเตอร์ที่อินพุตเข้ามามีลำดับความสำคัญน้อยกว่า
หรือเท่ากับ โอเปอเรเตอร์ที่อยู่ส่วนบนของสแตก ให้ดำเนินการ pop
สแตกออกไปที่ postfix โดยทำการเปรียบเทียบกับโอเปอเรเตอร์ที่มี
อยู่ในสแตกไปเรื่อยๆ จนกระทั่งโอเปอเรเตอร์ที่อินพุตเข้ามามีลำดับ
ความสำคัญมากกว่าโอเปอเรเตอร์ในสแตก จากนั้นให้ดำเนินการ push
โอเปอเรเตอร์ที่อินพุตเข้ามาลงในสแตก
2.4. ถ้าโอเปอเรเตอร์ที่อินพุตเข้ามามีลำดับความสำคัญมากกว่า
โอเปอเรเตอร์ที่อยู่ส่วนบนของสแตกให้ดำเนินการ push โอเปอเรเตอร์
นั้นลงในสแตก

3. ถ้าข้อมูลเข้าเป็นเครื่องหมายวงเล็บเปิด ให้ดำเนินการ push
ลงในสแตก

4. ถ้าข้อมูลเข้าเป็นเครื่องหมายวงเล็บปิด ให้ดำเนินการ pop สแตก
ไปยัง postfix จนกระทั่งพบเครื่องหมายวงเล็บเปิด จากนั้นให้นำ
เครื่องหมายวงเล็บทั้งสองทิ้งไป

5. หากดำเนินการจนเสร็จสิ้นแล้วยังคงมีข้อมูลอยู่ในสแตก ให้ดำเนินการ
pop สแตกที่เหลืออยู่ทั้งหมดไปที่ postfix

ไม่มีความคิดเห็น:

แสดงความคิดเห็น