การประยุกต์ใช้ Stack การประยุกต์ใช้ Stack

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Bansomdej Chaopraya Rajabhat University
Advertisements

จงเขียนโปรแกรมในการคำนวณหาค่า function ข้างล่างโดยอาศัยหลักการ
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
รายวิชา ง40102 หลักการแก้ปัญหาและการโปรแกรม
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
โครงสร้างข้อมูลสแตก มีลักษณะเป็นรายการในแนวเชิงเส้น(Linear List)รูปแบบหนึ่ง และมีข้อกำหนดให้ชุดปฏิบัติการสามารถเพิ่มและลบรายการเพียงด้านเดียว ซึ่งเป็นด้านบนสุดของสแตก(Top.
Introduction to C Programming
ครั้งที่ 12 การค้นหาข้อมูล (Searching)
สายอักขระและ การประมวลผลสายอักขระ (String and String manipulation)
Type Judgments และ Type Rules. คำศัพท์ที่จะใช้ Type judgment: การตัดสินความถูกต้องของ type สำหรับ expression หรือ statement ใน โปรแกรม – เป็นบทสรุป (conclusion)
โครงสร้างการควบคุมการทำงานของโปรแกรม Program control structures
Functional programming part II
Lecture 13: ฟังก์ชันเรียกตัวเอง
Stack Holidays/seasonal content.
CS Assembly Language Programming
Data structure & Algorithms
ลักษณะการทำงานของ Stack
อสมการ.
ครูรัชฎาภรณ์ ปัญญานวล
แบบทดสอบ 1. สแตก (stack) หมายถึงอะไร
รับและแสดงผลข้อมูล.
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
บรรยายครั้งที่ 2: Stack
Arrays.
Relational Operators by Accords (IT SMART CLUB 2006) by Accords 1.
การเขียนโปรแกรมคอมพิวเตอร์และอัลกอริธึม
CS Assembly Language Programming Period 30.
บทที่ 11 การเขียนโปรแกรมภาษาซี
หน่วยที่ นิพจน์ในภาษา C
ตัวแปร (variable) ตัวแปร เป็นชื่อที่เราตั้งขึ้น เพื่อให้คอมพิวเตอร์เตรียมที่ใน หน่วยความจำไว้สำหรับเก็บข้อมูลที่นำไปประมวลผล การตั้งชื่อตัวแปร ชื่อตัวแปรในภาษา.
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
ตัวดำเนินการ(Operator)
Infix to Postfix มหาวิทยาลัยเนชั่น หลักการภาษาชุดคำสั่ง
Chapter 3 เครื่องหมายและการคำนวณ
ชนิดของข้อมูล ตัวแปร และตัวดำเนินการ
โครงสร้างข้อมูลแบบคิว
ง40208 การเขียนไดนามิกเว็บเพจ ศูนย์คอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
นิพจน์และตัวดำเนินการ
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
Week 12 Engineering Problem 2
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
โครงสร้างข้อมูลทรีและไบนารีทรี (Tree and Binary Tree)
การประมวลผลสายอักขระ
คำสั่งควบคุมขั้นตอน Flow control statements
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
บทที่ 4 นิพจน์ทางคณิตศาสตร์.
กองซ้อน ยอดกองซ้อน (stack).
โครงสร้างข้อมูลแบบกองซ้อน (Stack)
Control Flow.
คำสั่งทำซ้ำ for คำสั่ง for เป็นคำสั่งทำซ้ำในลักษณะ Definite loop คือทราบจำนวนรอบที่แน่นอนในการทำงาน ซึ่งจะใช้ตัวแปร 1 ตัวในการนับจำนวนรอบว่าครบตามกำหนดหรือไม่
Output of C.
Chapter 3 - Stack, - Queue,- Infix Prefix Postfix
Lecture9 Tree อ. วรวิทย์ วีระพันธุ์ เรียบเรียงโดย อ
Recursive Method.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
พื้นฐานการเขียนโปรแกรมด้วย C#
คุณครูพรพิมล ตันติวรธรรม
LAB 2. การเขียนวงจรลอจิกจากสมการลอจิก
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การรับและแสดงผลข้อมูล (Input/Output)
โครงสร้างข้อมูลแบบ สแตก (stack)
Wattanapong suttapak SE, ICT University of Phayao.
CHAPTER 2 Operators.
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
Stack Sanchai Yeewiyom
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
โครงสร้างข้อมูลแบบสแตก (stack)
นิพจน์และตัวดำเนินการ
2 โครงสร้างข้อมูลแบบสแตก (STACK).
ใบสำเนางานนำเสนอ:

การประยุกต์ใช้ Stack การประยุกต์ใช้ Stack 1) ใช้เรียก Function ใน บางภาษา n = 10; printf(“%d %d”, n, n++); //++n หรือ ++n, n 2) Recursive การเรียก function ตัวมันเอง เช่น N! หรือสมการ fibunacy (กบโดดบ่อ) fn = fn-2+ fn-1

การประยุกต์ใช้ Stack Factorial(N) { if (N=1) return (1); else return (N * Factorial(N-1)); } 3) Infix & Postfix Notation Infix : 1) A + B 2) A + B * C

การประยุกต์ใช้ Stack Postfix : 1) A B + 2) A B C * + ขั้นตอนการดำเนินการ (ด้วยมือ) 1) A + B * C A + [ BC* ] A B C * + 2) (A + B) * (C-D) / E * P – 1 [ AB+ ] * [ CD- ] / E * P – 1

การประยุกต์ใช้ Stack [ AB+CD-* ] / E * P – 1 [ AB+CD-* E/ ] * P – 1 Home Work 1) A+B*C/(E-F*G**2)-D 2) –A^B-1/(G+P)*(R+1) >10 || A 3) !(A && !(B<C || D>E)) || F<G

การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack ศัพท์ที่ควรรู้ -   Priority : อภิสิทธ์, ศักดินา, สิทธิ์, ความสำคัญ -  In coming Priority (ICP) -  In stack Priority (ISP) - Operator : + - * / ^ -   Operand : ตัวแปร หรือ ค่าคงที่ เช่น A, B, 5 หลักการ     1. ถ้าเป็น Operand ใส่ลงใน Postfix เลย 2.  ถ้าเป็น Operator และ ICP>ISP ใส่ลงใน Stack

การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack มิเช่นนั้น Pop ออก และไปต่อที่ Postfix จนกว่าจะเป็น จริง หรือ หมด; ถ้าเป็น ‘)’ Pop ออก และนำไปต่อที่ Postfix จนกว่าจะเจอ ‘(‘ ก็ Pop ออกแล้วโยนทิ้งไปเลย 3. ถ้าหมด Infix, ให้ Pop ออกจาก Stack แล้วนำไปต่อที่ Postfix จนกว่าจะหมด 4. ข้อสังเกต        -  การ Implement ยังคงใช้ Array        -  ถ้า Pop ออกเป็น ‘(’ ไม่ต้องนำไปต่อ

Priority ( 0 6 ~ (-) 5 5 ^ (**) 3,4 4 * 2 2 / 2 2 + 1 1 - 1 1 ) - - Symbol ISP ICP ( 0 6 ~ (-) 5 5 ^ (**) 3,4 4 * 2 2 / 2 2 + 1 1 - 1 1 ) - -

การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack ** Symbol หรือเรียกว่า Token เป็น Char. ที่ฉีกออกจาก String ใน Infix Ex A + B * C เป็น Infix ถูกเก็บไว้ใน Array หรือ String จงแปลงให้เป็น Postfix. Token Operator Operand (Postfix) Stack A A + + + B A B + * * + *

การเปลี่ยน Infix เป็น Postfix โดยใช้ Stack Token Operator Operand (Postfix) Stack C A B C + * - - - - - - - - - - - - - หมด - - - - - - - - - - - - - Pop Stack จนหมด สุดท้ายจะได้ A B C * + *** - Stack, Infix, Postfix : Implement ด้วย Array - Operand ในที่นี้ใช้เพียง 1 character

การประยุกต์ใช้ Stack การบ้าน จงแปลง Infix เป็น Postfix โดยอาศัย Stack (A + B)/C^3 - A * D + E / F – P A + B ^ 2 / F –A * (B – D / F ^ (H + W)) Algorithm การแปลง Infix ให้เป็น Postfix ดูได้จากอีก Slide

การประยุกต์ใช้ Stack การคิดค่าของนิพจน์ (Expression) 1)   จาก Infix แปลงเป็น Postfix 2)  Postfix จะอยู่ในรูป String ฉีกมาทีละ Token จากซ้ายไปขวา 3)  ถ้าเป็น Operand ตรวจดูว่ามีค่าในตารางหรือยัง ถ้ายังให้รับค่า แล้วใส่ลงใน Stack ตัวเลข (Stack คนละอันกับ Stack อันก่อน)

การประยุกต์ใช้ Stack การคิดค่าของนิพจน์ (Expression) (ต่อ) 4)  ถ้าเป็น Operator ให้ Pop มาสองค่าจาก Stack แล้วนำมา Operate กัน ตามเครื่องหมาย (ค่าบนอยู่ด้านขวา) ยกเว้น เครื่องหมาย ‘~’ Pop มาค่าเดียวแล้วคูณด้วย –1, นำผลลัพธ์ใส่กลับเข้า Stack 5)  ทำไปเรื่อย ๆ จนหมด String ของ Postfix จะได้ผลลัพธ์ สุดท้าย ที่ก้น Stack

การประยุกต์ใช้ Stack Exam infix : A + B * C จะได้ Postfix : A B C * + Token Op. Operand Stack A A (รับค่า) 10 B B (รับค่า) 10, 2 C C (รับค่า) 10, 2, 3 * * (2*3=6) 10, 6 + + (10+6=16) 16 *** ผลลัพธ์คือ 16

การบ้าน จาก infix : -A - B / A ให้หาค่านิพจน์นี้โดยอาศัย Stack, กำหนดให้ A = 4; B = 20;