งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Infix to Postfix มหาวิทยาลัยเนชั่น

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Infix to Postfix มหาวิทยาลัยเนชั่น"— ใบสำเนางานนำเสนอ:

1 1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Infix to Postfix มหาวิทยาลัยเนชั่น มหาวิทยาลัยเนชั่น

2 2 ที่มาที่ไป เมื่อมีนิพจน์ (Expression) ซึ่งเป็นคำสั่ง กำหนดค่าให้กับข้อมูล ในภาษาคอมพิวเตอร์ ย่อม มีความจำเป็นต้องแปลความหมาย และแปลงให้ คอมพิวเตอร์เข้าใจได้โดยง่าย ตามหลัก โครงสร้างข้อมูล (Data Structure) คือการ แปลงจาก infix เป็น postfix Stack มีการทำงานแบบ LIFO ถูกนำมา อธิบายการทำงานของการแปลงจาก infix เป็น postfix อยู่เสมอ โดยพิจารณาน้ำหนักของ เครื่องหมายในนิพจน์ และเครื่องหมายที่ถูก กระทำก่อนไปหลังคือ 1. วงเล็บ Parenthesis () 2. ยกกำลัง Exponentiation ^ (Left to Right) 3. คูณและหาร Multiplication *, Division / (Left to Right) 4. บวกและลบ Addition +, Subtraction - (Left to Right)

3 3 ความหมายของสแตก สแตก คือ ลิเนียร์ลิสต์ (Linear List) เมื่อเพิ่มข้อมูลหรือ ลบข้อมูล ในสแตกจะ กระทำทีปลายเพียงข้าง เดียวกัน ปลายข้างนั้นเรียกว่า ท๊อป ของสแตก (Top Of Stack) มี คุณสมบัติเป็น ไลโฟลิสต์ (LIFO List) คือสมาชิกที่เข้าลิสต์หลังสุด จะออกจากลิสต์ก่อน การนำข้อมูล เข้าในสแตกเรียกว่าพูชชิ่ง (pushing) การนำข้อมูลออกจากส แตกเรียกว่า ป๊อปปิ้ง (poping)

4 4 ความหมายของ infix และ postfix Infix คือนิพจน์ที่คนอ่านแล้วเข้าใจตาม หลักคณิตพื้นฐาน Postfix คือนิพจน์ที่คอมพิวเตอร์สามารถ ปฏิบัติตามได้ง่าย 1 infix: a + b + c 1 postfix: a b + c + 2 infix: a + b * c - d 2 postfix: a b c * + d - 3 infix: a + b * (c - d) 3 postfix: a b c d - * +

5 5 ตัวอย่างการแปลง 1 Expression: a + b + c infix Stack postfix 1a a 2+ +a 3b +ab 4+ +ab+ 5c +ab+c 6ab+c+ Source Code :

6 6 ตัวอย่างการแปลง 2 Expression: a + b * c - d infix Stackpostfix 1a a 2+ +a 3b +ab 4* +*ab 5c +abc* 6--abc*+ 7d-abc*+d 8abc*+d-

7 7 ตัวอย่างการแปลง 3 Expression: a + b * (c - d) infix Stackpostfix 1a a 2+ +a 3b +ab 4* +*ab 5(+*(ab 6c +*(abc 7-+*(-abc 8d+*(-abcd 9)+*abcd- 10abcd-*+

8 8 กฎเกี่ยวกับการแปลง 1. ถ้าข้อมูลเข้า (input) เป็นตัวถูกดำเนินการ (operand) ให้ นำออกไปเป็นผลลัพธ์ (output) 2. ถ้าข้อมูลเข้าเป็นตัวดำเนินการ (operator) ให้ดำเนินการดังนี้ 2.1 ถ้าสแตคว่าง ให้ push operator ลงในสแตค 2.2 ถ้าสแตคไม่ว่าง ให้เปรียบเทียบ operator ที่เข้ามากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค ถ้า operator ที่เข้ามาสำคัญมากกว่า operator ที่ ตำแหน่ง TOP ของสแตคให้ push ลงสแตค ถ้า operator ที่เข้ามามีความสำคัญน้อยกว่าหรือเท่ากับ operator ที่อยู่ในตำแหน่ง TOP ของสแตค ให้ pop สแตคออกไป เป็นผลลัพธ์ แล้วทำการเปรียบเทียบ operator ที่เข้ามากับ operator ที่ตำแหน่ง TOP ต่อไป จะหยุดจนกว่า operator ที่เข้ามา จะมีความสำคัญมากกว่า operator ที่ตำแหน่ง TOP ของสแตค แล้ว จึง push operator ที่เข้ามานั้นลงสแตค 3. ถ้าข้อมูลเข้าเป็นวงเล็บเปิด ให้ push ลงสแตค 4. ถ้าข้อมูลเข้าเป็นวงเล็บปิด ให้ pop ข้อมูลออกจากสแตคไปเป็น ผลลัพธ์จนกว่าจะถึงวงเล็บ เปิด จากนั้นทิ้งวงเล็บเปิดและปิดทิ้งไป 5. ถ้าข้อมูลเข้าหมด ให้ pop ข้อมูลออกจากสแตคไปเป็นผลลัพธ์ จนกว่าสแตคจะว่าง

9 9 Algorithm in j2sdk 1.5 boolean opGreaterEqual(char a, char b){ return (a=='*' || a=='/') >= (b=='*' || b=='/'); } apstring infixToPostfix(apstring s){ int len=s.length(); char temp; apstring ans=""; apstack stack; for(int i=0; i='A' && s[i]<='Z' ) { ans+=s[i]; } while ( !stack.isEmpty() ){ stack.pop(temp); ans+=temp; } return ans; } ข้อมูล


ดาวน์โหลด ppt 1 หลักการภาษาชุดคำสั่ง อ. บุรินทร์ รุจจนพันธุ์.. ปรับปรุง 9 มิถุนายน 2556 Infix to Postfix มหาวิทยาลัยเนชั่น

งานนำเสนอที่คล้ายกัน


Ads by Google