--- title: (สำรอง) ฝึก PE โครงสร้างข้อมูลอัลกอริทึม วันที่ 9 ส.ค. 2022 ปลา subtitle: date: วันศุกร์ที่ 26 สิงหาคม 2565 เวลา 09.09 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะได้ยินครูนะ คราวที่แล้วนะคะ เราพูดถึงในเรื่องของเหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะ คราวที่แล้วเราพูดถึงเรื่อง list นะ list ตัวนี้แล้วเราก็ทำข้อสอบไปแล้วนะคะ เรื่องลิสต์ได้ไหมคะ ได้ยินไหมคะ ยังไม่ได้ยินคราวที่แล้วนะคะ เราพูดถึงเรื่อง List นะ ทุกคนจำได้นะคะ อันนี้คือลิสต์นะ ที่ครูยกตัวอย่างมาให้ลิสต์ตัวนี้มีขนาดเท่ากับเท่าไหร่มีขนาดเท่าไหร่ ขนาด คือมีจำนวนเท่าไร มี 5 คนอื่นมีเท่าไรคะ5 โอเค 5 นะคะ ลิสต์ที่เราเห็นในหน้าจอตรงนี้จะมีอยู่ 5 ตัวถูกไหมคะ มีข้อมูลอยู่ 5 ตัวมี 1 มี 2 มี 3 มี 4แล้วก็มี 5 มีทั้งหมด 5 ตัวนะคะ คราวนี้แล้วรู้ได้อย่างไรว่ามันคือลิสต์ เห็นก้ามปูเปิด-ก้ามปูปิดไหมคะ เป็นสัญลักษณ์ที่บอกว่าการเก็บข้อมูลลักษณะแบบนี้ มีชื่อเรียกว่า "ลิสต์" นะคะ จะเก็บค่าของข้อมูลในลิสต์ indexก็คือหมายเลขถูกไหมคะ คือหมายเลขของข้อมูลนี่เราเริ่มต้นที่หมายเลขอะไรเอ่ยพอเราวาดเป็นช่องใช่ไหมคะ ในลิสต์นี่ ถ้าเราลองวาดการจัดเก็บนะ ก็จะเป็น 1แล้วก็จะเก็บข้อมูลลงไปในช่องแบบนี้นะคะหมายเลขช่อง หรือว่าIndex ตัวแรกเราจะเริ่มต้นที่ตรงไหนคะตรงนี้ index เราจะเริ่มที่เราไหร่เอ่ย0 นะ ใช่ไหมคะ 1 2 3 แล้วก็ 4แล้วก็ 4 ก็คือหมายเลขช่อง ถ้าเราวาดรูปให้เป็นรูปสี่เหลี่ยมในการจัดเก็บข้อมูล แล้วเวลาครูเข้าถึงข้อมูลที่อยู่ในลิสต์ ตอนนี้ครูตั้งชื่อลิสต์ตัวนี้มีชื่อว่า xx index 3ตอบเท่ากับเท่าไรเอ่ย indexเป็น 3 ตัวนี้ตอบ 4 ใช่ตรงนี้ต้องตอบว่า 4 นะคะ ทุกคนจำได้นะแล้วถ้า xเราต้องการหลาย ๆ ค่า 2 จนถึง 4จะตอบเท่ากับเท่าไหร่คะ3 กับ...3 กับอะไรเอ่ย 4 ใช่ไหมคือ 3 กับ 4 นะ มันเริ่มต้นที่ 2 ใช่ไหมคะ ก็คือเริ่มต้นที่ 2 ก็คือเริ่มต้นด้วยตัว 3ถึง 4 แล้วก็ลดลงมา 1 ช่อง ก็จะได้ข้อมูลตัวนี้ก็คือ 3 กับ 4คราวนี้ แล้วเราเอาลิสต์มาทำอะไรนะคะ เราเก็บข้อมูลรูปแบบลิสต์ แล้วเราเอามาใช้ทำอะไรนะคะ วันนี้เราจะพูดถึงโครงสร้างอีกแบบหนึ่งที่มีชื่อว่า stack นะStack นะคะ Stack ตัวนี้จะใช้วิธีการเก็บข้อมูลแบบลิสต์นะคะ แล้วลักษณะแบบไหนที่เราจะเรียกว่า "stack" นะคะ มาดูด้วยกันเขาบอกว่า Stackก็คือการที่เราใส่ข้อมูลเข้าไปแล้วก็ดึงออกมานะคะ แล้วข้อมูลที่ถูกใส่เข้าไปใน Stack ก่อน จะถูกเอาออกมาใช้ทีหลัง อันนี้ คือวิธีการเก็บข้อมูลแบบ stack หรือที่เรียกสั้น ๆ ว่าเข้าทีหลังออกก่อนเข้าก่อนออกทีหลัง ความหมายเหมือนกันยกตัวอย่างเช่น ทุกคนเคยไปที่ร้านก๋วยเตี๋ยวไหมคะ ทุกคนเคยไปที่ร้านก๋วยเตี๋ยวนะแล้วเห็นถ้วยก๋วยเตี๋ยวก่อนที่เขาจะเอามาใส่เส้น ใส่เครื่องปรุง ใส่หมูให้เราชามก๋วยเตี๋ยวมันเรียงขึ้นไปแบบนี้ใช่ไหมคะ เวลาแม่ค้าเขาจะเอาชามก๋วยเตี๋ยวมาใส่ให้เราเขาเอาชามที่อยู่ข้างบน หรือชามที่อยู่ข้างล่างเอาชามข้างบนหรือข้างล่างคะ ข้างบนเขาเอาข้างบนมาทำให้เราแล้วเวลาเขาล้างจานเสร็จแล้วนี่ เอาจานมาซ้อนข้างล่างหรือซ้อนข้างบน ซ้อนข้างบนใช่ไหมคะ เพราะฉะนั้น จานที่อยู่บนสุดจะถูกเอาออกมาใช้ก่อนและจากที่อยู่บนสุดนะคะ จะถูกเอาเข้ามาเก็บทีหลัง อันนี้คือรูปแบบของ Stack เช่นนะคะ เช่น ๆ สมมติ ครูมีกระดาษ 1 แผ่นนะครูมีกระดาษอยู่ 1 แผ่น ทุกคนดูนะคะ ครูจะใส่กระดาษแผ่นที่ 2เห็นไหมคะ ครูซ้อนกระดาษแผ่นที่ 2 อยู่ข้างบนครูใส่ ครูใส่กระดาษแผ่นที่ 3 เข้าไปนะคะ แล้วครูก็ใส่กระดาษแผ่นที่ 4 เข้าไปในมือครู เวลาครูจะเอาออกมาใช้ครูจะเอาตัวล่างสุดหรือตัวบนสุดออกไปใช้ตัวบนสุดถูกไหมคะ ครูไม่พยายามจะดึงตัวล่างสุดออกมานะคะ แต่ครูจะหยิบตัวบนสุดอกไปใช้ ซึ่งตัวบนสุดนี่คือ กระดาษแผ่นที่เราใส่ไปล่าสุดนะคะ เราสามารถสรุปได้แบบนี้นะ ข้อมูลที่เข้ามาอยู่ใน Stackตัวแรกจะอยู่ด้านล่างสุดข้อมูลที่หย่อนลงไปใน Stack ตัวแรกจะอยู่ด้านล่างสุดเลยนะคะ ตัวถัดไปก็จะซ้อนขึ้นมาเรื่อย ๆ ข้อมูลที่เข้าไปใน Stack เป็นตัวสุดท้ายนะคะ จะอยู่บนสุด แล้วเวลาเราเอาข้อมูลใน Stack ออกมาใช้งานข้อมูลที่เข้าไปเป็นตัวล่าสุดหรือตัวลำดับสุดท้าย จะถูกดึงออกมาใช้งานก่อน ตัวไหนที่เข้าไปตัวแรกจะถูกเอามาใช้งานเป็นตัวสุดท้ายนะคะ เพราะมันอยู่ล่างสุด เวลาดึงออกมาใช้มันก็ใช้ยาก เราต้องใช้ตัวบน ค่อย ๆ ดึงตัวบนออกไปก่อนคราวนี้เวลาเราเอาข้อมูลใส่ใน Stackเราพูดถึง Stack ก็เหมือนภาชนะนะ Stackเป็นช่องแบบนี้ เป็นช่องสี่เหลี่ยมเป็นช่องในแนวตั้ง ถ้าเราพูดถึง Stack นะดูรูปนี้ก่อน อย่างนี้ มันจะอยู่ในแนวนอนหรือแนวตั้งก็ได้มันจะอยู่ในแนวนอนหรือแนวตั้งก็ได้ถ้าพูดถึง Stack ก็คือเป็นชั้น ๆ เลื่อนขึ้นไปเรื่อย ๆ นะคะ ใน Stackเราทำอะไรได้บ้าง เราใส่ข้อมูลลงไปเราดึงข้อมูลออกมา คราวนี้stack ถ้ามันไม่มีข้อมูลอะไรเลยเราเรียกว่า "Stack ว่าง" คือ มันมีค่าว่าง ๆ ไม่มีตัวอักษรอะไรเลยนะ อันนี้จะเรียกว่าคือ Stack ว่างถ้าเราจะใส่ข้อมูลลงไปใน Stackเราจะมีคำสั่งที่ชื่อว่า Pushคือคำสั่งตัวนี้นะคะ คำสั่ง Push ก็คือใส่ข้อมูลลงไปใน Stack ถ้าต้องการเอาข้อมูลออกจาก Stack เราใช้คำสั่ง Pop นะคะ มีอยู่ 2 ตัวที่ทุกคนต้องรู้จักเมื่อพูดถึง Stack คือ Push กับ Pop Push คือใส่ ถูกไหม ก็คือเอาข้อมูลเข้าไปเก็บส่วน Pop ก็คือเอาออกนะคะ Pop คือ เอาออกคราวนี้มาดูตัวอย่างนะคะ มีแต่ Push กับ Pop2 ตัว เราเริ่มต้น Stack ไม่มีอะไรเลยเป็นค่าว่าง ๆ ถูกไหมคะ เป็น Stack ว่างครูบอกว่าครู Pushคำสั่ง Push Push ค่าอะไร ค่า a เมื่อไรก็ตามที่ใช้คำสั่ง Push ต้องบอกด้วยว่าจะใส่ค่าอะไรด้วยนะคะ เรา Push ค่า a ลงไปเห็นไหม มันก็อยู่ด้านล่างสุดนะคะ ถัดมา ถ้าครูใส่คำสั่งตัวบนก่อน Push b ก็ใส่ b ลงมาเห็นไหมคะ ถัดจาก a ก็คือ b Push cก็อยู่ถัดขึ้นไป และ Push (D) D อยู่บนสุดนะคะ เรียงตรามลำดับของการใส่ข้อมูลเข้าไปคราวนี้อยากจะเอาออกบ้างเอาข้อมูลออกจาก Stack ไปใช้งาน จะใช้คำสั่ง PopPop นะ Popแล้วตามด้วยวงเล็บเปิดและวงเล็บปิด ไม่ต้องใส่ค่าอะไรเพราะเราจะไปดึงค่าที่อยู่ใน Stack ออกมาเราสั่งคำสั่ง Pop เราเอาข้อมูลบนสุดนะคะ Pop ให้เอาข้อมูลบนสุดที่อยู่ใน Stack ดึงออกมาเพราะฉะนั้น เดิมเป็นแบบนี้ ถูกไหมครูใช้คำสั่ง Pop อะไรออกมาเอ่ยตัว D Dog จะออกมา เพราะว่า D Dogอยู่บนสุดนะคะ ถัดมาครู Push Push คือใส่เข้าไปตอนนี้ไม่มี D Dog แล้วนะ ครู Push e เห็นไหมคะ เวลา Pushต้องบอกด้วยว่าเราใส่ค่าอะไรแล้วก็ใส่ตัว e วงเล็บปิด ครู Push ค่า e ลงไปE จะอยู่ด้านบน C เสร็จแล้ว Pushอีกครั้งหนึ่ง f ก็จะอยู่บนสุดนะคะ ถัดมาครู PopPop คือ เอาออก เอาอะไรออก ข้างบนสุดคืออะไร คะเอา F ออก เพราะฉะนั้นข้อมูลจะเหลืออยู่ 4 ตัว ก็คือ a, b, c แล้วก็ eโอเค ถัดมาเราแทน Stack ด้วยอะไรนะคะ อย่างที่ครูบอกว่าลิสต์จะถูกเอามาใช้แทนนะคะ การจัดเก็บข้อมูลใน Stack เราพูดถึง Stack แล้วมันจัดเก็บแบบไหน เราก็ใช้ลิสต์นั่นล่ะในการเก็บข้อมูลลิสต์นะคะ เราสามารถวาดเป็นแนวตั้งหรือแนวนอนก็ได้นะ สามารถวาดเป็นแนวนอนหรือแนวนอนก็ได้ ข้อมูลที่ใส่เข้ามาตัวแรกนะคะ จะอยู่ที่ index 0 ก็คือข้อมูลตัวแรกไล่ไปเรื่อย ๆ จนถึงข้อมูลตัวสุดท้ายStack ที่ครูให้มานี่ ที่เก็บอยู่ในรูปแบบที่เป็นลิสต์นี่มันมีช่องว่างไหมคะ มันมีที่ว่างให้ใส่ได้อีกไหม Stack รูปนี้มีอยู่ 4 ช่องด้วยกัน ทุกช่องมีค่าไหมคะ ทุกช่องมีค่านะมันเต็มหรือยังคะมันมีที่ว่างให้ใส่อีกไหมคะ ไม่มีแล้วอย่างนี้เรียกว่า Stack เต็มแล้วนะคะ คือ ไม่มีช่องว่างให้เราใส่ข้อมูลตัวใหม่ได้แล้วนะคะ แบบนี้เรียกว่า Stack มันเต็มแล้วคราวนี้ เรามี 2 คำสั่งที่พูดถึงนะ Push กับ Pop นะคะPush ก็คือใส่ข้อมูลลงไปใน Stackเช่น ครูมี Stackอย่างนี้ใช่ไหม มันมีที่ว่างให้ครูใส่ข้อมูลได้ไหมคะ มี มันมีที่ว่างให้ครูใส่ข้อมูลได้ ครูก็เลยสั่งคำสั่ง Push 3 ก็คือเอาข้อมูล 3 นี่ไปหย่อนลงใน Stack มันจะเอามาใส่ช่องนี้ช่องที่ 1 หรือช่องที่ 2 คะ ช่องที่ 1ถูกไหม ก็ไล่ลำดับลงมาเรื่อย ๆ มันอยู่ช่องนี้แล้ว ข้อมูลล่าสุดอยู่ช่องนี้ เพราะฉะนั้นเวลาเราหย่อนลงไปมันก็ไหลลงไปจนถึงตัวสุดท้ายที่มันสามารถจะใส่ได้ ก็คือในช่องตรงนี้ ก็คือจะเอา 3มาใส่แล้วเราใส่ด้วยคำสั่งอะไรเราใช้ List นะคะ ในการจัดเก็บข้อมูล เราใช้ลิสต์ในการจัดเก็บข้อมูลเพราะฉะนั้น คำสั่งของการเพิ่มข้อมูลลงไปใน Stack ก็คือใช้คำสั่งAppend ได้เลย เพราะ Appendเป็นคำสั่งของการเพิ่มข้อมูลลงไปในลิสต์นะคะ ใส่ชื่อ .แล้วตามด้วยคำสั่ง Append (d) วงเล็บเปิดใส่ค่าข้อมูลตัวใหม่แล้วก็วงเล็บปิดถัดมาPopคือ เอาออกนะคะ คือ Pop คือ เอาออกก่อนที่เราจะเอาข้อมูลออกนี่เราต้องเช็กก่อนว่า Stack เรานี่มีข้อมูลอยู่ไหม ถ้า Stackมันไม่มีข้อมูลอยู่เลยเราจะเอาอะไรออกมาได้ไหม ไม่ได้เพราะมันไม่มีข้อมูลอะไรให้เราดึงออกมาเพราะฉะนั้น อันดับแรกนี่ เราต้องเช็กก่อนมันมีข้อมูลอยู่ไหมนะคะ มันมีข้อมูลอยู่ไหมถ้ามันไม่มีข้อมูลอยู่เลย เราจะบอกว่ามันคือ Stack ว่าง เราไม่สามารถทำคำสั่ง Popได้นะคะ แต่ถ้าStack ไม่ว่าง เช่นStack ไม่ว่างนะ มันมีข้อมูลอยู่ตั้ง 3 ตัวเราใช้คำสั่ง Popข้อมูลอะไรจะถูกดึงออกมา มีอยู่ 3 ค่านี่ข้อมูลที่จะเอาออกมาจาก Stackก็คือข้อมูลค่าอะไรเอ่ยอะไรคะ 1 หรือ 2หรือ 3 3 ใช่ไหมเอาตัวที่อยู่บนสุดตัวล่าสุดน่ะ ตัวล่าสุด ถูกไหมคะ ถ้าอยู่ในแนวนอนตัวล่าสุดจะอยู่ด้านขวาถ้าเป็นแนวตั้งตัวล่าสุดจะอยู่ข้างบนใช่ไหมคะ เลข 3 จะถูกดึงออกมานะคะ หลังจากที่เราใช้คำสั่ง Popโอเคถัดมา ตัวนี้จะเป็นคำสั่งที่เราใช้เขียน เช่นเราจะเช็กว่า Stack นั้น เป็น Stack ว่างหรือเปล่า เราก็ดูขนาดของ Stack ใช่ไหมคะ หาขนาดของ Stack ว่ามันมีขนาดเท่าไหร่ ถ้าขนาดมันมีค่าเป็น 0แสดงว่ามันเป็น Stack ว่าง คือไม่มีข้อมูลอยู่เลยก็ไม่ต้องทำอะไรใช่ไหมคะ แต่ถ้ามันไม่ใช่ Stack ว่าง เราก็จะดึงค่าที่อยู่บนสุดออกมาคราวนี้อันนี้จะเป็นโค้ด เป็นโปรแกรมที่เราจะเขียนทั้งหมดเดี๋ยวครูบอกอีกทีข้างหลังนะคะสมมติว่าครูอยาก...คราวนี้ดูนะคะ ครูมี Stack มาให้ Stack ครูมีกี่ช่องคะมี 4 ช่อง ในแนวตั้งถูกหรือเปล่าเป็น Stack ในแนวตั้ง มี 4 ช่องนะคะ ตัวแรก ตัวแรกน่ะ จะอยู่ด้านฐาน จะอยู่ด้านล่างสุดนะ เวลาเราหย่อนข้อมูลลงไป ตัวแรกจะลงมาอยู่ช่องล่างสุด แล้วค่อยขยับไปช่องถัดไป ๆ นะคะ จะซ้อนขึ้นไปข้างบนนะ ถ้าเป็น Stack ในแนวตั้งคำสั่งอย่างที่บอก เรามีแค่ 2 คำสั่งนะ มีแค่ Push กับ Popใช่ไหมคะ Pushใส่ข้อมูลกับ Popเอาข้อมูลออก คือ ใส่กับเอาออกนะคะ คราวนี้ดูPush 5 เห็นไหมคะ ครูใส่หมายเลขช่องก่อนนะอันนี้เป็นหมายเลข 1, 0, 1, 2, 3 นะเราจะได้เข้าใจตรงกัน โอเคนะคะ มีหลายเลขช่องแล้วนะ มี 0 1 2 3ครูสั่ง Push 5 5 จะไปอยู่ที่ช่องไหนคะ ช่องไหนเอ่ยช่องหมายเลขอะไร ครูหย่อน 5ลงไป มันก็จะไหลลง มาอยู่ที่ช่องไหนคะช่อง 0 เห็นไหม พอครูหย่อน 5 ลงมามันก็ไหลลงมาเรื่อย ๆ จนมาอยู่ที่ช่อง 0 เสร็จแล้วครูสั่งคำสั่ง Push10 เดิมมันมี 5 อยู่แล้วนะแล้วครูสั่ง Push 10 เพราะฉะนั้น 10 จะมาอยู่ที่ไหนคะ10 จะมาอยู่ที่...1 ถูกไหมคะ ก็หย่อน 10 ลงมานะถัดมา เดิมเดิม มี 5 กับ 10 แล้ว ครูเขียนเรียบร้อยก่อนนะคะ ใส่ที่ช่อง 0 กับช่อง 1 ครูสั่ง Push 15 ไปอยู่ที่ช่องไหนคะ 2 ใช่ไหมเห็นไหม พอ Push ข้อมูลลงไปคราวนี้ จากรูปนี้ ครูสั่ง Popเอาอะไรออกมาจากรูปนี้ พอครูสั่ง Pop ปุ๊บ เอาอะไรออกมาคะเอาอะไรออกมาเอ่ย15 ใช่ไหม เอาตัวบนสุดเลือกเราเลือกตัวบนสุดออกมาใช่ไหมคะ เพราะฉะนั้น 15 จะถูกดึงออกมาข้างนอกเห็นไหมคะ เพราะฉะนั้น ใน Stack จะเหลือแค่ 10 กับ 5 ครูสั่ง Pop อีกทีหนึ่งเอาอะไรออกมาคะ เดิมมี 5 กับ 10 คราวนี้เอาอะไรออกมา ครูสั่ง Pop ปุ๊บ อะไรออกมาคะ 10 ออกมาเห็นไหม 10 ไม่เหลือแล้ว เพราะฉะนั้น ตอนนี้ ใน Stack เราเหลือกี่ค่าคะค่าเดียว คือเลข 5จดตัวนี้ไว้ในกระดาษให้ครูหน่อย เดี๋ยวครูจะให้ทำแบบฝึกหัดนะคะ มีกระดาษไหมคะ มีใครไม่มีกระดาษไหมคะ ครูมีกระดาษมาแจก มีไหมคะ มันจะมีเส้นคราวนี้นะคะ ครูมีโจทย์มาให้ แล้วก็มีคำสั่งมาให้ทำเหมือนเดิมเลย ใช่ไหมคะ แต่ครูมีตัวเริ่มต้นให้ ครูมีให้อยู่แล้ว อยู่ใน Stack คือ 5ใช่ไหมคะ อันแรก เราหย่อนเลข 2 ลงไป อันที่ 2 เขียนของเดิมก่อนใช่ไหมคะ แล้วค่อยหย่อนเลข 7 ลงไปถัดมา หย่อนเลข 1 Popคือ เอาออกนะ คือ เอาออก แล้วบอกครูด้วยว่าข้อมูลที่เอาออกมาคืออะไร เสร็จแล้วก็มีคำสั่งตัวสุดท้าย คือ Push เลข 7 ลงไปลองทำดูนะคะ เพราะฉะนั้น แต่ละข้อมันจะต่อเนื่องกันไปนะคะ ทำตัวแรก ข้อที่ 1 เสร็จ เอาข้อมูลนี่ มาตั้งต้นไว้ก่อน แล้วเราค่อย Pushเลข 7 ลงไป เดี๋ยวเราทำด้วยกัน 1 ข้อนะอันนี้คือ Push เลข 2 คือ หย่อนเลข 2ลงไปข้อที่ 2 ครูจะใส่เลข 7 เพราะฉะนั้น ครูต้องใส่ข้อมูลเดิมก่อนนะคะและก็หย่อนเลข 7 ลงไป ทำต่อให้ครูหน่อยอีก 3 อันคราวนี้เดี๋ยวเรามาดูเฉลยพร้อมกันนะคะข้อ 3 นะคะ ครูสั่ง Push 1 ก็คือใส่เลข 1 ลงไปใน Stack เดิมเอาของเดิมยกมาก่อนนะ อย่าเพิ่งใส่นะ ของเดิมมี 3 ค่านะ เขียนก่อนนะคะ เขียนค่าเดิมก่อน ใส่ค่าเดิมมาก่อนนะคะ เสร็จแล้วครูสั่ง Push 11 จะอยู่ด้านบนเลข 7ใช่ไหมคะ จากนั้นครูสั่ง Pop Pop คือ เอาออกบนสุดคืออะไร คือ 1 ใช่ไหมคะ เพราะฉะนั้น เอาอะไรออก เอา 1 ออก เพราะฉะนั้น ที่เหลือ ก็คือ 5, 2, 7 ใช่ไหมคะ 1จะถูกเอาออกมาใช่ไหม เพราะฉะนั้น ข้อมูลที่นำออกจาก Stack ก็คือ 1นะคะ ครูสั่ง Push อีกครั้งหนึ่งทำอย่างไรก็เอาของเดิมที่มีอยู่ใน Stack เขียนก่อนเพราะฉะนั้น กรณีที่ Push ข้อมูลลงไปใน Stack ยกของเดิมมาก่อนเสร็จแล้วใส่ตัวเลขที่ครูสั่งลงไป ก็คือ 7 7 ก็จะอยู่ด้านบนนะคะ อันนี้ คือ Stack ที่ได้หลังจากที่เราใช้คำสั่งทั้งหมด 5 คำสั่งโอเคถัดมาครูเปลี่ยนนะ จากแนวตั้งเป็นแนวนอนนะคะ ถ้าครูลองเปลี่ยน Stack เป็นแนวนอนบ้าง คราวนี้ ครูลองเปลี่ยน Stack เป็นอีกรูปแบบหนึ่งเป็นแนวนอนบ้างนะคะ และครูมีตัวเลขที่อยู่ใน Stack ไว้ให้ คือ 3แล้วก็ 1 ถูกไหม ตัวแรกจะอยู่ซ้ายสุด ใช่ไหมคะ ถัดมาก็จะเป็นตัวที่ 2แล้วครูใช้คำสั่ง Push 5 ข้อที่ 2ครู Push 6 เสร็จแล้วครู Pop นะคะ ลองทำสิ คราวนี้นะคะ มาดูเฉลยด้วยกันครูสั่ง Push 5 แสดงว่าครูกำลังจะใส่ข้อมูลลงไปใน Stack คือเลข 5 นะคะ ครูก็เอาเลข 5 มาหย่อนลงเลยนะ เอาเลข 5 มาหย่อนเลยนะคะ ถัดมา ครูใช้คำสั่ง Pushครูใช้คำสั่ง Push ทำอย่างไร เอาของเดิมมาของเดิมยกลงมาก่อน ยกของเดิมมาใส่ก่อนนะคะ ก็จะมี 3,1 แล้วก็ 5จากนั้น เรา Push ค่าใหม่ ใส่ค่าใหม่ลงไป ก็คือ 6โอเคนะ ใส่ค่า 6 ก็คือค่าใหม่ลงไปใน Stackเสร็จแล้วครูใช้คำสั่ง Popก็คือเอาออก ก็คือเอาตัวล่าสุดก็คือที่อยู่ด้านขวา เอาออกเพราะฉะนั้น ค่าที่ถูกเอาออก ก็คือเลข 6เห็นไหมคะ เอาเลข 6 ออกมาแล้วเราก็ยกตัวที่เหลือลงมาใส่ ก็จะเหลือเป็น3, 1 แล้วก็ 5 นะคะ คราวนี้นะคะ มาดูต่อ กระดาษที่ครูแจกเอาวางไว้ก่อนนะคะ อย่าเพิ่งใช้ เรายังไม่ใช้ตอนนี้ เราใช้ Stack ทำอะไร เมื่อกี้เราพูดถึง Stack ไปแล้วนะ เข้าก่อนออกทีหลังนะคะ ข้อมูลไหนเข้าก่อน จะถูกเอาออกทีหลังแล้วเราใช้ Stack ทำอะไรบ้าง เราใช้ Stack มาทำอะไรบ้าง ทุกคนบวกเลขเป็นใช่ไหม ทุกคนบวก ลบคูณ หารสมการทางคณิตศาสตร์ได้ Stack จะถูกเอามาใช้ในการหาผลลัพธ์ของสมการคณิตศาสตร์บวกเลข บวกลบเลขนะคะ คราวนี้ ก่อนที่จะไปดูรูปแบบของการใช้ Stack แล้ว Stack มันเกี่ยวข้องอย่างไรกับการบวก ลบ คูณ หาร นะคะ เรามาดูรูปแบบก่อนว่าเราใช้ Stack เพื่อเป็นนิพนธ์ก็คือลักษณะของสมการมีอยู่ 3 รูปแบบ รูปแบบแรกก็คือ Infixบวก ลบ คูณ หาร จะอยู่ระหว่างตัวเลขนะคะ อันนี้คือ Infix นิพจน์ตัวที่ 2ก็คือ Prefixเครื่องหมาย บวก ลบ คูณ หาร จะอยู่ด้านหน้าและตัวสุดท้าย คือPostfix เครื่องหมายจะไปอยู่ด้านหลังของตัวเลข AC อันนี้ คือ ตัวเลขนะคะ เราจะแทนด้วยตัวเลขใด ๆ คราวนี้ดูนะคะ ในการคำนวณทางคณิตศาสตร์นะเวลาเราเจอนะคะ การบวก ลบที่มันมีมากกว่า 2 ตัวเลขเช่นแบบนี้5 + 2 x 2 มันมีตัวเลขมากกว่า 2 ตัวนะคะ แล้วเราจะบวกลบเลขอย่างไรเรามีลำดับความสัมพันธ์ของเครื่องหมาย เจอวงเล็บก่อน ทำในวงเล็บใช่ไหมคะ เราเจอในวงเล็บ เราบวกลบเลขนี่ในเครื่องหมายวงเล็บก่อนจากนั้น ลำดับความสำคัญตัวที่ 2 ที่ต้องทำก่อน ก็คือเครื่องหมายยกกำลัง เช่น 2 ยกกำลัง 2 ถูกไหมคะ 3 ยกกำลัง 2 อย่างนี้เป็นต้นเจอเลขยกกำลังเสร็จแล้วเราจะคำนวณเครื่องหมายไหนต่อไป คูณกับหาร คูณกับหารมีลำดับความสำคัญเท่ากันนะคะ มีลำดับความสำคัญเท่ากัน ตามด้วยบวกกับลบบวกกับลบก็มีความสำคัญเท่ากัน แต่จะทำหลังการทำเครื่องหมายคูณกับหารนะคะคราวนี้มาดูโจทย์ ครู 2 ตัวนี้เป็นตัวเลขตัวเดียวกันเลย 5 + 2x 2 ตัวแรกครูมีวงเล็บเปิดกับวงเล็บปิด โจทย์ตัวที่ 2 ครูไม่ได้ใส่วงเล็บไม่มีวงเล็บนะคะ ครูไม่มีวงเล็บนะคราวนี้มาดูข้อแรกก่อนอย่างที่บอกว่าถ้าเจอวงเล็บวงเล็บเปิด วงเล็บปิด ทำข้างในวงเล็บก่อนเพราะฉะนั้น เราเอาอะไรบวกกันก่อน 5 + 2เป็นเท่าไรคะ เป็น 77 แล้วคูณด้วย 2 เท่ากับเท่าไหร่เท่ากับเท่าไหร่คะเท่ากับ 14ตัวเลขเท่ากับ 14 ตัวแรกนะคะ เท่ากับ 14แล้วมาดูข้อ 2 ครูตัดวงเล็บทิ้งไป 5 + 2 x 2เราทำตรงไหนก่อน ย้อนกลับขึ้นมาดูข้างบน ระหว่างบวกกับคูณ อะไรสำคัญมากกว่ากันอะไรมีความสำคัญมากกว่ากันคะ บวกกับคูณ ใช่คูณข้างบนเห็นไหมคะ ว่า 1 นี่มีความสำคัญมากสุดนะ 2. ความสำคัญรองลงมาตัวนี้ เบอร์ 3 ความสำคัญรองลงมา เบอร์ 4 ความสำคัญน้อยสุดเลยเพราะฉะนั้น คูณกับบวกอะไรมีความสำคัญมากกว่ากันคูณใช่ไหมคะ อันนี้คือมากสุดมากสุดเพราะฉะนั้น เราทำอะไรก่อน 5+2 หรือเอา 2 x 2 2 x 2เป็น 4 4 + 5 เป็นเท่าไหร่คะเป็น 9โอเคถ้าครูเขียนใหม่เลข 2 หรือ เดี๋ยวนะ โจทย์ข้อนี้ 5 คูณ 2เท่ากับ 12 คนอื่นได้ไหมคะ เห็นไหม ตัวเลขเดียวกันเลยสลับแล้วก็คเครื่องหมายมีเหมือนกันเลยแค่สลับตำแหน่งค่าก็เปลี่ยนแล้ว ทันไหมคะ คูณกับบวก แสดงว่าทำคูณก่อน 5 คูณ 2 เป็น 10 10 + 2 เป็น 12 โอเคเอาตัวนี้บวกกันก่อน... คูณกันก่อนนะคะ 5 x 2 เป็น 10 แล้ว 10 ค่อยมาบวกกับ2 โอเค จะเห็นว่า อันนี้คือเราคิดใช่ไหม อันนี้คือเราคิด แล้วเราจะสงั่งให้คอมพิวเตอณ์เข้เข้าใจแบบที่เราคิดเมื่อกี้ได้อย่างไรรู้ว่าถ้าเจอคูณนี่ต้องทำคูณก่อนเลยเจอวงเล็บเปิด ต้องทำเปิดนังให้คอมพิวเตอร์นี่สามารถคำนวณให้ได้แบบที่เราคำนวณเมื่อกี้เราใช้Stack เข้ามาช่วยในการคำนวณนะคะ เราใช้ Stack เข้ามาในการคำนวณวิธีการทำแบบไหนมาดูวิธีการนะคะ เรามีตัวเลขอยู่ชุดหนึ่งเราต้องการหาค่าออกมา เช่น ครูมีตัวเลขชุดนี้ล่ะ ครูสั่งให้คอมพิวเตอร์คำนวณ จะต้องได้ผลลัพธ์ 9 แบบที่เราคิดเมื่อกี้คอมพิวเตอร์จะคิดแบบไหนนะคะ 1 เราต้องสร้างตารางแบบนี้ก่อน มี 3 ช่อง ช่องแรก คือ ใส่ Input ก็คือข้อมูลนำเข้า Stack แล้วก็ผลลัพธ์นะคะ เรามีวิธีการทำนี่ 2 ช่วงด้วยกัน ช่วงที่ 1 ต้องแปลงนิพจน์ระคแบบ Postfix ปไว้ข้างหลังให้หมดก่อน เอาเครื่องหมายไปไว้ข้างหลังให้หมดก่อนนะคะ แล้วค่อยคำนวณออกมาเป็นตัวเลข ผลลัพธ์เรามี 3 ช่องนะ ทุกคนต้องตีตาราง 3 ช่องอันแรกเขียนว่า Input Stack แล้วก็ Output นะคะ ถัดมาขั้นตอนวิธีการแปลงจาก Infix ให้เป็น Postfixทุกคนมีชีตที่ครูให้ แบบนี้เลยก็คือสิ่งที่อยู่บนสไลด์นะคะ ครูพรินต์ออกมาให้เรามีอยู่ทั้งหมด 7 ขั้นตอนด้วยทั้งหมด 7 ขั้นตอนด้วยกันมีทั้งหมด 7 ขั้นตอนด้วยกัน ครูให้เวลา2 นาที อ่าน 7 ขั้นตอนนให้อ่านในกระดาษนะ หรือจะอ่านจากหน้าจอก็ได้ให้เวลา 2 นาทีอยากให้อ่านก่อนคราวนี้เดี๋ยวมาดูพร้อมกันเรามีอยู่ทั้งหมด 7 ขั้นตอนนะคะ เดี๋ยวเราจะลองฝึกนะ แล้วก็เทียบไปทีละขั้นขั้นที่ 1 นะคะ กำหนดให้ Stack ว่างก็คือวาดตาราง 3 ช่องนี้ ใช่ไหมคะอันดับแรก สร้าง Stack ว่าง ก็คือวาด3 ช่องนะคะ กี่แถวยังไม่รู้นะแต่มีอยู่ 3 คอลัมน์นะคะ 3 ช่อง นี่คืออับดับแรกอันดับที่ 2อ่านข้อมูลจากซ้ายไปขวา ก็คืออ่านข้อมูลทีละตัวใช่ไหมคะ เลข 5เครื่องหมายบวก เลข 2 เครื่องหมายคูณ อันนี้คืออ่านจากซ้ายไปขวาทีละตัวนะคะ แล้วก็อ่านเข้ามาทีละตัวสมมติครูใช้ตัวเลขนะคะ ตัวเลขนะคะ เช่นอ่านข้อมูลจากซ้ายไปขวา ตัวแรก ก็คือ5 ใช่ไหม อ่านจากซ้าย ซ้ายก็คือตัวแรกนะคะ ก็คือเลข 5 ถัดมา ขั้นถัดมา เป็นขั้นที่ 3ถ้าข้อมูลที่อ่านเข้ามาเป็นตัวเลข เช่น เลข 5 ใช่ไหมคะ ข้อมูลที่เราอ่านเข้ามา5 เป็นตัวเลขใช่ไหม ใช่ เอามันไปไว้ที่ไหน เอามันไปไว้ที่ช่องผลลัพธ์ ก็คือช่องสุดท้ายก็คือช่องนี้ใช่ไหมคะ ช่อง Outputถัดมา ถ้าตัวที่เราอ่านเข้ามานี่มันไม่ใช่ตัวเลข แสดงว่ามันต้องเป็นเครื่องหมายทางคณิตศาสตร์อะไรสักอย่างหนึ่งนี่ล่ะ เช่น เครื่องหมายบวก ใช่ไหมคะ เครื่องหมายบวกเราอ่านเครื่องหมายบวกเข้ามาแล้วเขาให้เราเช็กก่อน ว่าแล้วใน Stack มันมีค่าอยู่หรือเปล่า Stack ก็คือช่องนี้ ช่องที่ 2 นี่ มันมีค่าอยู่ไหม ถ้ามันไม่มีค่าอยู่เลยก็หย่อนมันลงไปใน Stackแต่ถ้าใน Stack มันมีข้อมูลอยู่แล้ว เราจะต้องทำการเปรียบเทียบก่อน ว่าข้อมูลที่เราอ่านเข้ามานี่มันมีค่ามากกว่า หรือน้อยกว่าตัวที่อยู่ในStackถ้ามันมากกว่าถ้ากรณีที่ตัวที่เราอ่านนี่ มีค่ามากกว่าก็หย่อนลงไปใน Stack ได้เลยถ้าสิ่งที่เราอ่านเข้ามา มันมีค่าน้อยกว่าสิ่งที่อยู่ใน Stackให้เอาเครื่องหมายใน Stackออกไปไว้ที่ผลลัพธ์แล้วเอาเครื่องหมายตัวที่เราอ่านเข้ามาหย่อนลงไปใน Stackโอเค ถ้าเราอ่านจนครบข้อมูลทุกตัวแล้ว เรายังมีข้อมูลอยู่ใน Stack เราก็ดึงมันออกมา ก็คือ Pop มันออกมานะคะ เป็นผลลัพธ์ มาดูตัวอย่างนะ ทุกคนถือ... ดูกระดาษที่เป็นขั้นตอนด้วยนะคะ โอเคโจทย์ที่ครูให้ ทุกคนดูที่หน้าจอนะคะ ครูมีโจทย์มาให้นะคะ ก็คือ 5 + 2x 2 อันดับแรกครูต้องทำอะไร ครูต้องวาดตารางก่อนอันดับแรกวาดตาราง 3 ช่องวาดตาราง 3 ช่อง จำนวนแถวก็เอาข้อมูลตัวเลขกับเครื่องหมายมาใส่ทีละบรรทัด 5 บรรทัดที่ 1 ถูกไหมคะ บวกบรรทัดใส่เลข 2 บรรทัดถัดมาใส่เครื่องหมายคูณแล้วก็ใส่เลข 2เราก็จะวาดตารางเรียบร้อยแล้วนะคะ จำนวนแถวขึ้นอยู่กับจำนวนข้อมูลในโจทย์ว่ามีกี่ตัว ก็สร้างแถวใส่ข้อมูลให้เลย เรากำหนดstack ว่างแล้วใช่ไหมคะ ถัดมา ต้องอ่านข้อมูลทีละตัว เราต้องอ่านข้อมูลทีละตัว จากซ้ายไปขวา ตัวแรกคืออะไรคะคือ 5 ใช่ไหม ครูเขียนเรียงแล้ว5 บวก... มี 2 มีคูณ แล้วก็มี 2อันนี้คือข้อมูลที่เราอ่านจากซ้ายไปขวาตัวแรก เป็นตัวเลขใช่ไหมคะ มันเป็นตัวเลขแล้วมันตรงกับข้อไหนในขั้นตอน ข้อ3 ที่บอกว่าถ้าเป็นตัวเลขให้เอาไปไว้ที่ไหน เอาไปไว้ที่ผลลัพธ์ ถ้าเป็นตัวเลขเอาไปไว้ที่ผลลัพธ์ได้เลยถัดมา เจอเครื่องหมายบวกนะคะ เจอเครื่องหมายบวก ตอนนี้ใน Stack มันไม่มีค่าอะไรเลย ทำอย่างไรคะ ก็ใส่ได้เลย ใส่เครื่องหมายบวกลงมาได้เลย ถ้ามันเป็น Stack ว่าง เห็นไหมคะ ตัวบนเป็น Stack ว่าง เราก็เอาบวกใส่ได้เลย แล้วก็เขียน 5 ลงมาเหมือนเดิมนะคะ ยก 5 ลงมาเหมือนเดิมนะดู ดูพร้อมครูก่อนนะ เดี๋ยวครู...จะถ่ายรูปเอาขึ้น Classroom ให้ถัดมา เลข 2 ใช่ไหมคะ เลข 2 มันเป็นอะไรมันเป็นตัวเลข เพราะฉะนั้น ต้องเอาไปไว้ที่ไหนไปไว้ที่ผลลัพธ์ตรงกับข้อ 3 ในขั้นตอนนะเอา 2 มาไว้ที่ Output แต่ต้องเขียนหลัง ก็คือเขียนต่อจากเลข 5นะคะ ถัดมายกเครื่องหมายบวกลงมาด้วยนะ เพราะมันอยู่ใน Stack นะคะ เรายังไม่ได้เอาอะไรออก หรือเอาอะไรเข้าเพิ่มถัดมา เป็นเครื่องหมายคูณ ใน Stackเรามีเครื่องหมายบวกอยู่แล้วใช่ไหมคะ ใน Stack นี่เรามีเครื่องหมายบวกอยู่แล้ว ตัวที่เราอ่านเข้ามา คือ คูณ เราจะต้องทำการเปรียบเทียบค่าที่เราอ่านเข้ามาใหม่ คือ คูณ กับตัวเดิมที่อยู่ใน Stackคือ บวก เราเปรียบเทียบ ถูกไหมคะ กับตัวบนสุด คือ เครื่องหมายบวก สิ่งที่เราพบคืออะไร คูณมีค่ามากกว่าบวก ให้ทำอย่างไรก็เอาคูณหย่อนลงมาได้เลยใส่คูณลงไปใน Stack ได้เลยนะคะ ผลลัพธ์ก็เป็นเหมือนเดิม ตัวถัดมาคือเลข 2 เลข 2 มันเป็นตัวเลขใช่ไหม เอามาไว้ที่ผลลัพธ์นะคะ เอามาต่อด้านหลังเสร็จแล้วเราพบว่าไม่มีข้อมูลแล้ว ข้อมูลมันหมดแล้วน่ะข้อมูลมันหมดแล้วนะคะ แต่สิ่งที่เราเจอคืออะไร ใน Stack ยังมีข้อมูลอยู่เพราะฉะนั้น ต้องดึงค่าออกจาก Stack ให้หมด เราเอาอะไรออกมาก่อนคะ ตัวล่าสุด ตัวบนสุด คือ คูณเอาคูณมาต่อท้ายที่ Output หรือว่าผลลัพธ์ เอาคูณออกมาแล้วมันเหลืออีกตัวหนึ่งใช่ไหม ก็เอาบวกออกมาอันนี้คือผลลัพธ์ ผลลัพธ์สุดท้ายนะคะ จะอยู่ในรูปแบบของ Postfix คือ แปลงนิพจน์ ได้ไหมคะ เดี๋ยวเรามาทำพร้อมกันอีกตัวหนึ่ง3 + 5 x 1 ครูมีโจทย์ใช่ไหมคะ 3 + 5 x 1 ผลลัพธ์เท่ากับเท่าไหร่เอ่ย ตอบเท่ากับ... อันนี้ตอบเท่ากับเท่าไหร่เอ่ย8 ข้างหลังตอบอะไร ได้เท่ากับอะไรคะ คำตอบก็คือ 8 เอา 5 x 1 ก่อนได้เท่าไหร่ ค่อยบวกกับ 3 5 1 เป็น 5 แล้วบวกกับ 3 ได้เท่ากับ8 เดี๋ยวเราจะมาทำ จะมาแปลงนิพจน์กันนะคะ แล้วเราจะมาหาค่าว่ามันได้ 8 ได้อย่างไรอันนี้เรากำลังจะมาแสดงวิธีทำค่าว่า 8 มันมาจากไหน เราสั่งให้คอมพิวเตอร์มันคิดแบบไหน อันดับแรก วาด Stack ว่างครูบอกว่าต้องมีคอลัมน์อยู่ 3 คอลัมน์ ครูมี 3 คอลัมน์แล้ว มีInput, Stackแล้วก็ Outputจากนั้นครูวาดตารางเลยโดยเอาข้อมูลมาใส่ในแต่ละแถวเลยนะคะ ครูอ่านเข้ามาทีละตัว จากซ้ายไปขวา ตัวแรก คือ 3 ถัดมา คือเครื่องหมายบวก เลข 5 นะคะ เครื่องหมายคูณแล้วก็เลข 1 อันนี้ครูวาดตารางเสร็จแล้วทุกคน วาดตามครูก่อนเลย เราวาดตารางเปล่า ๆ แบบนี้ก่อนนะคะ คอลัมน์แรก หรือช่องแรก เอาตัวเลขกับเครื่องหมายมาเรียงใส่ทีละบรรทัดคราวนี้พอทุกคนลอกตารางเสร็จแล้วใช่ไหมคะ เดี๋ยวเราจะมาทำด้วยกันเริ่มต้นตัวแรกใช่ไหมคะ ทุกคน เริ่มต้นตัวแรกมันเป็นตัวเลขใช่หรือเปล่า เพราะฉะนั้นเอาไปไว้ที่ช่องทางไหนทางขวาใส่ก่อนเลข 3 ใช่ถูกต้องถัดมาเป็นเครื่องหมายบวกใช่ไหมคะ ตรงนี้มีอะไรไหม ไม่มีเพราะฉะนั้น เอา + มาใส่ตรงนี้ได้เลยไหมถ้าเป็นเครื่องหมาย เอาลงที่Stack เพราะฉะนั้นตอนนี้ Stackก็ใส่เครื่องหมายบวกได้เลย3 ยกลงมาเหมือนเดิมนะคะ เหมือนตรง Output ยก 3 ลงมาเหมือนเดิมถัดมาเลข 5 เป็นตัวเลขเอาไว้ที่ไหน เอาไว้Output ใช่ไหม ฉะนั้น เอาของเดยกลงมาก่อน คือ 3 เราเอาเลขอะไรมาใส่เลข 5 นะคะ อันนี้ยกลงมาไหม เครื่องหมายบวกยกลงมาด้วยนะยกลงมาด้วยเสร็จแล้ว ถัดมาเครื่องหมายคูณคูณต้องเอามาลง Stack ใช่หรือเปล่า แต่คูณมันมากกว่าบวกใช่ไหม คูณกับบวก อะไรมากกว่ากัน คูณ เพราะฉะนั้นเราก็ใส่ลงไปใน Stack ได้เลย โดยโดยเอาของเดิมลงมาก่อนแล้วก็ใส่เครื่องหมายคูณอันนี้ยกลงมาเหมือนเดิมไหม ยกลงมาเหมือนเดิมตรงสุดท้าย 1 เอาไว้ที่ไหนOutput แต่มีของเดิมอยู่แล้วใช่ไหมยกของเดิมลงมาก่อน แล้วก็ใส่เลข 1อันนี้ยกลงมาเลยได้ไหม ได้นะคะ ใน Stackเราก็ยกเครื่องหมายออกมา เครื่องหมายนะคะ บวกกับคูณเสร็จแล้วผลลัพธ์ที่ได้ ตอนนี้ข้อมูลหมดแล้วใช่ไหมใน Stack ยังมีอยู่ ใน Stack ยังมีอยู่ ต้องเอาออกมา ต้อง Pop ออกมา ใช่ไหมคะ ยกตรง Output ของเดิมลงมาก่อน Popบวกกับคูณเอาอะไรออกมาก่อนคูณ แล้วตามด้วยบวก เห็นไหมคะ เอาตัวแรกออกมาก่อน แล้วเอาตัวที่ 2ออกมาเดี๋ยวต่ออีกนิดหนึ่งนะคะ เดี๋ยวเขียนตรงนี้ให้เสร็จก่อนเรายังไม่ได้ค่าเลข 8 เลยจะทำอย่างไรให้ได้เลข 88ถัดมา เสร็จหรือยังคะเดี๋ยวรอเพื่อนแป๊บหนึ่งนะโอเค เราได้ผลลัพธ์แล้วใช่ไหมคะ จากตารางที่เราทำใน Stackพอได้ค่าผลลัพธ์แล้วนี่ คือ ตัวนี้351 คูณ บวกมาหาผลลัพธ์ต่อนะคะ ค่านี้จะเป็นค่าสุดท้ายแล้วที่เราจะได้คำตอบออกมาตัวแรกตัวนี้ใช่ไหมคะ ขั้นตอนถัดมา ถ้าเป็นตัวเลข ถ้าเป็นตัวเลขจะ Pushลง Stack อันนี้อีกอันหนึ่งนะ อีกขั้นตอนหนึ่วนะคะ ถ้าเป็นตัวเลขจะ Pลง Stack ดูพร้อมครูเลย ตัวที่ 1 มาคือตัวเลขอะไรคะ เลข 3เราเอาใส่ใน Stackดูพร้อมกันนะ เลข 3ตัวแรก เอาลง Stack ตัวถัดมาเลขอะไรคะ เลข 5ก็เอาเลข 5 Push ลง Stack เหมือนกันตัวถัดมาเลขอะไรเลข 1 ก็เอาเลข 1Push ลง Stack เหมือนกันถัดมาเราเครื่องหมายคูณ ให้Pop ค่าบนสุดอออกมา แล้ววางไว้ขวามือ เอาเลข 1 ออกมา เห็นไหมคะ จากนั้นใส่เครื่องหมายถ้ามันเครื่องหมายนะ ตัวที่เราอ่านมา เรา Popตัวเลขออกมาก่อน แล้วใส่เครื่องหมายแล้วเอาตัวที่ 2 ออกมาแบบนี้นี่นะคะ เอาตัวบนสุดออกมาแล้วใส่เครื่องหมายที่เราอ่าน แล้วเอาตัวข้อมูลตัวเลขที่อยู่ใน Stack ตัวถัดมานี่ออกมา ได้ผลลัพธ์อะไรคะ 5 x 1 เป็น 5ตอนนี้ใน Stack 1 กับ 5 ออกไปแล้วนะ เราได้ผลลัพธ์คือ 5 แล้วอย่างไรต่อก็ Push ลง Stackเอาเลข 5 Push ลงไปใน Stackตอนนี้เอาออกไปแล้ว 2 เหลือ 3พอคูณเสร็จเอา 5 กลับเข้ามาดูนะคะ ถัดมาอ่านเครื่องหมายบวกทำเหมือนเดิมเลย เอาอะไรออกมาคะเอา 5 ออกมาไว้ทางขวามือ แล้วก็ใส่เครื่องหมายบวกแล้วก้เอา 3 ออกมา คำตอบเป็นเท่าไหร่คะเป็น 8แล้วก็เอา 8 ใส่ลงไปใน Stack จะเหลือเป็นค่าสุดท้ายนี่คือคำตอบของโจทย์ข้อนี้ ได้เท่ากันเลยไหมได้เท่ากันเลย คือ 8จะเห็นว่านี่คือกระบวนการคอมพิวเตอร์คิดค่าตัวเลขให้เรานะคะ กว่าจะได้เลข 8ออกมานี่ คอมพิวเตอร์ต้องคิดแบบนี้นะคะ โอเคใครเสร็จแล้วครูให้เบรกอีก 5 นาที จดตัวนี้ให้เสร็จนะคะ ครูให้เบรก 5 นาทีค่ะ เดี๋ยวมาต่ออีกนิดหนึ่งคราวนี้มาดูอีก 1 ตัวอย่างนะคะ ครูมีโจทย์ให้5 x 2 + 2 ตอนนี้ เราทำจาก Prefix ให้เป็น Postfix ก่อนนะคะ อันดับแรก ต้องวาดตารางก่อนใช่ไหมคะ วาดตาราง Stack ว่าง ครูก็วาด 3 ช่องเหมือนเดิม แล้วก็ตรง Input ครูก็เอาข้อมูลแต่ละตัวมาใส่ลงในแต่ละบรรทัด เริ่มต้นเลยนะคะ หย่อนเข้ามาตัวแรกคือ เลข 5 ใช่ไหม มันเป็นตัวเลข เพราะฉะนั้นเอาไปไว้ที่ Outputนะคะ นะ ถ้าเป็นตัวเลข เอาไปไว้ที่ Outputได้เลย ตัวถัดมา เครื่องหมายคูณ แสดงว่าต้องเอาไปไว้ใน Stack ตอนนี้ Stack มันเป็น Stack ว่าง เราก็เลยเอาคูณมาใส่ในStack ได้เลย ส่วน Output ก็ยก 5 ลงมาเหมือนเดิม โอเคนะ ยังเป็นเหมือนเดิมอยู่นะ 2 บรรทัดแรก ถัดมา เจอเลข 2 เลข 2 2 มันเป็นตัวเลข ต้องเอาไปไว้ที่ Output เพราะฉะนั้น 2 จะอยู่ต่อจากเลข 5 นะคะ ใน Stack ก็ยกลงมาเหมือนเดิม ถึงตรงนี้นะคะ ถัดมาข้อมูลที่เราอ่านมาคืออะไร เครื่องหมายบวก พอเราเจอเครื่องหมายบวก ครูบอกว่าต้องเอามันไปไว้ใน Stack แต่ก่อนอื่น ก่อนที่จะเอาไปไว้ใน Stack เดิมเรามีข้อมูลใน Stack หรือเปล่า มีใช่หรือเปล่า มีเครื่องหมายคูณ เพราะฉะนั้น เราต้องเปรียบเทียบความสำคัญก่อน บวกมันน้อยกว่าหรือมากกว่าคูณ น้อยกว่า ใช่ไหม บวกมีค่าน้อยกว่าคูณ เพราะฉะนั้น ทำไมคะ เอาคูณออกมา บวกมีค่าน้อยกว่าคูณ เพราะฉะนั้น ต้องเอาข้อมูลที่อยู่บน Stack นี่ คือ คูณ เอามาไว้ที่Output เห็นไหมคะ เอามาไว้ที่ Output เสร็จแล้ว เราถึงเอาเครื่องหมายบวก Push ลงไปใน Stack นะคะ แล้วค่อยเอาเครื่องหมายบวกใส่ลงไปใน Stack ได้เลย เพราะ Stack มันว่างเพราะฉะนั้น ตรง Output จะเป็น5, 2 แล้วก็เครื่องหมายคูณทำไมคูณถึงต้องออกมา เพราะบวกมันน้อยกว่าคูณ เห็นไหมคะ บวกมันน้อยกว่าคูณ เลยเอาคูณออกมาถัดมาเลขอะไรคะ เลข 2 เอาไปไว้ที่ Output ได้เลย ก็เอามันมาต่อท้ายคูณใช้หรือเปล่า เพราะมันคือคูณเอา 2 มาต่อท้ายตอนนี้เราอ่านข้อมูลครบหมดแล้วแต่ใน Stack มันยังมีบวกค้างอยู่ เพราะฉะนั้น ต้อง Pop มันออกมา แล้วไว้ข้างหลังเลยนะคะ Pop มันออกมาแล้วไว้ข้างหลังโอเคนะ แบบฝึกหัด ช่วยครูทำหน่อยตอนนี้เลย ครูโจทย์ให้นะคะ 3 หาร 1 ลบ 2 แล้วครูก็บอกว่าหารนี่ มันมีค่ามากกว่าลบนะ นะคะหาค่าผลลัพธ์ของนิพจน์ Postfix ให้ครูหน่อย ผลลัพธ์สุดท้ายตัวนี้จะได้อะไร เริ่มต้นทุกคนตีตารางก่อน ลองทำดูสิคะ ไม่มีมาเอาข้างหน้า ครูมีกระดาษให้นะ แบบฝึกหัด 1 ข้อนะคะ ทำตอนนี้เลย เหมือนกับโจทย์ที่ครูให้ไปนะคะ คล้าย ๆ กับโจทย์ที่ครูให้ไป แล้วเราก็จดแล้วด้วยนะ เหมือนโจทย์สุดท้ายที่ครูให้ไปเมื่อกี้เลยนะลบ มันน้อยกว่าหารใช่ไหมคะ เราเปรียบเทียบกัน ลบมันน้อยกว่าหาร เพราะฉะนั้น ก็ต้องเอาหารออกมา คราวนี้นะคะ ดูด้วยกัน 3 เอา 3 ไปไว้ที่ไหนคะ ที่ Output เห็นไหมคะ เอา 3 ไปไว้ที่ Output เครื่องหมายหาร เอาเครื่องหมายหารไปไว้ที่ไหน Stack เพราะมันเป็น Stack ว่าง เราก็หย่อนเครื่องหมายหารได้เลย Output เรายกมันลงมาด้วยนะ ถัดไป เราอ่านเจอเลข 1 ใช่ไหมคะ ต้องเอาเลข 1 ไปไว้ที่ไหน Output ยกลงมาก่อน เสร็จแล้วก็เติมเลข 1 ลงไป ใน Stack ยังเหมือนเดิมนะ เรายังมีเครื่องหมายหารอยู่ เราก็ยกลงมาได้เลย ถัดมา เครื่องหมายลบใช่ไหมคะ เดิมใน Stack เรามีหารอยู่แล้วใช่ไหม ครูเขียนให้ดูก่อน เรามีหารอยู่แล้วนี่ เราเอาลบนี่ มาเทียบกับหาร ปรากฎว่าค่าลบมันน้อยกว่า ให้ทำอย่างไร ให้เอาหารนี่ เอาออกมาไว้ที่Output เพราะฉะนั้น จะได้เป็น3, 1 แล้วก็หาร ตรงนี้หายไปใช่ไหมคะ เสร็จแล้วก็ใส่ค่าลบ ลงมาใน Stack ถัดมาเราหย่อนอะไรยกของเดิมลงมาก่อนที่ Output แล้วก็ใส่เลข 2ใน Stack หรืออะไรคะ เครื่องหมายลบใช่ไหม อ่านครบหมดแล้วนะ แต่ใน Stack เราต้องเอาค่าจาก Stack ออกมา เป็น3 1 หาร 2 แล้วอะไรคะ ลบเห็นไหมเราเอาค่าที่อยู่ใน Stack ตัวสุดท้ายมาใส่ข้างหลังได้เลยนะคะ โอเคอีกข้อหนึ่งแล้วจะให้เลิก ครูให้โจทย์มาแค่นี้เอง วาดตารางเองด้วยโจทย์ข้อนี้อันดับแรกวาดตารางก่อนเลย ตีตารางค่ะ ดูนิดหนึ่งคูณมันมากกว่าลบใช่หรือเปล่า คูณมันมีค่ามากกว่าลบ เพราะฉะนั้น ทำอะไร ก็ Push คูณลง Stack ได้เลยนะคะ Push คูณลงใน Stack ได้เลยโอเค มาดูนะคะ 6เป็นตัวเลข เอาไว้ที่ Output ใช่หรือเปล่า ลบ เอาไว้ที่ Stack นะคะ 6 ก็ใส่มาเหมือนเดิม 5 เอาไว้ที่ไหนคะ เอาไว้ที่ Output Stack ก็ยกลงมาเหมือนเดิมนะคะ ถัดมา คูณ เจอคูณใช่ไหมคะ เจอคูณให้เปรียบเทียบกับตัวนี้ก่อนปรากฏว่าคูณมีค่ามากกว่าลบ ให้ Push คูณลง Stackได้เลย เพราะฉะนั้น Stack เดิมเป็น push ครูบอกว่า Push ลงมาได้เลยนะคะ เพราะคูณมันมากกว่านะ มันมากกว่านะคะ ข้างหลัง คือ 6 กับ 5 ถัดมา 2 เป็นตัวเลขไว้ข้างหลังนะคะ Stack มีเท่าไรยกลงมา โอเค เสร็จแล้ว หมดแล้วนะ ผลลัพธ์สุดท้ายที่ได้ 6, 5, 2 เอาคูณออกมาก่อน แล้วตามด้วยลบนะคะ เห็นนะโอเค ทุกคนดู นะคะ เราสังเกตนะทำไมตัวนี้ เอาหารออกมา ตัวนี้ไม่ได้เอาอะไรออกมานะคะ วิธีการสังเกต โอเค ลบเทียบกับหาร ลบมันมีค่าน้อยกว่าหารเห็นไหมคะ ลบมีค่าน้อยกว่าหาร เลยต้องเอาหาร ออกมาแต่ถ้า Inputที่ใส่เข้าไปนี่ มีค่ามากกว่า เราก็ใส่ลงไปใน Stack ได้เลย ถ้าตัวซ้ายมันมากกว่าตัวบนตรงนี้ เราก็ใส่ลงไปใน Stack ได้เลยนะคะ โอเค ต้องกลับไปทบทวนอีกรอบหนึ่งนะ นะคะ เดี๋ยวสัปดาห์หน้า ครูจะทวนให้อีกรอบหนึ่งโอเค เดี๋ยวทั้งหมดนี้เดี๋ยวครูจะอัปที่ Classroom ให้นะคะ เดี๋ยวครูจะไปสแกนให้ แล้วก็อัปโหลดให้ โอเคเดี๋ยวครูเช็กชื่อหน่อยนะคะ ครูเช็กชื่อหน่อย ศิริลักษณ์ 02 มาไหม 02 คนนี้หรือ 03 อดิศร เป็น COVID 4 นพกิต คนนี้ 5. พงศ์พร ไหน อ๋อ จันทกานต์ ไหนคะ กัญญานัฐ ธัญญาลักษณ์ อ๋อ โอเค วริษา คนนี้ ภัทรดา 11 ไม่มา เทพอักษร ธนภัทร 15 โอเค ภากร16 โอเค