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