Bansomdej Chaopraya Rajabhat University

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมฝึกหัด การเลื่อนและคลิกเมาส์
Advertisements

โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
บทที่ 2 รหัสควบคุมและการคำนวณ
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
การซ้อนทับกัน และคลื่นนิ่ง
DSP 6 The Fast Fourier Transform (FFT) การแปลงฟูริเยร์แบบเร็ว
EEET0485 Digital Signal Processing Asst.Prof. Peerapol Yuvapoositanon DSP3-1 ผศ.ดร. พีระพล ยุวภูษิตานนท์ ภาควิชา วิศวกรรมอิเล็กทรอนิกส์ DSP 6 The Fast.
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
แนวทางการรายงานผลการปฏิบัติราชการโดยผ่านระบบเครือข่ายอินเตอร์เน็ต
Chapter 1 โครงสร้างข้อมูลและอัลกอริธึมส์
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Stack.
Stack Holidays/seasonal content.
จำนวนเต็ม จำนวนเต็ม  ประกอบด้วย                   1. จำนวนเต็มบวก    ได้แก่  1 , 2 , 3 , 4, 5 , ....                   2.  จำนวนเต็มลบ      ได้แก่  -1.
Data structure & Algorithms
ลักษณะการทำงานของ Stack
Week 6 ประกาศค่าตัวแปร.
ตัวแปรชุด.
จำนวนนับใดๆ ที่หารจำนวนนับที่กำหนดให้ได้ลงตัว เรียกว่า ตัวประกอบของจำนวนนับ จำนวนนับ สามารถเรียกอีกอย่างว่า จำนวนเต็มบวก หรือจำนวนธรรมชาติ ซึ่งเราสามารถนำจำนวนนับเหล่านี้มา.
Arrays.
กลุ่มสาระการเรียนรู้ คณิตศาสตร์ โรงเรียนบ้านหนองกุง อำเภอนาเชือก
การเขียนโปรแกรมเชิงวัตถุ ด้วยภาษาจาวา
บทที่ 3 ตัวดำเนินการ และ นิพจน์
จำนวนทั้งหมด ( Whole Numbers )
Kampol chanchoengpan it สถาปัตยกรรมคอมพิวเตอร์ Arithmetic and Logic Unit 1.
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
ตัวดำเนินการ(Operator)
Infix to Postfix มหาวิทยาลัยเนชั่น หลักการภาษาชุดคำสั่ง
โครงสร้างข้อมูลแบบคิว
คิว ลักษณะการทำงานของ Queue การดำเนินการของ Queue การตรวจสอบ Queue
สแตค(stack) โครงสร้างข้อมูลแบบ Stack - การสร้าง Stack
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ณัฏฐวุฒิ เอี่ยมอินทร์
สัปดาห์ที่ 7 การแปลงลาปลาซ The Laplace Transform.
คำสั่งควบคุมการทำงานของ ActionScripts
สถาปัตยกรรมคอมพิวเตอร์ (Computer Architecture)
การแจกแจงปกติ.
Extra_08_Test_Modular_Calculator
วิชาคณิตศาสตร์ ชั้นประถมศึกษาปีที่6
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
บทที่ 4 นิพจน์ทางคณิตศาสตร์.
ค21201 คณิตศาสตร์เพิ่มเติม 1
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
ภาษาอังกฤษเพื่อการสื่อสาร อ32204
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
School of Information Communication Technology,
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
แบบฝึกหัด จงหาคำตอบที่ดีที่สุด หรือหาค่ากำไรสูงสุด จาก
โครงสร้างข้อมูล Queues
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
เรื่องการประยุกต์ของสมการเชิงเส้นตัวแปรเดียว
หลักการเขียนโปรแกรม ( )
วิธีเรียงสับเปลี่ยนและวิธีจัดหมู่
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การรับและแสดงผลข้อมูล (Input/Output)
โครงสร้างข้อมูลแบบ สแตก (stack)
CHAPTER 2 Operators.
การประยุกต์ใช้ Stack การประยุกต์ใช้ Stack
Stack Sanchai Yeewiyom
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
ใบสำเนางานนำเสนอ:

Bansomdej Chaopraya Rajabhat University Stack Bansomdej Chaopraya Rajabhat University

เนื้อหา โอเปอร์เรชั่นของสแตค โพลิช โนเทชั่น คิว รีเคอร์ซีฟ สรุป การแปลงสมการจาก Infix เป็น Postfix การหาผลลัพธ์จากนิพจน์ Postfix คิว รีเคอร์ซีฟ สรุป Stack Slide#2

สแตค สแตค เป็นรูปแบบหนึ่งในการจัดเรียงข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านใดด้านหนึ่ง มีกระบวนการทำงานแบบ First In Last Out : FILO ตัวอย่างที่ดีที่สุดของการจัดเรียงแบบสแตค คือการวางซ้อนกันของจาน ซึ่งจานที่วางก่อนจะอยู่ข้างล่าง และจานที่ถูกวางที่หลังจะอยู่ข้างบน เวลาที่นำจานออกมาใช้ ก็จะใช้ด้านบนสุดก่อน ดังตัวอย่าง Stack Slide#3

ตัวอย่างโครงสร้างแบบสแตค ข้อมูลที่ป้อนลงมาเป็นตัวสุดท้าย ข้อมูลที่ป้อนลงมาเป็นตัวแรก Stack Slide#4

โอเปอร์เรชั่นของสแตค โอเปอร์เรชั่นของสแตคมี 2 โอเปอร์เรชั่น คือ การนำข้อมูลเข้าสู่สแตค Push การนำข้อมูลออกจากสแตค Pop Stack Slide#5

การนำข้อมูลเข้าสู่สแตค : Push ตัวอย่าง ต้องการนำข้อมูลต่อไปนี้เข้าสู่ สแตคที่ว่างเปล่า กำหนดข้อมูลดังต่อไปนี้ A, B, C,D Stack Slide#6

ตัวอย่าง Push  A Max Stack Top = 1 Top = 0 Stack Slide#7

ตัวอย่าง Push  B Max Stack Top = 2 Top = 1 Stack Slide#8

ตัวอย่าง Push  C Max Stack Top = 3 Top = 2 Stack Slide#9

ตัวอย่าง Push  D Max Stack Top = 4 Top = 3 Stack Slide#10

โปรแกรม Push ข้อมูลลง Stack /* pushes item on the stack */ void push ( int data ) { if ( top == MAX - 1 ) printf(”\nStack is full“); else top++ ; stack[ top ] = data ; } Stack Slide#11

การนำข้อมูลออกจากสแตค : Pop ตัวอย่าง ต้องการนำข้อมูล A, B, C,D เข้าออกจากสแตค Stack Slide#12

ตัวอย่าง Pop  D Max Stack Top = 4 Top = 3 Stack Slide#13

ตัวอย่าง Pop  C Max Stack Top = 3 Top = 2 Stack Slide#14

ตัวอย่าง Pop  B Max Stack Top = 2 Top = 1 Stack Slide#15

ตัวอย่าง Pop  A Max Stack Top = 1 Top = 0 Stack Slide#16

โปรแกรม POP ข้อมูลออกจาก Stack /* pops off the items from the stack */ int pop( ) { int data ; if ( top == -1 ) printf("\nStack is empty“); return ( -1 ) ; } else {      data = stack[ top ] ; top-- ; return ( data ) ; Stack Slide#17

บทที่ 4 โครงสร้างข้อมูลแบบสแตก และคิว โอเปอร์เรชั่นของสแตก โพลิช โนเทชั่น การแปลงสมการจาก Infix เป็น Postfix การหาผลลัพธ์จากนิพจน์ Postfix คิว สรุป

โครงสร้างข้อมูลแบบสแตก และคิว เป็นโครงสร้างข้อมูลแบบเชิงเส้น โดยลักษณะของโครงสร้างแบบสแตก ข้อมูลถูกจัดเข้าก่อนจะออกที่หลัง เรียกว่า “First in last out” / “FILO” โดยลักษณะของโครงสร้างแบบคิว ข้อมูลถูกจัดเข้าก่อนจะ นำออกก่อน เรียกว่า “First in first out” / “FIFO” โดยมีการนำโครงสร้างพื้นฐานที่เป็นอาร์เรย์ หรือ ลิงค์ลิสต์ มาใช้ในการจัดการข้อมูล

Chapter 4 Stack and Queue (linear structure) ตัวอย่าง การจัดเรียงข้อมูลแบบสแตก - การจัดวางซ้อนกันของจาน / สิ่งของที่วางซ้อนกัน

Chapter 4 Stack and Queue 4.2.1 Operations on Stack สำหรับการจัดเรียงข้อมูล การนำเข้าข้อมูลในสแตกจะ เรียกว่า พุช (Push) การนำข้อมูลออกจากสแตก เรียกว่า พอพ (Pop) ด้านของข้อมูลที่มีการนำข้อมูลเข้าออกเรียกว่า ท็อป (Top) (a) A, B, C, D, E (b) A Push: A (c) A, B, C, D, E (d) A, B, C, D Pop: E Top Top

Chapter 4 Stack and Queue Operations on Stack การนำข้อมูลออกจากสแตก A, B, C, D, E A, B, C, D Pop : E A, B, C Pop : D A, B Pop : C A, B, D Push : D A, B, D, E Push : E Top E Push : E Top Top E, D Push : D Top Top E, D Top Top E Pop : D Top Top Pop : E Top STACK X STACK Y

Chapter 4 Stack and Queue Operations on Stack การพิจารณาเกี่ยวกับหน่วยความจำ การพิจารณาหน่วยความจำที่ใช้และจำนวนครั้งของการ OVERFLOW ในกรณีที่จะ Push เข้าสแตก จนครบ MAXSTK - เกิด OVERFLOW บ่อย เมื่อเตรียมหน่วยความจำน้อย - จะไม่เกิด OVERFLOW เมื่อเตรียมหน่วยความจำมาก การใช้หน่วยความจำร่วมกันระหว่าง 2 สแตก MAXSTK1 + MAXSTK2 1 2 3 4 n-3 n-2 n-1 n … … STACK2 STACK1 การใช้สแตกร่วม

Chapter 4 Stack and Queue Operations on Stack Program Main … begin call sub 1 end; Program sub 1 call sub 2 Program sub2 … begin call sub 3 end; Program sub 3 Sub 2 Sub 1 Sub 1 Sub 1 Main Main Main Main Main (a) (b) (c) (d) (e) (f) การเก็บข้อมูลสแตกของโปรแกรม Main

Chapter 4 Stack and Queue 4.2.2 Implementation of Stack as Static Array สแตกสามารถแสดงได้หลายวิธีโดยรูปแบบคอมพิวเตอร์ การใช้อาร์เรย์เป็นวิธีหนึ่ง โดยสแตกจะมีตัวแปรทำหน้าที่เป็น ตัวบอกจุดสูงสุดของสแตก คือ Top MAXSTK Top = 0; Top = NULL

Chapter 4 Stack and Queue Implementation of Stack as Static Array Procedure PUSH(STACK,TOP,MAXSTK,ITEM) ขบวนการนี้เป็นการนำ ITEM ใส่ใน STACK if TOP = MAXSTK, then : Print OVERFLOW and RETURN Set TOP = TOP +1 Set STACK[TOP] : = ITEM return. Procedure POP(STACK,TOP,ITEM) ขบวนการนี้เป็นการลบข้อมูล ITEM ที่ TOP ของ STACK if TOP = 0, then : Print OVERFLOW and RETURN Set ITEM : = STACK[TOP] Set TOP : = TOP - 1 return.

โพลิช โนเทชั่น (Polish Notation) โพลิช โนเทชั่น เป็นวิธีการในการจัดรูปแบบของสมการใหม่ โดยแสดงสมการทางคณิตศาสตร์ให้อยู่ในรูปเครื่องหมายทางคณิตศาสตร์อยู่ก่อนตัวถูกดำเนินการ (โพลิช โนเทชั่น เป็นชื่อที่ตั้งขึ้นมาตามชื่อของ ตำรวจเจน ลูคาวิคซ์ ผู้คิดให้เครื่องหมายอยู่หน้าตัวดำเนินการ นี้) ตัวอย่างของ สมการ โพลิช โนเทชั่น 2*3 แปลงเป็นสมการโพลิช โนเทชั่น เท่ากับ *23 Stack Slide#27

Chapter 4 Stack and Queue การกำหนดลำดับความสำคัญของการทำงานในการคำนวณคณิตศาสตร์ 2+3*5 สูงสุด : ยกกำลัง (^) สูงถัดมา : คูณ (*) หาร (/) ต่ำสุด : บวก (+) ลบ (-) ในกรณีเป็นผู้กำหนดความสำคัญโดยใช้วงเล็บ() (2+3)*5 ตัวเลข เรียกว่า Operand

Chapter 4 Stack and Queue โพลิช โนเทชั่น เป็นวิธีการจัดรูปแบบสมการใหม่ การเขียนเครื่องหมาย อยู่หน้าตัวดำเนินการ เช่น 2*3 เขียนเป็น *23 2+3 เขียนเป็น +23 ในกรณีมีเครื่องหมายหลายตัว (5+2)*3 = (+52)*3 = *+523 (5^2)+((4*6)/3) = (^52)+((*46)/3) = (^52)+(/*463) = +^52/*463 การเขียนสมการแบบนี้ไม่ต้องใช้วงเล็บและลำดับความสำคัญ

ศัพท์ที่ควรทราบ Operand คือ ตัวถูกดำเนินการใดๆ เช่น A, B, C Operator คือ เครื่องหมายในการดำเนินการ เช่น + , -, *, / Infix คือสมการที่อยู่ในรูปของ Operand คั่นด้วยOperator Prefix คือสมการที่อยู่ในรูปของ Operator แล้วตามด้วย Operand Postfix คือสมการที่อยู่ในรูปของ Operand แล้วตามด้วย Operator Infix : A+B Prefix : +AB Postfix : AB+ Stack Slide#30

ลำดับความสำคัญของเครื่องหมายทางคณิตศาสตร์ Precedence เมื่ออยู่ที่ อินพุต Precedence เมื่ออยู่ในสแตค ^ 4 3 *, / 2 +, - 1 ( , ) Stack Slide#31

การแปลงสมการ Infix เป็นสมการ Postfix 1. ถ้าอินพุตเป็นตัว Operand ให้นำไปไว้ที่เอาท์พุต 2. ถ้าอินพุตเป็นตัว Operator ให้ทำดังนี้ 2.1 นำ Operator ตัวนั้นเข้าสู่สแตค ถ้าสแตคว่างเปล่าจะถือว่าเป็น opst : Operator Stack 2.2 ถ้า สแตคนั้นไม่ว่างนั่นคือมีOperator อยู่แล้วให้เปรียบเทียบ Precedence ของ Operator ที่เป็นอินพุต กับ Precedence ของ Operator ที่อยู่ในสแตค หากพบว่า Stack Slide#32

การแปลงสมการ Infix เป็นสมการ Postfix 2.2.1 ถ้าพบว่า ค่าOperator ในอินพุตน้อยกว่าหรือเท่ากับให้ทำการ Pop Operatorใน Stack ออกมายัง Output 2.2.2 ถ้าพบว่า ค่าOperator ในอินพุตมากกว่าให้นำ Operatorนั้นบรรจุลงใน Stack 2.2.3 ถ้าเป็นเครื่องหมาย ( ให้ push ลงสู่ Stack จนกว่าจะพบเครื่องหมาย ) หรือ stack จะว่าง 2.2.4 ถ้าเป็นเครื่องหมาย ) ให้ Pop ข้อมูลทั้งหมดรวมทั้ง Operator ออกมาแล้วนำไปไว้ที่เอาท์พุต Stack Slide#33

ตัวอย่างที่ 1 จงแปลง A+B+Cให้เป็น Postfix Input Stack Output A + B AB AB+ C AB+C+ Stack Slide#34

ตัวอย่างที่ 2 จงแปลง A+B/C*D-E ให้เป็น Postfix Input Stack Output A + B AB / +,/ C ABC * +,* ABC/ D ABC/D - ABC/D*+ E ABC/D*+E- Stack Slide#35

ตัวอย่างที่ 3 A + B * C + ( D * E + F ) * G INPUT STACK OUTPUT A A + B Stack Slide#36

จงแปลงนิพจน์ Infix ต่อไปนี้ เป็นนิพจน์ Postfix [1] A + B * ( C ^ D * E / F ) – G [2] A ^ 2 – 4 * ( A * C + ( E + ( F – G ) – H ) ) [3] A ^ B * C / D * ( E ^ 3 ^ 2 ) Stack Slide#37

การหาผลลัพธ์จากนิพจน์ Postfix [1] เมื่ออ่านพบ operand ให้ push ลง stack [2] ถ้าเป็น operator ให้ pop ตัว operand ออกมา 2 ตัว เพื่อคำนวณ [3] ผลลัพธ์ที่ได้ทำการ push ลง stack Stack Slide#38

ตัวอย่างการหาผลลัพธ์ ตัวอย่าง กำหนดให้ A=5 , B=2 , C=3 จงหาผลลัพธ์ ของ AB+C+ Output Stack Process 5 2 5,2 + 5+2 3 7,3 7+3=10 Stack Slide#39

จงหาค่าของนิพจน์ Postfix ต่อไปนี้ กำหนดให้ A=5, B=3, C=2, D=1, E=2, F=3, G=1, H=2 [1] AB+CD-* [2] ABC*+DE*F+G*+ [3] ให้หาค่านิพจน์ postfix ที่ได้จากโจทย์ในแบบฝึกหัดที่ ผ่านมา Stack Slide#40

แบบทดสอบการประยุกต์ใช้งานสแตค เขียนโปรแกรมการแปลงนิพจน์ Infix เป็น Postfix Stack Slide#41

Chapter 4 Stack and Queue 4.2.3 Arithmetic Expression Notation การกำหนดลำดับความสำคัญของการทำงานในการ คำณวนคณิตศาสตร์ 2+3*5 สูงสุด : ยกกำลัง (^) สูงถัดมา : คูณ (*) หาร (/) ต่ำสุด : บวก (+) ลบ (-) ในกรณีเป็นผู้กำหนดความสำคัญโดยใช้วงเล็บ() (2+3)*5 ตัวเลข เรียกว่า Operand

Chapter 4 Stack and Queue Arithmetic Expression Notation โพลิช โนเทชั่น เป็นวิธีการจัดรูปแบบสมการใหม่ การ เขียนเครื่องหมายอยู่หน้าตัวดำเนินการ เช่น 2*3 เขียนเป็น *23 2+3 เขียนเป็น +23 ในกรณีมีเครื่องหมายหลายตัว (5+2)*3 = (+52)*3 = *+523 (5^2)+((4*6)/3) = (^52)+((*46)/3) = (^52)+(/*463) = +^52/*463 การเขียนสมการแบบนี้ไม่ต้องใช้วงเล็บและลำดับความ สำคัญ