(อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะได้ยินครูนะ คราวที่แล้วนะคะ เราพูดถึงในเรื่องของเหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะคราวที่แล้วเราพูดถึงเรื่อง list นะ lisแล้วเราก็ทำข้อสอบไปแล้วนะคะเรื่องลิสต์ได้ไหมคะได้ยินไหมคะยังไม่ได้ยินคราวที่แล้วนะคะ เราพูดถึงเรื่อง 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 ก็คือเริ่มต้ด้วยตัวถึง 4 แล้วก็ลดลงมา 1 ช่อง ก็จะได้ข้อมูลตัวนี้ก็คือ 3 กับ 4คราวนี้ แล้วเราเอาลิสต์มาทำอะไรนะคะ เราเก็บข้อมูลรูปแบบลิสต์ แล้วเราเอามาใช้ทำอะไรนะคะวันนี้เราจะพูดถึงโครงสร้างอีกแบบหนึ่งที่มีชื่อว่า 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 กับ PopPush คือใส่ ก็คือเอส่วน Pop ก็คือเอาออกนะคะ Pop คือ เอาออกคราวนี้มาดูตัวอย่างนะคะ มีแต่ Push กับ Pop2 ตัว เราเริ่มต้น Stack ไม่มีอะไรเลยเป็นค่าว่าง ๆ ถูกไหมคะ เป็น Stack ว่างครูบอกว่าครู Pushคำสั่ง Push Push ค่าอะไร ค่า a เมื่อไรก็ตามที่ใช้คำสั่ง Push ต้องบอกดจะใส่ค่าอะไรด้วยนะคะเรา Push ค่า a ลงไปเห็นไหม มันก็อยู่ด้านล่างสุดนะคะ ถัดมาถ้าครูใส่คำสั่งตัวบนก่อน Push b ก็ใส่ b ลงมาเห็นไหมคะถัดจาก a ก็คือ b Push cก็อยู่ถัดขึ้นไป และ Push(D) อยู่บนสุดนะคะ เรียงตรามลำดับของการใส่ข้อมูลเข้าไปคราวนี้อยากจะเอาออกบ้างเอาข้อมูลออกจาก Stack ไปใช้งาน จะใช้คำสั่ง PopPop นะ Popแล้วตามด้วยวงเล็บเปิดและวงเล็บปิด ไม่ต้องใส่ค่าอะไรเพราะเราจะไปดึงค่าที่อยู่ใน Stack ออกมาเราสั่งคำสั่ง Pop เราเอาข้อมูลบนสุดนะคะ Pop ให้เอาข้อมูลบนสุดที่อยู่ใน Stack ดึงออกมาเพราะฉะนั้น เดิมเป็นแบบนี้ ถูกไหมครูใช้คำสั่ง Pop อะไรออกมาเอ่ยตัว D Dog จะออกมา เพราะ D Dogอยู่บนสุดนะคะถัดมาครู 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 กับ PopPush ก็คือใส่ข้อมูลลงไปใน 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ใช่ไหมคะ อันแรก เราหย่อนเลข 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 มาหย่อนเลยนะคะถัดมาครูใช้คำสั่ง 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 นิพจน์ตัวที่ 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หรือเอา 2 x 2 2 x 2เป็น 4 4 + 55 เป็นเท่าไหร่คะเป็น 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 แล้วก็ Oนะคะ ถัดมาขั้นตอนวิธีการแปลงจาก Infix ให้เป็น Poทุกคนมีชีตที่ครูให้ แบบนี้เลยก็คือสิ่งที่อยู่บนสไลด์นะคะ ครูพรินต์ออกมาให้เรามีอยู่ทั้งหมด 7 ขั้นตอนด้วทั้งหมด 7 ขั้นตอนด้วยกันมีทั้งหมด 7 ขั้นตอนด้วยกัน ครูให้เวลา2 นาที อ่าน 7 ขั้นตอนนนี้ในกระดาษของตัวเองสิคะให้อ่านในกระดาษนะ หรือจะอ่านจากหน้าจอก็ได้ให้เวลา 2 นาทีอยากให้อ่านก่อนคราวนี้เดี๋ยวมาดูพร้อมกันเรามีอยู่ทั้งหมด 7 ขั้นตอนนะคะ เดี๋ยวเราจะลองฝึกนะ แล้วก็เทียบไปทีละขั้นขั้นที่ 1 นะคะ กำหนดให้ Stack ว่างก็คือวาดตาราง 3 ช่องนี้อันดับแรก สร้าง Stack ว่าง ก็คือวาด3 ช่องนะคะ กี่แถวยังไม่รู้นะแต่มีอยู่ 3 คอลัมน์อันดับที่ 2อ่านข้อมูลจากซ้ายไปขวา ก็คืออ่านข้อมูลทีละตัวใช่ไหมคะ เลข 5เครื่องหมายบวก เลข เครื่องหมายคูณ แล้วก็เลข 2อันนี้คืออ่านจากซ้ายไปขวาทีละตัวนะคะ แล้วก็อ่านเข้ามาทีละตัวสมมติครูใช้ตัวเลขนะคะตัวเลขนะคะ เช่นอ่านข้อมูลจากซ้ายไปขวา ตัวแรก ก็คือ5 ใช่ไหม อ่านจากซ้าย ซ้ายก็คือตัวแรกนะคะ ก็คือเลข 5 ถัดมาถัดมาขั้นถัดมาเป็นขั้นที่ 3ถ้าข้อมูลที่อ่านเข้ามาเป็นตัวเลข เช่นเลข 5 ใช่ไหม ข้อมูลที่เราอ่านเข้ามาทันเป็นตัวเลขใช่ไหม ใช่ เอามันไปไว้ที่ไหน เอามันไปไว้ที่ช่องผลลัพธ์ ก็คือช่องสุดท้ายก็คือช่องนี้ใช่ไหมคะ ช่อง Outputถัดมา ถ้าตัวทีเราอ่านเข้ามานี่มันไม่ใช่ตัวเลข แสดงว่ามันต้องเป็นเครื่องหมายทางคณิตศาสตร์อะไรสักอย่างหนึ่งนี่ล่ะ เช่น เครื่องหมายบวกเครื่องหมายบวกใช่ไหมคะ เครื่องหมายบวกเราอ่านเครื่องหมายบวกเข้ามาแล้วเขาให้เราเช็กก่อน ว่าแล้วใน Stack มันมีค่าอยู่หรือเปล่า Stack ในช่องนี่ช่องนี้ ช่องที่ 2 นี่ มันมีค่าอยู่ไหม ถ้ามันไม่มีค่าอยู่เลยก็หย่อนมันลงไปใน Stackแต่ถ้าใน Stack มันมีข้อมูลอยู่แล้ว เราจะต้องทำการเปรียบเทียบก่อน ว่าข้อมูลที่เราอ่านเข้ามานี่มันมีค่ามากกว่า หรือน้อยกว่าตัวที่อยู่ในStackถ้ามันมากกว่าถ้ากรณีที่ตัวที่เราอ่านมีค่ามากกว่าก็หย่อนลงไปใน Stack ได้เลยถ้าสิ่งที่เราอ่านเข้ามามันมีค่าน้อยกว่าสิ่งที่อยู่ใน Stackให้เอาเครื่องหมายใน Stackออกไปไว้ที่ผลลัพธ์แล้วเอาเครื่องหมายตัวที่เราอ่านเข้ามาหย่อนลงไปใน Stackโอเคถ้าเราอ่านจนครบข้อมูลทุกตัวแล้ว เรายังมีข้อมูลอยู่ใน Stackเราก็ดึงมันออกมา ก็คือ Pop มันออกมาเป็นผลลัพธ์มาดูตัวอย่างนะ ทุกคนถือ... ดุตัวอย่างที่เป็นขั้นตอนด้วยนะคะโอเคโจทย์ที่ครูให้ ทุกคนดูที่หน้าจอนะคะครูมีโจทย์มาให้นะคะ ก็คือ 5 + 2x 2อันดับแรกครูต้องทำอะไรอันดับแรกวาดตาราง 3 ช่องวาดตาราง 3 ช่อง จำนวนแถวก็เอาข้อมูลตัวเลขกับเครื่องหมายมาใส่ทีละบรรทัด 5ที่ 1 ถูกไหมคะ บวกบรรทัดใส่เลข 2 บรรทัดถัดมาใส่เครื่องหมายคูณแล้วก็ใส่เลข 2เราก็จะวาดตารางเรียบร้อยแล้วใช่ไหมคะ จำนวนแถวขึ้นอยู่กับจำนวนข้อมูลในโจทย์ว่ามีกี่ตัว ก็สร้างแถวใส่ข้อมูลให้เลยเรากำหนดtack ว่างแล้วใช่ไหมคะถัดมา ต้องอ่านข้อมูลทีละตัวเราต้องอ่านข้อมูลทีละตัวจากซ้ายไปขวา ตัวแรกคืออะไรคะคือ 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 ก่อนได้เท่าไรค่อยบวกกับ 35 1 เป็น 5 แล้วบวกกับ 38เดี๋ยวเราจะมาทำ จะมาแปลงนิพจน์กันนะคะ แล้วเราจะมาหาค่าว่ามันได้ 8 ได้อย่างไรอันนี้เรากำลังจะมาแสดงวิธีทำค่าว่า 8 มันมาจากไหน เราสั่งให้คอมพิวเตอร์มันคิดแบบไหน อันดับแรก วาด Stack ว่างฉะนั้น ครูบอกว่าต้องมีคอลัมน์อยู่ 3 คอลัมน์ครูมี 3 คอลัมน์แล้ว มีIn put 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 เลข 22 มันเป็นตัวเลข ต้องเอาไปไว้ที่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 เอาไว้ที่ไหนคะ เอาไว้ที่Stack ก็ยกลงมาเหมือนเดิมนะคะถัดมาคูณเจอคูณใช่ไหมคะ เจอคูณให้เปรากฏว่าคูณมีค่ามากกว่าลบให้ Push คูณลง Stackได้เลย เพราะฉะนั้นStack เดิมเป็น pushครูบอกว่า Push ลงมาได้เลยนะคะ เพราะคูณมันมากกว่านะ มันมากกว่านะคะข้างหลัง คือ 6 กับ 5ถัดมา 2เป็นตัวเลขไว้ข้างหลังนะคะStack มีเท่าไรยกลงมาโอเค เสร็จแล้ว หมดแล้วนะ ผลลัพธ์สุดท้ายที่ได้ 6, 5, 2เอาคูณออกมาก่อน แล้วตามด้วยลบนะคะเห็นนะโอเคทุกคนดูนะคะเราสังเกตนะทำไมตัวนี้เอาหารออกมา ตัวนี้ไม่ได้เอาอะไรออกมานะคะ ตัวนี้วิธีการสังเกต โอเคลบเทียบกับหาร ลบมันมีค่าน้อยกว่าหารเห็นไหมคะลบมีค่าน้อยกว่าหารเลยต้องเอาหารออกมาแต่ถ้า Inputที่ใส่เข้าไปนี่ มีค่ามากกว่า เรา็ใส่ลงไปใน Stack ได้เลยถ้าตัวซ้ายมันมากกว่าตัวบนตรงนี้เราก็ใส่ลงไปใน Stack ได้เลยนะคะโอเคต้องกลับไปทบทวนอีกรอบหนึ่งนะ นะคะเดี๋ยวสัปดาห์หน้าครูจะทวนให้อีกรอบหนึ่งโอเคเดี๋ยวทั้งหมดนี้ครูจะอัปที่ Classroom ให้นะคะเดี๋ยวครูจะไปสแกนให้ แล้วก็อัปโหลดให้ โอเคเดี๋ยวครูเช็กชื่อหน่อยนะคะครูเช็กชื่อหน่อยศิริลักษณ์02มาไหม 02คนนี้หรือ03อดิศร เป็น COVID4 นพกิตคนนี้ 5.พงพร ไหนอ๋อ จันทกานต์ไหนคะกัญญานัฐธัญญาลักษณ์อ๋อ โอเค วริษาคนนี้ภัทรดา 11 ไม่มาเทพอักษรธนภัทร 15 โอเคภากร16 โอเค ค่ะ เจอกันสัปดาห์หน้า[สิ้นสุดการถอดความ] - (อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะได้ยินครูนะ คราวที่แล้วเหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะคราวที่แล้วเราพูดถึงเรื่อง list นะ lisแล้วเราก็ทำข้อสอบไปแล้วนะคะนะคะ เราพูดถึงในเรื่องของได้ไหมคะเรื่องลิสต์ได้ยินไหมคะยังไม่ได้ยินคราวที่แล้วนะคะ เราพูดถึงเรื่อง List ทุกคนจำได้นะคะ อันนี้คือลิสต์นะ ที่ครูยกตัวอย่างมาให้มีขนาดเท่าไหร่ ขนาด คือมีจำนวนเท่าไร มี 5 คนอื่นมีเท่าไรคะ5 โอเค 5 นะคะลิสต์ตัวนี้มีขนาดเท่ากับเท่าไหร่จะมีอยู่ 5 ตัวถูกไหมคะ มีข้อมูลอยู่ 5 ตัวมี 1 มี 2 มี 3 มี 4แล้วก็มี 5 มีทั้งหมด 5 ตัวนะคะ คราวนี้ลิสต์ที่เราเห็นในหน้าจอตรงนี้ก้ามปูเปิด-ก้ามปูปิดไหมคะเป็นสัญลักษณ์ที่บอกว่าการเก็บข้อมูลลักษณะแบบนี้มีชื่อเรียกว่า "ลิสต์" นะคะเรารู้ได้อย่างไรว่ามันคือลิสต์ เห็นในลิสต์ indexก็คือหมายเลขถูกไหมคะ ก็คือหมายเลขของข้อมูลเราเริ่มต้นที่หมายเลขอะไรเอ่ยจะเก็บค่าของข้อมูลในลิสต์นี่ ถ้าเราลองวาดการจัดเก็บนะ ก็จะเป็น 1พอเราวาดเป็นช่องใช่ไหมคะหมายเลขช่องหรือว่าIndex ตัวแรกเราจะเริ่มต้นที่ตรงไหนตรงนี้ index เราจะเริ่มที่เราไรเอ่ยแล้วก็จะเก็บข้อมูลลงไปในช่องแบบนี้1 2 3 แล้วก็ 4แล้วก็ 4 ก็คือหมายเลขช่อง ถ้าเราวาดรูปให้เป็นรูปสี่เหลี่ยมในการจัดเก็บข้อมูล แล้วเวลาครูเข้าถึง0 นะ ใช่ไหมคะครูตั้งชื่อลิสต์ตัวนี้มีชื่อว่า xx index 3ตอบเท่ากับเท่าไรเอ่ย indexข้อมูลที่อยู่ในลิสต์ ตอนนี้ตรงนี้ต้องตอบว่า 4 นะคะ ทุกคนจำได้นะแล้วถ้า xเราต้องการหลาย ๆ ค่า 2 จนถึง 4เป็น 3 ตัวนี้ตอบ 4 ใช่3 กับ...3 กับอะไรเอ่ย 4 ใช่ไหมใช่ไหม คือ 3 กับ 4 นะ มันเริ่มต้นที่ 2 ใช่ไหมคะ ก็คือจะตอบเท่าหับเท่าไหร่คะถึง 4 แล้วก็ลดลงมา 1 ช่อง ก็จะได้ข้อมูลตัวนี้ก็คือ 3 กับ 4คราวนี้ แล้วเราเอาลิสต์เริ่มต้นที่ 2 ก็คือเริ่มต้ด้วยตัวรูปแบบลิสต์ แล้วเราเอามาใช้ทำอะไรนะคะวันนี้เราจะพูดถึงโครงสร้างอีกแบบหนึ่งที่มีชื่อว่า stack นะมาทำอะไรนะคะ เราเก็บข้อมูลจะใช้วิธีการเก็บข้อมูลแบบลิสต์นะคะ แล้วลักษณะแบบไหนที่เราจะเรียกว่า "stack" นะคะ ดูด้วยกันสแตกนะคะ สแตกตัวนี้ก็คือการที่เราใส่ข้อมูลเข้าไปแล้วก็ดึงออกมานะคะ แล้วข้อมูลที่ถูกใส่เข้าไปใน Stack จะถูกเขาบอกว่า Stackวิธีการเก็บข้อมูลแบบ stack หรือที่เรียกว่าเข้าทีหลังออกก่อนเข้าก่อนออกทีหลัง ความหมายเหมือนกันเอาออกมาใช้ทีหลัง อันนี้ คือยกตัวอย่างเช่น ทุกคนเคยไปที่ร้านก๋วยเตี๋ยวไหมคะ ทุกคนเคยไปที่ร้านก๋วยเตี๋ยวนะแล้วเห็นถ้วยก๋วยเตี๋ยวก่อนที่เขาจะชามก๋วยเตี๋ยวมันเรียงขึ้นไปแบบนี้ใช่ไหมคะ เวลาแม่ค้าเขาจะเอาจามก๋วยเตี๋ยวมาใส่ให้เราเขาจะเอาชามก๋วยเตี๋ยวมาใส่ให้เรา เขาเอาชามที่อยู่เอามาใส่เส้น ใส่เครื่องปรุง ใส่หมูให้เราเอาชามข้างบนหรือข้างล่างคะ ข้างบนเขาเอาข้างบนมาทำให้เราแล้วเวลาเขาล้างจานเสร็จแล้วนี่ เอาจานข้างบน หรือชามที่อยู่ข้างล่างใช่ไหมคะ เพราะฉะนั้น จานที่อยู่บนสุดจะถูกเอาออกมาใช้ก่อนและจากที่อยู่บนสุดนะคะ จะถูกมาซ้อนข้างล่างหรือซ้อนข้างบน ซ้อนข้างบนของ Stack เช่นนะคะ เช่น ๆเช่น สมมติ ครูมีกระดาษ 1 แผ่นนะครูมีกระดาษอยู่ 1 แผ่น ทุกคนดูนะคะเอาเข้ามาเก็บทีหลัง อันนี้คือรูปแบบเห็นไหมคะ ครูซ่อนกระดาษแผ่นที่ 2 อยู่ข้างบนครูใส่ ครูใส่กระดาษแผ่นที่ 3 เข้าไปนะคะ แล้วครูก็ใส่ครูจะใส่กระดาษแผ่นที่ 2ครูจะเอาออกมาใช้ครูจะเอาตัวล่างสุดหรือตัวบนสุดออกมาใช้ตัวบนสุดถูกไหมคะครูไม่พยายามจะดึงตัวล่างสุดออกมานะคะ ครูจะหยิบตัวบนกระดาษแผ่นที่ 4 เข้าไปในมือครู เวลาคือ กระดาษแผ่นที่เราใส่ไปล่าสุดนะคะเเราสามารถสรุปได้แบบนี้นะ ข้อมูลที่อยู่ใน Stackสุดอกไปใช้ ซึ่งตัวบนสุดนี่ข้อมูลที่หย่อนลงไปใน Stack ตัวแรกจะอยู่ด้านล่างสุดเลยนะคะ ตัวถัดไปก็จะซ้อนขึ้นมาเรื่อย ๆ ข้อมูลที่ตัวแรกจะอยู่ด้านล่างสุด ขนะคะ