﻿{
  "summary": {
    "number_of_turns": 14,
    "number_of_turns_not_empty": 0,
    "average_edit_duration": 0,
    "average_edit_duration_all": 0,
    "max_edit_duration": 0,
    "min_edit_duration": 0,
    "num_turn_forceout": 14,
    "percent_forceout": 100
  },
  "messages": [
    {
      "message_id": -1,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "(อาจารย์สุธาสินี) ทำไมเป็นอย่างนั้นล่ะ คราวนี้ได้ยินครูนะ คราวที่แล้วนะคะ เราพูดถึงในเรื่องของ เหมือนล่ามไม่ได้ยินเลย อ๋อ ค่ะ คราวที่แล้วเราพูดถึงเรื่อง list นะคะ lis ตัวนี้ แล้วเราก็ทำข้อสอบไปแล้วนะคะ เรื่องล list ได้ไหมคะ ได้ยินไหมคะ ยังไม่ได้ยินคราวที่แล้วนะคะ เราพูดถึงเรื่อง List นะ ทุกคนจำได้นะคะ อันนี้คือลิสต์นะ ที่ครูยกตัวอย่างมาให้ list ตัวนี้ มีขนาดเท่ากับเท่าไร มีขนาดคือมเท่าไหร่ ขนาด คือมีจำนวนเท่าไร มี 5 คนอื่นมีเท่าไรคะ 5 โอเค 5 นะคะ list ลิสต์ที่เราเห็นในหน้าจอตรงนี้ จะมีอยู่ 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 ใช่ไหมคะ ก็คือเริ่มต้นที่ตัวนี้ 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 ค่าอะไร  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 ไม่ว่าง เช่น 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 เพื่อเป็นนิพนธ์ ก็คือลักษณะของสมการ มีอยู่ 3 รูปแบบนะคะ รูปแบบแรกืก็คือ Infig บวก ลบ คูณ หาร จะอยู่ระหว่างตัวเลขนะคะ ก็คือ 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 เป็นเท่าไiคะ เป็น 9 โอเค ถ้าครูเขียนใหม่เลข 2 นะ เดี๋ยวนะโจทย์ข้อนี้ 5 x 2 + 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 ช่อง อันนี้คือ Stack ว่าง อันดับที่ 2 อ่านข้อมูลจากซ้ายไปขวา ก็คืออ่านข้อมูลทีละตัวใช่ไหมคะ เลข 5 เครื่องหมายบวก เลข เครื่องหมายคูณ แล้วก็เลข 2 อันนี้คืออ่านจากซ้ายไปขวา ทีละตัวนะคะ แล้วก็อ่านเข้ามาทีละตัว สมมติครูใช้ตัวเลขนะคะ  เช่น อ่านข้อมูลจากซ้ายไปขวา ตัวแรก ก็คือ 5 ใช่ไหม อ่านจากซ้าย ซ้ายก็คือตัวแรกนะคะ ก็คือเลข 5 ถัดมา ขั้นถัดมาเป็นขั้นที่ 3 ถ้าข้อมูลที่อ่านเข้ามาเป็นตัวเลข เช่นเลข 5 ใช่ไหมคะ ข้อมูลที่เราอ่านเข้ามาคือเลข 5 มันนเป็นตัวเลขใช่ไหม ใช่ เอามันไปไว้ที่ไหน เอามันไปไว้ที่ช่องผลลัพธ์ ก็คือช่องสุดท้าย ก็คือช่องนี้ใช่ไหมคะ ช่อง Output ถัดมา ถ้าตัวทีเราอ่านเข้ามานี่มันไม่ใช่ตัวเลข แสดงว่ามันต้องเป็นเครื่องหมายทางคณิตศาสตร์ อะไรสักอย่างหนึ่งนี่ล่ะ เช่น เครื่องหมายบวก ใช่ไหมคะ เครื่องหมายบวกเราอ่านเครื่องหมายบวกเข้ามา แล้วเขาให้เราเช็กก่อน ว่าแล้วใน Stack มันมีค่าอยู่หรือเปล่า Stack ก็คือช่องนี่ ช่องนี้ ช่องที่ 2 นี่ มันมีค่าอยู่ไหม ถ้ามันไม่มีค่าอยู่เลย ก็หย่อนมันลงไปใน Stack แต่ถ้าใน Stack มันมีข้อมูลอยู่แล้ว เราจะต้องทำการเปรียบเทียบก่อน ว่าข้อมูลที่เราอ่านเข้ามานี่ มันมีค่ามากกว่า หรือน้อยกว่าตัวที่อยู่ใน Stack ถ้ามันมากกว่า ถ้ากรณีที่ตัวที่เราอ่านนี่ มีค่ามากกว่าก็หย่อนลงไปใน Stack ได้เลย ถ้าสิ่งที่เราอ่านเข้ามามันมีค่าน้อยกว่าสิ่งที่อยู่ใน Stack ให้เอาเครื่องหมายใน Stack ออกไปไว้ที่ผลลัพธ์ แล้วเอาเครื่องหมายตัวที่เราอ่านเข้ามาหย่อนลงไปใน Stack โอเค ถ้าเราอ่านจนครบข้อมูลทุกตัวแล้ว เรายังมีข้อมูลอยู่ใน Stack เราก็ดึงมันออกมา ก็คือ Pop มันออกมานะคะ เป็นผลลัพธ์ มาดูตัวอย่างนะ ทุกคนถือ... ดูตัวอย่างที่เป็นขั้นตอนด้วยนะคะ โอเค โจทย์ที่ครูให้ ทุกคนดูที่หน้าจอนะคะ ครูมีโจทย์มาให้นะคะ ก็คือ 5 + 2 x 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 x 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 เลย จะทำอย่างไรให้ได้เลข 8 8 ถัดมา เสร็จหรือยังคะ เดี๋ยวรอเพื่อนแป๊บหนึ่งนะโอเค เราได้ผลลัพธ์แล้วใช่ไหมคะ จากตารางที่เราทำใน Stack พอได้ค่าผลลัพธ์แล้วนี่ คือ ตัวนี้ใช่ไหม 3 5 1 x +  มาหาผลลัพธ์ต่อนะคะ ค่านี้จะเป็นค่าสุดท้ายแล้ว ที่เราจะได้คำตอบออกมา ตัวแรกตัวนี้ใช่ไหมคะ ขั้นตอนถัดมา ถ้าเป็นตัวเลข ถ้าเป็นตัวเลขจะ Push ลง Stack อันนี้อีกอันหนึ่งนะ อีกขั้นตอนหนึ่งนะคะ ถ้าเป็นตัวเลขจะ Push ลง 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 ตอนนี้เราทำจาก index ให้เป็น 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 ถัดมา เราหย่อนอะไร 2 ยกของเดิมลงมาก่อนที่ 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 ให้นะคะ เดี๋ยวครูจะไปสแกนให้ แล้วก็อัปโหลดที่ Classroom ให้ โอเคเดี๋ยวครูเช็กชื่อหน่อยนะคะ ครูเช็กชื่อหน่อย ศิริลักษณ์ 02 มาไหม 02 คนนี้หรือ  03 อดิศร เป็น COVID  4 นพกิต คนนี้  5 พงพร ไหน อ๋อ จันทกานต์ (นักศึกษาหญิง) มาค่ะ (อาจารย์สุธาสินี) ไหนคะ กัญญานัฐ ธัญญาลักษณ์ อ๋อ โอเค วริษา คนนี้ ภัทรดา 11 ไม่มา เทพอักษร ธนภัทร 15 โอเค ภากร 16 โอเค ค่ะ เจอกันสัปดาห์หน้า[สิ้นสุดการถอดความ] - |",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": false
    },
    {
      "message_id": 0,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 1,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 2,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 3,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 4,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 5,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 6,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 7,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 8,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 9,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 10,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 11,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 12,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    },
    {
      "message_id": 13,
      "editor_id": 35,
      "message_received": "",
      "slice_count": 1,
      "slices": "|",
      "edit_duration": 0,
      "edit_duration_all": 0,
      "is_forceout": true
    }
  ],
  "agents": [
    {
      "id": 35,
      "stat_postedit": {
        "number_of_turns": 14,
        "number_of_turns_not_empty": 0,
        "average_edit_duration": 0,
        "average_edit_duration_all": 0,
        "max_edit_duration": 0,
        "min_edit_duration": 0,
        "num_turn_forceout": 14,
        "percent_forceout": 100
      }
    }
  ]
}