(อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะ ได้ยินครูนะ คราวที่แล้วนะคะ เราพูดถึงในเรื่องของเหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะ คราวที่แล้วเราพูดถึงเรื่อง list นะ lisแล้วเราก็ทำข้อสอบไปแล้วนะคะ เรื่องลิสต์ได้ไหมคะ ได้ยินไหมคะ ยังไม่ได้ยิน คราวที่แล้วนะคะ เราพูดถึงเรื่อง List ทุกคนจำได้นะคะ อันนี้คือลิสต์นะ ที่ครูยกตัวอย่างมาให้ ลิสต์ตัวนี้มีขนาดเท่ากับเท่าไหร่มีขนาดเท่าไหร่ ขนาด คือ มีจำนวนเท่าไร มี 5 คนอื่นมีเท่าไรคะ 5 โอเค 5 นะคะ ลิสต์ที่เราเห็นในหน้าจอตรงนี้จะมีอยู่ 5 ตัวถูกไหมคะ มีข้อมูลอยู่ 5 ตัว มี 1 มี 2 มี 3 มี 4 แล้วก็มี 5 มีทั้งหมด 5 ตัวนะคะ คราวนี้ เรารู้ได้อย่างไรว่ามันคือลิสต์ เห็นก้ามปูเปิด-ก้ามปูปิดไหมคะ เป็นสัญลักษณ์ที่บอกว่าการเก็บข้อมูลลักษณะแบบนี้มีชื่อเรียกว่า "ลิสต์" นะคะ จะเก็บค่าของข้อมูลในลิสต์ index ก็คือหมายเลขถูกไหมคะ ก็คือหมายเลขของข้อมูลเราเริ่มต้นที่หมายเลขอะไรเอ่ย พอเราวาดเป็นช่องใช่ไหมคะ ในลิสต์นี่ ถ้าเราลองวาดการจัดเก็บนะ ก็จะเป็น 1 แล้วก็จะเก็บข้อมูลลงไปในช่องแบบนี้หมายเลขช่องหรือว่า Index ตัวแรกเราจะเริ่มต้นที่ตรงไหน ตรงนี้ index เราจะเริ่มที่เราไรเอ่ย 0 นะ ใช่ไหมคะ1 2 3 แล้วก็ 4 แล้วก็ 4 ก็คือหมายเลขช่อง ถ้าเราวาดรูปให้เป็นรูปสี่เหลี่ยมในการจัดเก็บข้อมูล แล้วเวลาครูเข้าถึงข้อมูลที่อยู่ในลิสต์ ตอนนี้ครูตั้งชื่อลิสต์ตัวนี้มีชื่อว่า x x 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 กับ Pop Push คือใส่ ก็คือเอส่วน Pop ก็คือเอาออกนะคะ Pop คือ เอาออก คราวนี้มาดูตัวอย่างนะคะ มีแต่ Push กับ Pop 2 ตัว เราเริ่มต้น Stack ไม่มีอะไรเลยเป็นค่าว่าง ๆ ถูกไหมคะ เป็น Stack ว่าง ครูบอกว่าครู Push คำสั่ง Push Push ค่าอะไร ค่า a เมื่อไรก็ตามที่ใช้คำสั่ง Push ต้องบอกดจะใส่ค่าอะไรด้วยนะคะ เรา Push ค่า a ลงไปเห็นไหม มันก็อยู่ด้านล่างสุดนะคะ ถัดมา ถ้าครูใส่คำสั่งตัวบนก่อน Push b ก็ใส่ b ลงมาเห็นไหมคะ ถัดจาก a ก็คือ b Push c ก็อยู่ถัดขึ้นไป และ Push(D) อยู่บนสุดนะคะ เรียงตรามลำดับของการใส่ข้อมูลเข้าไป คราวนี้อยากจะเอาออกบ้าง เอาข้อมูลออกจาก Stack ไปใช้งาน จะใช้คำสั่ง Pop Pop นะ Popแล้วตามด้วยวงเล็บเปิดและวงเล็บปิด ไม่ต้องใส่ค่าอะไร เพราะเราจะไปดึงค่าที่อยู่ใน Stack ออกมา เราสั่งคำสั่ง Pop เราเอาข้อมูลบนสุดนะคะ Pop ให้เอาข้อมูลบนสุดที่อยู่ใน Stack ดึงออกมา เพราะฉะนั้น เดิมเป็นแบบนี้ ถูกไหม ครูใช้คำสั่ง Pop อะไรออกมาเอ่ยตัว D Dog จะออกมา เพราะ D Dog อยู่บนสุดนะคะ ถัดมา ครู Push คือใส่เข้าไปไม่มี D Dog แล้วนะ ครู Push e เห็นไหมคะ เวลา Push ต้องบอกด้วยว่าเราใส่ค่าอะไร แล้วก็ใส่ตัว e วงเล็บปิด ครู Push ค่า e ลงไป E จะอยู่ด้านบน C เสร็จแล้ว Push อีกครั้งหนึ่ง f ก็จะอยู่บนสุดนะคะ ถัดมาครู Pop Pop คือ เอาออก เอาอะไรออก ข้างบนสุดคืออะไรคะ เอา 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 เสร็จแล้วครูสั่งคำสั่ง Push 10 เดิมมันมี 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 + 2 x 2 ตัวแรกครูมีวงเล็บเปิดกับวงเล็บปิด โจทย์ตัวที่ 2 ไม่มีวงเล็บนะคะ ครูไม่มีวงเล็บนะคราวนี้มาดูข้อแรกก่อน อย่างที่บอกว่าถ้าเจอวงเล็บ วงเล็บเปิด วงเล็บปิด ทำข้างในวงเล็บก่อนเพราะฉะนั้น เราเอาอะไรบวกกันก่อน 5 + 2 เป็นเท่าไรคะ เป็น 7 7 แล้วคูณด้วย 2 เท่ากับเท่าไหร่ เท่ากับเท่าไหร่คะเท่ากับ 14 ตัวเลขเท่ากับ 14 ตัวแรกนะคะ เท่ากับ 14 แล้วมาดูข้อ 2 ครูตัดวงเล็บทิ้งไป 5 + 2 x 2 เราทำตรงไหนก่อน ย้อนกลับขึ้นมาดูข้างบน ระหว่างบวกกับคูณ อะไรสำคัญมากกว่ากันอะไรมีความสำคัญมากกว่ากันคะ บวกกับคูณ ข้างบนเห็นไหมคะว่า 1 นี่มีความสำคัญมากสุดนะ 2. ความสำคัญรองลงมาตัวนี้ เบอร์ 3 ความสำคัญรองลงมา เบอร์ 4 ความสำคัเพราะฉะนั้น คูณกับบวกอะไรมีความสำคัญมากกว่ากัน คูณใช่ไหมคะ อันนี้คือมากสุดมากสุด เพราะฉะนั้น เราทำอะไรก่อน 5+2 หรือเอา 2หรือเอา 2 x 2 2 x 2 เป็น 4 4 + 5 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 แล้วก็ 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 + 2 x 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 ก่อนได้เท่าไรค่อยบวกกับ 3 5 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 เลยจะทำอย่างไรให้ได้เลข 8 8 ถัดมา เสร็จหรือยังคะ เดี๋ยวรอเพื่อนแป๊บหนึ่งนะ โอเค เราได้ผลลัพธ์แล้วใช่ไหมคะ จากตารางที่เราทำใน Stack พอได้ค่าผลลัพธ์แล้วนี่ คือ ตัวนี้ 351 คูณ บวกมาหาผลลัพธ์ต่อนะคะ ค่านี้จะเป็นค่าสุดท้ายแล้วที่เราจะได้คำตอบออกมา ตัวแรกตัวนี้ใช่ไหมคะขั้นตอนถัดมา ถ้าเป็นตัวเลข ถ้าเป็นตัวเลขจะ Push ลง Stack อันนี้อีกอันหนึ่งนะ อีกขั้นตอนหนึ่วนะคะ ถ้าเป็นตัวเลขจะ Pลง Stack ดูพร้อมครูเลย ตัวที่ 1 มา คือตัวเลขอะไรคะ เลข 3 เราเอาใส่ใน Stack ดูพร้อมกันนะ เลข 3 ตัวแรก เอาลง Stack ตัวถัดมาเลขอะไรคะ เลข 5 ก็เอาเลข 5 Push ลง Stack เหมือนกัน ตัวถัดมาเลขอะไร เลข 1 ก็เอาเลข 1 Push ลง 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 เอาไว้ที่ไหนคะ เอาไว้ที่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 โอเค ค่ะ เจอกันสัปดาห์หน้า [สิ้นสุดการถอดความ]