56
LOGO Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving Chapter Chapter 2: Infix, Prefix & Postfix Notation Infix, Prefix & Postfix Notation อ.เสกสรรค มธุลาภรังสรรค เสกสรรค มธุลาภรังสรรค สาขาวิชาวิศวกรรมคอมพิวเตอร สาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตร คณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตร

Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

Embed Size (px)

Citation preview

Page 1: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO

Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving

Chapter Chapter 22:: Infix, Prefix & Postfix NotationInfix, Prefix & Postfix Notationออ..เสกสรรค มธุลาภรังสรรคเสกสรรค มธุลาภรังสรรค

สาขาวิชาวิศวกรรมคอมพิวเตอรสาขาวิชาวิศวกรรมคอมพิวเตอร คณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตรคณะวิศวกรรมศาสตร กําแพงแสน มหาวิทยาลัยเกษตรศาสตร

Page 2: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

ContentsContents

Infix, Prefix, & PostfixInfix, Prefix, & Postfix1

Postfix Math CalculationPostfix Math Calculation2

Infix to Postfix TransformationInfix to Postfix Transformation3

Example Example I & III & II4

2

Page 3: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การใชสแตกชวยคํานวณนิพจนคณิตศาสตรการใชสแตกชวยคํานวณนิพจนคณิตศาสตร

การเขียนนิพจนคณิตศาสตรที่พบเห็นตามปกติจะอยูในรูปแบบที่มีตัวดําเนินการ(Operator) คั่นอยูระหวางตัวถูกดําเนินการ (Operand) เชน a+ba+bcc--dde*fe*fg/hg/h

Page 4: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ IInfixnfix NotationNotation

การเขียนในรูปแบบน้ีจะใหตัวดําเนินการมีตําแหนงอยูตรงกลางตรงกลางระหวางตัวถูกดําเนินการเสมอเราจึงเรียกนิพจนในรูปแบบน้ีวาเปนนิพจนแบบ IInfixnfix Notation Notation

การเขียนนิพจนคณิตศาสตรในรูปของ Infix Notation จําเปนตองใชเครื่องหมายวงเล็บวงเล็บเพ่ือกํากับลําดับขั้นการคํานวณหาคาของนิพจน

ตัวอยางเชน (A+B)*C และ A+(B*C) จะใหคาการประมวลผลแตกตางกัน หากตัดวงเล็บออกใหนิพจนเหลืออยูในรูป A+B*C คาจากการคํานวณ A+B*C ยอมเทากับ A+(B*C) เน่ืองจากเครื่องหมายคูณจะมีลําดับความสําคัญสูงกวาเครื่องหมายบวก

Page 5: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ PrefixPrefix NotationNotation

เปนนิพจนอีกรูปแบบหน่ึงที่จะมีตัวดําเนินการนําหนานําหนาตัวถูกดําเนินการ เชน +AB, -CD, *EF, /GH นิพจนในรูปแบบน้ีเรียกวา PolishPolish NotationNotation มีที่มาจากนักคณิตศาสตรชาวโปแลนด Jan Lukasiewicz อาจเรียกไดอีกช่ือหน่ึงตามตําแหนงการวางของตัวดําเนินการวา PrePrefixfix NotationNotation

ตัวอยางตอไปน้ีเปนการแปลงนิพจน Infix Notation ใหอยูในรูปของ Prefix Notation

(A+B)*C(A+B)*C

A+(B*C)A+(B*C)

(A+B)/(C(A+B)/(C--D)D)

(+AB)*C(+AB)*C

A+(*BC)A+(*BC)

(+AB)/((+AB)/(--CD)CD)

*+ABC*+ABC

+A*BC+A*BC

/+AB/+AB--CDCD

InfixInfix PrefixPrefixChange toChange to

Page 6: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ PrefixPrefix NotationNotation

คุณสมบัติที่สําคัญของ Prefix Notation คือลําดับขั้นของการคํานวณลําดับขั้นของการคํานวณจะบงบอกอยูในตัวของนิพจนเองตามตําแหนงการตามตําแหนงการวางวางของตัวดําเนินการและตัวถูกดําเนินการ

ดวยเหตุน้ีการเขียนนิพจนในรูปของ Prefix Notation จึงไมจําเปนตองใชวงเล็บไมจําเปนตองใชวงเล็บกํากับลําดับขั้นการคํานวณอีกตอไป

Page 7: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

ตัวอยางตัวอยาง PPrefixrefix NotationNotation

A+BA+B

A+BA+B--CC

(A+B)*(C(A+B)*(C--D)D)

++--*^ABCD//EF+GH*^ABCD//EF+GH

^̂--*+ABC*+ABC--DE+FGDE+FG

--A/B*C^DEA/B*C^DE

+AB+AB

--+ABC+ABC

*+AB*+AB--CDCD

InfixInfix PrefixPrefix

A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)

((A+B)*C((A+B)*C--(D(D--E))^(F+G)E))^(F+G)

AA--B/(C*D^E)B/(C*D^E)

Page 8: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

ตัวอยางตัวอยาง PPrefixrefix NotationNotation

A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)

((((A^B)*C)((((A^B)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

((((^AB)*C)((((^AB)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

(((*(^AB)C)(((*(^AB)C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

((((--(*^ABC)D)+((E/F)/(G+H)))(*^ABC)D)+((E/F)/(G+H)))

((((--*^ABCD)+((/EF)/(G+H)))*^ABCD)+((/EF)/(G+H)))

((((--*^ABCD)+((/EF)/(+GH)))*^ABCD)+((/EF)/(+GH)))

((((--*^ABCD)+(/(/EF)(+GH)))*^ABCD)+(/(/EF)(+GH)))

(+((+(--*^ABCD)(//EF+GH))*^ABCD)(//EF+GH))

(+(+--*^ABCD//EF+GH)*^ABCD//EF+GH)

++--*^ABCD//EF+GH*^ABCD//EF+GH

InfixInfix

PrefixPrefix

Page 9: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

นิพจนคณิตศาสตรแบบ นิพจนคณิตศาสตรแบบ Postfix NotationPostfix Notation

เปนนิพจนอีกรูปหน่ึงที่มีตําแหนงของตัวดําเนินการตรงกันขามกับ Prefix Notation คือตัวดําเนินการจะตัวดําเนินการจะวางอยูวางอยูหลังตัวถูกดําเนินการหลังตัวถูกดําเนินการ เชน AB+, CD-, EF*, GH/

นิพจนในรูปน้ีมีช่ือเรียกวา ReverseReverse PolishPolish Notation Notation หรือเรียกในอีกช่ือหน่ึงไดวา Postfix Notation Postfix Notation

มีคุณสมบัติเชนเดียวกับ Prefix Notation คือ ไมตองอาศัยวงเล็บกํากับลําดับขั้นไมตองอาศัยวงเล็บกํากับลําดับขั้นการคํานวณการคํานวณ

ตัวอยางตอไปน้ีเปนการเขียนนิพจน Infix Notation ใหอยูในรูปของ Postfix Notation

A/(B*(C+D))A/(B*(C+D))

(A(A--B)*(C+D)B)*(C+D)--EE

A+((BA+((B--C)*D)C)*D)

InfixInfix

A/(B*(CD+))A/(B*(CD+))

(AB(AB--)*(CD+))*(CD+)--EE

A+((BCA+((BC--)*D))*D)

A/(BCD+*)A/(BCD+*)

(AB(AB--CD+*)CD+*)--EE

A+(BCA+(BC--D*)D*)

ABCD+*/ABCD+*/

ABAB--CD+*ECD+*E--

ABCABC--D*+D*+

PostfixPostfixChange toChange to

Page 10: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

ตัวอยางตัวอยาง PostPostfixfix NotationNotation

A+BA+B

A+BA+B--CC

(A+B)*(C(A+B)*(C--D)D)

AB^C*DAB^C*D--EF/GH+/+EF/GH+/+

AB+C*DEAB+C*DE----FG+^FG+^

ABCDE^*/ABCDE^*/--

AB+AB+

AB+CAB+C--

AB+CDAB+CD--**

InfixInfix PostfixPostfix

A^B*CA^B*C--D+E/F/(G+H)D+E/F/(G+H)

((A+B)*C((A+B)*C--(D(D--E))^(F+G)E))^(F+G)

AA--B/(C*D^E)B/(C*D^E)

Page 11: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

ตัวอยางตัวอยาง PostfPostfixix NotationNotation

A^BA^B*C*C--D+ED+E/F/(/F/(G+HG+H))((((A^B)*C)((((A^B)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

((((AB^)*C)((((AB^)*C)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

((((AB^)C*)((((AB^)C*)--D)+((E/F)/(G+H)))D)+((E/F)/(G+H)))

(((AB^C*)D(((AB^C*)D--)+((E/F)/(G+H))))+((E/F)/(G+H)))

((AB^C*D((AB^C*D--)+((EF/)/(G+H))))+((EF/)/(G+H)))

((AB^C*D((AB^C*D--)+((EF/)/(GH+))))+((EF/)/(GH+)))

((AB^C*D((AB^C*D--)+((EF/)(GH+)/)))+((EF/)(GH+)/))

((AB^C*D((AB^C*D--)(EF/GH+/)+))(EF/GH+/)+)

(AB^C*D(AB^C*D--EF/GH+/+)EF/GH+/+)

AB^C*DAB^C*D--EF/GH+/+EF/GH+/+

InfixInfix

PostfixPostfix

Page 12: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO

Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving Postfix Math Postfix Math CalculationCalculation

Page 13: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตรการคํานวณนิพจนคณิตศาสตร

การคํานวณนิพจนคณิตศาสตรที่เขียนอยูในรูป Infix NotationInfix Notation ดวยคอมพิวเตอรมักจะประกอบดวยขั้นตอนหลักสองขั้นตอนคือ 1) แปลงนิพจนใหอยูในรูปของ Postfix Notation Postfix Notation 2) คํานวณคานิพจนในรูป Postfix Notation Postfix Notation ขั้นตอนทั้งสองจะใชสแตกสแตกเปน

กลไกหลักสําคัญในการทํางาน

Page 14: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

การคํานวณนิพจนคณิตศาสตรที่เขียนอยูในรูป PostPostfixfix Notation Notation จะใช สแตกชวยในการจัดการ โดยจะทําการตรวจสอบขอมูล เมื่อพบตัวถูกดําเนินการตัวถูกดําเนินการจะทําเก็บลงในสแตกทันที

แตถาพบตัวดําเนินการตัวดําเนินการจะนําขอมูลออกจากสแตกจํานวน 2 2 ชุดชุด หลังจากน้ันทําการคํานวณทางคณิตศาสตรตามตัวดําเนินการ ไดผลลัพธนําไปเก็บ

ไวในสแตก ทําเชนน้ีไปจนกวาจะหมดขอมูล นําขอมูลออกจากสแตกเปนผลลัพธจากการคํานวณ

Page 15: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 16: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(66););

66

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 17: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(22););

2266

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 18: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(33););

332266

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 19: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

5566

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););

22 ++ 33

OperandOperand11 OperatorOperator OperandOperand22

55

OutputOutput

Page 20: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

11

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11--OperandOperand22););

66 -- 55

OperandOperand11 OperatorOperator OperandOperand22

11

OutputOutput

Page 21: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

3311

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(33););

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 22: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

883311

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(88););

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 23: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

22883311

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(22););

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 24: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

443311

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11/Operand/Operand22););

88 // 22

OperandOperand11 OperatorOperator OperandOperand22

44

OutputOutput

Page 25: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

7711

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););

33 ++ 44

OperandOperand11 OperatorOperator OperandOperand22

77

OutputOutput

Page 26: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

77

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11*Operand*Operand22););

11 ** 77

OperandOperand11 OperatorOperator OperandOperand22

77

OutputOutput

Page 27: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

2277

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(22););

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 28: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

4949

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11^Operand^Operand22););

77 ^̂ 22

OperandOperand11 OperatorOperator OperandOperand22

4949

OutputOutput

Page 29: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

334949

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

Push(Push(33););

OperandOperand11 OperatorOperator OperandOperand22 OutputOutput

Page 30: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การคํานวณนิพจนคณิตศาสตร การคํานวณนิพจนคณิตศาสตร Postfix NotationPostfix Notation

5252

6 2 3 6 2 3 + + -- 3 8 2 3 8 2 / + * / + * 2 2 ^ ^ 3 3 ++

OperandOperand2 2 = Pop();= Pop();OperandOperand1 1 = Pop();= Pop();Push(OperandPush(Operand11+Operand+Operand22););

4949 ++ 33

OperandOperand11 OperatorOperator OperandOperand22

5252

OutputOutput

Page 31: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO

Abstract Data Type & Problem Solving Abstract Data Type & Problem Solving Infix to Postfix TransformationInfix to Postfix Transformation

Page 32: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

นิพจนในรูป Infix จําเปนตองอาศัยวงเล็บเพ่ือกํากับลําดับการคํานวณที่ตองการ แตถาในกรณีที่นิพจนน้ันไมมีวงเล็บกํากับลําดับขั้น เราจะใชหลัก 2 ประการในการคํานวณคือ1. กําหนดใหลําดับความสําคัญของตัวดําเนินการลําดับความสําคัญของตัวดําเนินการมีคาแตกตางกันไปตามลําดับดังน้ี อันดับหน่ึง : ตัวดําเนินการยกกําลัง (^) อันดับสอง : ตัวดําเนินการคูณและหาร (*,/) อันดับสาม : ตัวดําเนินการบวกและลบ (+,-)

Page 33: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

2. หากตัวดําเนินการที่มลํีาดับความสําคัญลําดับความสําคัญเทากันเทากันปรากฏอยูพรอมกันใหหาคาหาคานิพจนนั้นจากซายไปขวานิพจนนั้นจากซายไปขวา ตัวอยางตอไปน้ีเปนการเขียนนิพจน Infix ในรูปที่มีวงเล็บกํากับลําดับการคํานวณที่ชัดเจนและนิพจน Postfix ที่สมนัยกัน

A+B*CA+B*C

A*B^CA*B^C--DD

A+B*CA+B*C--DD

InfixInfix

A*B/CA*B/C

AA--B+CB+C

A+(B*C)A+(B*C)

(A*(B^C))(A*(B^C))--DD

(A+(B*C))(A+(B*C))--DD

ParenthesisParenthesis

(A*B)/C(A*B)/C

(A(A--B)+CB)+C

ABC*+ABC*+

ABC^*DABC^*D--

ABC*+DABC*+D--

PostfixPostfix

AB*C/AB*C/

ABAB--C+C+

Page 34: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

ในการแปลงนิพจน Infix ไปเปน Postfix จะใชการ ตรวจตรวจนิพจนจากซายไปนิพจนจากซายไปขวาขวา หากพบตัวถูกดําเนินการพบตัวถูกดําเนินการก็ใหสงตัวถูกดําเนินการน้ันไปเปนผลลัพธผลลัพธ แตถาตรวจพบตัวดําเนินการพบตัวดําเนินการก็จะตองเก็บพักตัวเก็บพักตัวดําเนินการนั้นไวกอน ดําเนินการนั้นไวกอน

เน่ืองจากยังจําเปนตองตรวจสอบตรวจสอบอีกวายังมีตัวดําเนินการอ่ืนตัวดําเนินการอ่ืนที่มีลําดับความสําคัญสูงกวาปรากฏอยูในนิพจนหรือไม

Page 35: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

ระหวางการตรวจนิพจนเราจะใชสแตกสําหรับเก็บพักตัวดําเนินการ โดยอาศัยเงื่อนไขตอไปน้ี ให p แทนตัวดําเนินการปจจุบันที่ตรวจพบในนิพจน และ stack(top) คือตัว

ดําเนินการตัวบนสุดในสแตก หากพบวา p มีลําดับความสําคัญสูงกวา stack(top) ก็ใหผลัก P เก็บไวในสแตก

ไดทันที แตถาพบวา p มีลําดับความสําคัญต่ํากวา stack(top) ใหดึงตัวดําเนินการที่เก็บ

อยูในสแตกออกไปเปนผลลัพธทีละตัว ทําจนกระทั่ง stack(top) มีลําดับความสําคัญต่ํากวา P หรือจนกวาสแตกจะวาง

ตอจากน้ันจึงคอยผลัก P เก็บไวในสแตก แลวจึงดําเนินการกวาดตรวจนิพจนสวนที่เหลือตอไปจนหมด หลังจากน้ันดึงตัวดําเนินการที่เก็บอยูในสแตกออกใหหมด

Page 36: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO

Example I Example I Infix to Infix to PostfixPostfix

Page 37: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

A + B * CA + B * C

Postfix Postfix OutputOutput

Page 38: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

A + B * CA + B * C

AA

Postfix Postfix OutputOutput

Page 39: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

++

A + B * CA + B * C

AA

Postfix Postfix OutputOutput

Page 40: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

++

A + B * CA + B * C

ABAB

Postfix Postfix OutputOutput

Page 41: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

**++

A + B * CA + B * C

ABAB

Postfix Postfix OutputOutput

** มีลําดับสูงกวา มีลําดับสูงกวา ++

Page 42: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

**++

A + B * CA + B * C

ABCABC

Postfix Postfix OutputOutput

Page 43: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

++

A + B * CA + B * C

ABC*ABC*

Postfix Postfix OutputOutput

Page 44: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

A + B * CA + B * C

ABC*+ABC*+

Postfix Postfix OutputOutput

Page 45: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน Postfix Postfix เเมื่อมีวงเล็บมื่อมีวงเล็บ

ระหวางการกวาดตรวจนิพจน ถา p ตัวดําเนินการปจจุบันทีต่รวจพบเปนวงเล็บเปดตรวจพบเปนวงเล็บเปดใหผลัก ผลัก pp เก็บไวในสแตกเก็บไวในสแตกทันที

แตถา p ตัวดําเนินการปจจุบันทีต่รวจพบเปนวงเล็บปดตรวจพบเปนวงเล็บปดใหดึงตัวดําเนินการท่ีเก็บดึงตัวดําเนินการท่ีเก็บอยูอยูในสแตกในสแตกออกไปเปนผลลัพธทีละตัวจนกระท่ังพบวงเล็บเปดออกไปเปนผลลัพธทีละตัวจนกระท่ังพบวงเล็บเปดจึงหยุดการดึงตัวดําเนินการจากสแตก

จะไมมีการผลัก ไมมีการผลัก pp ท่ีเปนวงเล็บปดเก็บไวในสแตก ท่ีเปนวงเล็บปดเก็บไวในสแตก แลวจึงดําเนินการกวาดตรวจนิพจนสวนที่เหลือตอไปจนหมด และดึงตัวดําเนินการที่เก็บอยูในสแตกออกใหหมด

Page 46: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO

Example II Example II Prefix to PostfixPrefix to Postfix

Page 47: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

( A + B ) * C( A + B ) * C

Postfix Postfix OutputOutput

Page 48: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

((

( A + B ) * C( A + B ) * C

Postfix Postfix OutputOutput

Page 49: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

((

( A + B ) * C( A + B ) * C

AA

Postfix Postfix OutputOutput

Page 50: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

++((

( A + B ) * C( A + B ) * C

AA

Postfix Postfix OutputOutput

Page 51: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

++((

( A + B ) * C( A + B ) * C

ABAB

Postfix Postfix OutputOutput

Page 52: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

( A + B ) * C( A + B ) * C

AB+AB+

Postfix Postfix OutputOutput

Page 53: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

**

( A + B ) * C( A + B ) * C

AB+AB+

Postfix Postfix OutputOutput

Page 54: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

**

( A + B ) * C( A + B ) * C

AB+CAB+C

Postfix Postfix OutputOutput

Page 55: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

การแปลงนิพจน การแปลงนิพจน InInfix fix ไปเปน ไปเปน PostfixPostfix

( A + B ) * C( A + B ) * C

AB+C*AB+C*

Postfix Postfix OutputOutput

Page 56: Chapter02 Infix Prefix & Postfix Notation 2:Infix, Prefix & Postfix Notation อ.เสกสรรค มธ ลาภร งสรรค สาขาว ชาว ศวกรรมคอมพ

LOGO