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

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

WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO 1 Chapter 3 - Stack, - Queue,- Infix Prefix.

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


งานนำเสนอเรื่อง: "WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO 1 Chapter 3 - Stack, - Queue,- Infix Prefix."— ใบสำเนางานนำเสนอ:

1 WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO 1 Chapter 3 - Stack, - Queue,- Infix Prefix Postfix

2 จุดประสงค์ บทเรียนที่ 3 2 เข้าใจถึงความหมายและประโยชน์ของ stack สามารถนำความรู้เรื่อง stack ไปใช้แก้ปัญหาทางคอมพิวเตอร์ได้ เข้าใจถึงความหมายและประโยชน์ของ queue สามารถนำความรู้เรื่อง queue ไปใช้แก้ปัญหาทางคอมพิวเตอร์ได้ เข้าใจถึงหลักการ prefix infix postfix ได้ สามารถเขียนโปรแกรมเพื่อแปลงค่าสลับระหว่าง prefix infix postfix ได้

3 Stack 3 ชื่อภาษาไทยกองซ้อน [4] หลักการทำงานของ stack คือ LIFO(last in first out) ตัวอย่างการประยุกต์ใช้ stack  การแปลงนิพจน์คำนวณของคอมพิวเตอร์  การคำนวณค่าจาก function recursion ของคอมพิวเตอร์  การแก้ปัญหาทางคอมพิวเตอร์อื่นๆ เช่น tower of hanoi  stack สร้างขึ้นมาเพื่อช่วยให้การแก้ปัญหาทางคอมพิวเตอร์ง่าย ขึ้น

4 32 Stack 4 1 Last in First out การทำงานของ stack คือ เข้าก่อนออกที หลัง หรือ เข้าทีหลังออก ก่อน

5 Stack 5 Exercise 1  สร้าง class stack ด้วย Array หรือ ArrayList ให้ตั้งชื่อ class ว่า MyStack  โดยกำหนดให้ method push() เพิ่ม item  method pop() ดึง item ออก  กำหนดให้ข้อมูลเป็นดังนี้  push(0) push(1) push(1) push(2) push(3) push(4)  pop() push(5) push(6) pop() push(7) pop() push(8)  print ค่า array ทั้งหมดใน stack  จะต้องได้

6 Stack 6 Exercise 2  ให้ใช้ class Stack  โดยกำหนดให้ method push() เพิ่ม item  method pop() ดึง item ออก  กำหนดให้ข้อมูลเป็นดังนี้  push(0) push(1) push(1) push(2) push(3) push(4)  pop() push(5) push(6) pop() push(7) pop() push(8)  print ค่า array ทั้งหมดใน stack  จะต้องได้

7 Queue 7 ชื่อภาษาไทยแถวคอย [4] หลักการทำงานของ queue คือ FIFO(first in first out) ตัวอย่างการทำงานของ queue  การเก็บสถานการณ์พิมพ์ของเครื่องพิมพ์  การเข้าคิวต่างๆ เช่น ซื้ออาหาร ซื้อตั๋วหนัง เข้าคิวธนาคาร

8 Queue การเข้าออกเป็นไปตามลำดับก่อนหลัง นั่นคือ เข้าก่อนออกก่อน เข้าหลังออกหลัง FIFO (First in First out)

9 Queue 9 Exercise 3  สร้าง class queue ด้วย Array หรือ ArrayList ให้ตั้งชื่อ class ว่า MyQueue  โดยกำหนดให้ method enqueue() เพิ่ม item  method dequeue() ดึง item ออก  กำหนดให้ข้อมูลเป็นดังนี้  enqueue(10) enqueue(8) enqueue(1) enqueue(2) enqueue(3)  dequeue() enqueue(4) dequeue() enqueue(5)  จะต้องได้

10 infix prefix postfix 10 infix notation หมายถึง รูปแบบการเขียนตัวเลขและ เครื่องหมายในรูปแบบปกติ เช่น (a+b)*(c-d) หรือ (3+5)*(4-3) prefix notation(Polish notation) หมายถึงรูปแบบการ เขียนตัวเลขและเครื่องหมายในรูปแบบให้เครื่องหมายอยู่ ด้านหน้าตัวเลข เช่น *+ab-cd หรือ * postfix notation(Reverse Polish notation) หมายถึง รูปแบบการเขียนตัวเลขและเครื่องหมายในรูปแบบให้ เครื่องหมายอยู่ด้านหลังตัวเลข เช่น ab+cd-* หรือ *

11 prefix? postfix? 11 แล้วจะกลับเครื่องหมายไปหน้าไปหลังทำไม ? - infix เป็นรูปแบบที่มนุษย์ใช้อ่านและคิดคำนวณ - แต่สำหรับคอมพิวเตอร์ รูปแบบที่ง่ายคือ prefix และ postfix

12 prefix 12 (5*6)+7 = 5*6+7 infix -> prefix 1. เริ่มจากความสำคัญสูงสุดนั่นคือ 5*6 2. นำเครื่องหมายมาด้านหน้าตัวเลขจะได้เป็น *56 3. ให้ *56 = x จะได้ x นำเครื่องหมายไว้ด้านหน้าจะได้เป็น +x7 5. แทนค่า x ด้วย *56 จะได้ +*567 เป็นคำตอบ 6. คำตอบคือ +*567

13 prefix 13 5*6+7 infix -> prefix by Stack วิธีการจะเริ่มจากด้านซ้ายไปขวาโดยให้ความสำคัญของ เครื่องหมายสูงสุดก่อน + * 5 67

14 prefix 14 +*567 prefix -> infix 1. เริ่มจากด้านซ้ายไปขวา หาเครื่องหมายที่ตามด้วย ตัวเลขสองตัว นั่นคือ *56 2. นำเครื่องหมายมาไว้ตรงกลางจะได้ 5*6 3. แทนค่า 5*6 ด้วย x จะได้ +x7 4. นำเครื่องหมายมาไว้ตรงกลางจะได้ x+7 5. แทนค่า x ด้วย 5*6 จะได้ 5* คำตอบคือ 5*6+7

15 prefix 15 +*567 prefix -> infix by Stack วิธีการจะเริ่มจากด้านขวาไปซ้าย ( หลังไปหน้า ) + * 5 6 7

16 prefix 16 +*567 prefix -> infix by stack วิธีการจะเริ่มจากด้านขวาไปซ้าย ( หลังไปหน้า )

17 postfix 17 (5*6)+7 = 5*6+7 infix -> postfix 1. เริ่มจากความสำคัญสูงสุดนั่นคือ 5*6 2. นำเครื่องหมายมาด้านหลังตัวเลขจะได้เป็น 56* 3. ให้ 56* = x จะได้ x นำเครื่องหมายไว้ด้านหลังจะได้เป็น x แทนค่า x ด้วย 56* จะได้ 56*7+ เป็นคำตอบ 6. คำตอบคือ 56*7+

18 prefix 18 5*6+7 infix -> postfix by Stack วิธีการจะเริ่มจากด้านซ้ายไปขวาโดยให้ความสำคัญของ เครื่องหมายสูงสุดก่อน + * 5 67

19 postfix 19 56*7+ postfix -> infix 1. เริ่มจากด้านซ้ายไปขวา หาตัวเลขสองตัวและมีเครื่อง ด้านหลัง นั่นคือ 56* 2. นำเครื่องหมายมาไว้ตรงกลางจะได้ 5*6 3. แทนค่า 5*6 ด้วย x จะได้ x7+ 4. นำเครื่องหมายมาไว้ตรงกลางจะได้ x+7 5. แทนค่า x ด้วย 5*6 จะได้ 5* คำตอบคือ 5*6+7

20 postfix 20 56*7+ postfix -> infix by Stack วิธีการจะเริ่มจากด้านซ้ายไปขวา ( หน้าไปหลัง ) + *

21 postfix 21 56*7+ postfix -> infix by Stack วิธีการจะเริ่มจากด้านซ้ายไปขวา ( หน้าไปหลัง )

22 prefix postfix 22 จากตัวอย่างทั้ง prefix และ postfix จะเห็นว่าเมื่อตัวเลขที่มี จำนวนหลักมากกว่า 2 หลัก ( มากกว่าหรือเท่ากับ 10) จะทำ ให้การแปลงกับจาก prefix(postfix) ไปเป็น infix มีความ ผิดพลาดเช่น 27*6+5 แปลงเป็น postfix จะได้ 276*5+ และ 2*76+5 แปลงเป็น postfix จะได้ 276*5+ จะเห็นว่า postfix ของทั้งสองค่าเหมือนกัน ดังนั้นในกรณี infix มีจำนวนใดจำนวนหนึ่งมีค่าตั้งแต่ 10 ขึ้นไป ให้ใส่เป็น เครื่องหมาย, คั่นในแต่ละเครื่องหมายและตัวเลขเช่น 27*6+5 -> 27,6,*,5,+ 2*76+5 -> 2,76,*,5,+

23 Exercise 4 23 แปลงค่า infix ต่อไปนี้เป็น prefix และ postfix 1. (A + B) * C + D / (E + F * G) – H 2. ! (A && ! ((B < C) || (C > D))) || (C < E) 3. A - B - C * (D + E / F - G) – H เฉลย  postfix: A B + C * D E F G * + / + H - prefix: - + * + A B C / D + E * F G H  postfix: A B C < C D > || ! && ! C E < || prefix: || ! && A ! || < B C > C D < C E  postfix: A B - C D E F / + G - * - H - prefix: A B * C - + D / E F G H

24 Exercise 5 24 แปลงค่า postfix ต่อไปนี้เป็น infix จากนั้นแปลงเป็น prefix 1. A B && C || E F > ! || 2. A B C D * - E / + F + G H / - เฉลย 1. infix: (A && B) || C || ! (E > F) prefix: || || && A B C ! > E F 2. infix: A + ((B - C * D) / E ) + F - G / H prefix: A / - B * C D E F / G H

25 Exercise 6 25 Exercise 6 แปลงค่า prefix ต่อไปนี้เป็น infix จากนั้น แปลงเป็น postfix 1. - / + * A B C D / E + F G เฉลย infix: (A * B + C) / D - E / (F + G) postfix: A B * C + D / E F G + / -

26 Exercise 7 26 แก้ปัญหา Exercise 4 5 และ 6 โดยใช้ Stack


ดาวน์โหลด ppt WATTANAPONG SUTTAPAK SOFTWARE ENGINEERING, SCHOOL OF INFORMATION COMMUNICATION TECHNOLOGY, UNIVERSITY OF PHAYAO 1 Chapter 3 - Stack, - Queue,- Infix Prefix.

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


Ads by Google