(อาจารย์) ค่ะ มา นั่งที่เร็ว คราวที่แล้ว นะคะ เราพูดถึงรูปแบบของ การจัดเก็บข้อมูล ยังจำ Array ได้ไหม จำได้ไหมคะ หรือเคยได้ยินไหม เคยได้ยินอยู่นะ Array ใช่ไหมคะ แล้วก็มีอีกตัวหนึ่ง คืออะไรที่เรียนไปคราวที่แล้ว คือ List ใช่ไหมคะ จะมี Array ตัวนี้หนึ่งตัว แล้วก็มี List นะคะ ที่เราเรียนไปแล้วคราวก่อน รูปแบบของการจัดเก็บข้อมูลแบบ Array กับ List 1 ตัวแปรเก็บได้กี่ค่าเอ่ย 1 ตัวแปรเก็บได้หลายค่าได้ไหมคะ ได้ไหม ใครคิดว่าได้ ยกมือขึ้นเร็ว ได้ไหม ถ้าเป็น List กับ Array 1 ตัวแปรเก็บได้มากกว่า 1 ค่า จริงหรือเท็จ ถูกหรือไม่ถูก จริงไหม จริง ใช่ไหมคะ เห็นไหมคะว่า 1 ตัวแปรนี่เราเก็บได้ กี่ค่า หลายค่าใช่ไหมคะ 1 ตัวแปรจะเก็บได้หลายค่า แต่ความแตกต่างระหว่าง Array กับ List นะคะ ในการจัดเก็บข้อมูล ที่เขาเก็บได้หลายค่านี่ ถ้าเป็น Array ทุกค่าจะต้องเป็น ชนิดข้อมูลเดียวกัน เช่น เป็นตัวเลข ก็ต้องตัวเลขทั้งหมดใช่ไหมคะ เป็นตัวอักษร เป็นตัวหนังสือน่ะ ก็ต้องเป็นตัวหนังสือทั้งหมด นะคะ แต่ถ้าเป็น List เก็บข้อมูลแบบ List ข้างในนี่ สามารถเก็บได้มากกว่า 1 ประเภท คือข้อมูลข้างในนี่สามารถ มีผสมกันได้นะคะ เป็นตัวเลขหรือเป็นข้อความก็ได้ นะคะ อันนี้คือความแตกต่างระหว่าง Array กับ List เวลาเรา จะเข้าถึงข้อมูลที่อยู่ใน List หรือ Array เราจะใช้อะไรคะ Index เป็นตัวระบุว่า จะเข้าถึงข้อมูลที่ตำแหน่งไหน Index เริ่มต้นมีค่าเท่ากับ มีค่าเท่ากับอะไรเอ่ย Index เริ่มต้นจะมีค่าเป็น 0 นะคะ ข้อมูลตัวแรกนี่ Index คือ 0, 1, 2, 3 นะคะ ครูถามว่า ถ้าครูพูดถึง x[1] ค่าที่ได้คือออะไร เราเข้าถึงนี่ ข้อมูลตัวที่เท่าไร ตัวที่... ตัวไหนคะ ตอบอะไร สมมุติเขา บอกว่า x แล้ว Index เป็น 1 เรา... ค่าที่ได้ ก็คือมีค่าเป็น 2 เพราะว่าเราเริ่มต้น Index ที่ 0 แล้วก็ 1 ก็คือ เพราะฉะนั้นคำตอบก็คือ 2 ใช่ไหมคะ งงไหม ไม่งง อันนี้ Index ที่ 0 Index ที่ 1, 2 นี่ครูจะชี้ให้เห็นว่า ตัวแรกคือ Index เป็น 0 เป็น 1 เป็น 2 เป็น 3 นะคะ คราวที่แล้วที่ทำ List ไป สงสัยอะไรไหม ถ้าครูอยากจะเพิ่มข้อมูลลงไปใน List ใช้คำสั่งอะไร เอ่ย ใช้อะไรคะ ถ้าครูอยากจะเพิ่มข้อมูล ใหม่ อย่างเช่น เพิ่มค่า 10 ลงไปใน List x ครูจะต้องใช้คำสั่งอะไรเอ่ย X. อะไรคะ App... App อะไร Append ถูกไหม x.append นะคะ แล้ว ( แล้วก็ ใส่ค่า จำได้ไหมน่ะ จำได้ คราวนี้ วันนี้จะมา ดูรูปแบบของการจัดเก็บข้อมูลอีก 1 ประเภทนะคะ ซึ่งรูปแบบ นี้มีเฉพาะใน Python นะคะ ก็คือ Dictionary ก็คือตัวนี้นะคะ Dictionary เมื่อกี้เราเห็นรูปแบบของการจัดเก็บข้อมูลใน List หรือ Array แล้วนะคะ เราจะ เก็บค่าข้อมูลที่เราต้องการ เก็บ เรียงต่อกันไปเรื่อย ๆ นะคะ โดยใช้เครื่องหมาย , เป็นตัวคั่นเก็บไว้ใน 1 ตัวแปร กรณีที่เป็น Dictionary นะคะ จะมีความแตกต่างจาก List หรือ Array โดยรูปแบบในการจัดเก็บ เรา ไม่ได้เก็บค่าเพียงอย่างเดียว แต่เราเก็บ Key นะคะ เก็บ Key มันด้วย เดิมใน List กับ Array นี่ ตัวระบุคือตัว index นะคะ แต่ใน Dictionary เราจะเก็บ Key กับ Value นะคะ เราจะเก็บ Key กับ Value โดย Key นี่ จะหมายถึงตัว Index ที่จะเข้าถึงข้อมูล ซึ่งเราจะกำหนดเองนะคะ เราสามารถกำหนดเองได้ ส่วน Value ก็คือค่าข้อมูล จะต้องสอดคล้องกับตัว Key ที่เราใส่ ลงไป คราวนี้มาดูรูปแบบของการจัดเก็บ นะคะ เราจะ ใช้ก้าม... เอ่อ { ใช่ไหมคะ ใช้คนละสัญลักษณ์แล้วนะ ถ้า List จะใช้แบบนี้ใช่ไหม [ ] แต่ถ้าเป็น Dictionary จะใช้ { กับ } นะคะ ต่างกัน ถ้าเป็น Dictionary นะคะ { แล้วต้องตามด้วย Key นะคะ Key จะเป็นอะไรก็ได้ เป็นตัวเลข เป็นตัวหนังสือ เป็นได้หมด นะคะ : แล้วก็ ค่านะคะ อันนี้คือข้อมูลชุดที่ 1 , ใส่ข้อมูลชุดที่ 2 กำหนด Key เหมือนเดิม : แล้วก็กำหนดค่า ใส่แบบนี้ไปเรื่อย ๆ ตรงนี้เราจะเห็นว่า 1 ตัวนี้คืออะไรเอ่ย คือ Key หรือ Value 1 ก็คือ Key นะคะ One ก็คือ Value นี่นะคะ ข้างหน้า : คือ Key ข้างหลัง : คือ Value นะคะ เราเก็บข้อมูล อะไร Dictionary ตัวนี้เก็บข้อมูลนะคะ 1. ภาษาอังกฤษคืออะไร 2. ภาษาอังกฤษคืออะไร 3. นะคะ อย่างนี้เป็นต้น การเข้าถึงข้อมูล ใน Dictionary นะคะ เรามาดูการเข้าถึง ข้อมูลใน Dictionary ก่อน ใช้เหมือนเดิมเลยนะคะ ต้องใส่ชื่อ Dictionary ก่อน ถูกไหมคะ เหมือนตัว List เลยมีชื่อ Dictionary นะคะ [ แล้วก็ต้องใส่ ค่า Key นะคะ ต้องใส่ค่า Key คราวนี้ มาดู Dictionary ตัวนี้นะคะ ครูมีค่า เก็บค่าคะแนนของแต่ละคน James ได้คะแนนเท่าไร Thomas คะแนนเท่าไร Danny นะคะ แล้วก็ Bobby แต่ละคนก็จะมีคะแนนที่แตกต่างกัน จะเห็นว่าในตัวแปร Scores นะคะ ตัวแปร Dictionary ชื่อ Scores ครูมีข้อมูลกี่ตัว ครูมีข้อมูล กี่ตัว (นักศึกษา) 4 (อาจารย์) 4 ตัว ถูกไหมคะ Key ครูคืออะไรบ้าง Key คือ James, Thomas, Danny แล้วก็ Bobby สิ่งเหล่านี้คืออะไรคะ คือ Key 1,828, 3,000, 9,000 แล้วก็ 4,000 คือ Value ใช่ไหม เวลา ครูต้องการเข้าถึงค่าคะแนนของ Bobby ครูอยากเข้าถึง อยากรู้ว่า Bobby ได้คะแนนเท่าไร ครูก็อ้างอิงถึงอย่างไรคะ scores[ แล้วก็ Key ของตัวนี้ คือ Bobby นะคะ แล้วก็ ] คราวนี้ ทุกคนเปิด Anaconda อยู่หรือเปล่า เปิด Ananconda อยู่ใช่ไหม คราวนี้นะคะ สร้าง Dictionary ตัวนี้ให้ครูหน่อย สร้างตัวนี้ Scores Dictionary ชื่อ Scores ทุกคนพิมพ์ค่ะ เราจะมี Dictionary นะคะ ชื่อ Scores มี Key อยู่ 4 ตัว Value อยู่ 4 ค่านะคะ เราจะมาสร้าง Dictionary นะคะ ชื่อ Scores กัน สไลด์ครูมีอยู่ใน Classroom นะคะ เป็นไฟล์ PDF กับไฟล์ PowerPoint ให้ อยู่ใน Classroom นะคะ เสร็จหรือยัง คราวนี้ ถ้าใครเสร็จแล้วนะคะ ถ้าใครพิมพ์เสร็จแล้ว หา คำตอบให้ครูหน่อยว่า scores['่james'] นะคะ Scores แล้วค่าคะแนนของ James คือ James คือ Key ใช่ไหมคะ James มีคะแนนเท่าไร เวลาเราจะ Print ใช่ไหมคะ เวลาเราจะ แสดงข้อมูลนี่ เราก็ใช้คำสั่งอะไร Print James ตัวหน้านี้ ข้างหน้านี่ มันเป็นสิ่งที่เราต้องการให้แสดง ที่หน้าจอใช่ไหมคะ เป็นข้อความที่เราต้องการ ให้แสดง เราก็เลยมีเครื่องหมาย Quote ใช่ไหม เครื่องหมายคำพูดนะคะ แล้ว , ค่าที่เราต้องการ แสดงคืออะไร ก็คือคะแนนของ James ก็คือ scores[ นะคะ แล้วก็ Key ก็คือ james เอ้า ลองดูสิคะ ว่าบรรทัดที่ 1 ของคำสั่ง แรกนี่จะตอบว่าอะไร บรรทัดนี้ตอบอะไรเอ่ย ตอบเท่าไรคะ ผลลัพธ์จากการใช้คำสั่ง Print ตัวนี้ ผลลัพธ์เป็นอะไรคะ ผลลัพธ์เป็น 1828 คนอื่นได้ไหม คะแนน ของ James ก็คือ 1,828 ได้คำตอบหรือยังคะ คำสั่งที่ 1 ได้แล้ว คราวนี้พอได้คำสั่งที่ 1 นะคะ คำสั่งที่ 2, 3, 4 ไม่พิมพ์นะ ไม่ต้องพิมพ์นะคะ แต่ตอบครู ได้ไหมว่า scores['thomas'] ตอบเท่าไรคะ 3,628 รู้ได้อย่างไร ตัวนี้ Thomas ตัวนี้คือ Key ใช่ไหม คือ Key นะคะ เพราะฉะนั้นเอา Key มาเทียบ ในตัว Dictionary จะได้ค่านี้นะคะ แล้วเราอยากรู้ว่า แล้ว Key คือ Thomas นี่มีค่าเท่าไร ก็คือ 3,628 ใช่ไหมคะ พิมพ์อันเดียวก็พอ แต่อันอื่นเราก็ตอบได้นะคะ เห็นแล้ว เห็น คำสั่งเราก็ตอบได้นะคะ Danny scores['danny'] เป็นเท่าไร 9,310 นะคะ scores['bobby'] ก็คือ 4,401 ใช่ไหม โอ.เค ได้นะ อันนี้คือการเข้าถึงข้อมูลใน Dictionary นะคะ เมื่อเราดึงข้อมูลจาก Dictionary แล้วนะคะ ถ้าเราอยากจะปรับปรุง ข้อมูลที่อยู่ใน Dictionary บ้าง จะทำอย่างไร ถ้าเราอยากจะปรับปรุง คือ เปลี่ยนค่าคะแนน นะคะ เราจะทำอย่างไร เราก็กำหนด ค่าเขาได้เลยนะคะ ให้ scores[ นะคะ ต้องการปรับค่าข้อมูลที่ Key ตัวไหน ก็ระบุลงไปนะคะ แล้วก็ ] = ค่าใหม่ที่เราต้องการเปลี่ยนแปลงนะคะ อย่างเช่น ครูต้องการ เปลี่ยนค่า Thomas จากเดิมนะคะ คือ 3,628 เปลี่ยนค่า เป็น 100 ครูก็เอาค่าใหม่นี่ ไปใส่ ลงไปใน Key ที่ชื่อว่า Thomas นะคะ พอครูเปลี่ยนค่า แล้วเราอยากรู้ ว่ามันเปลี่ยนจริงไหม ต้องใช้คำสั่งอะไรคะ Print ออกมา ตอนนี้ทุกคน เปลี่ยนค่าของ Thomas สิคะ พิมพ์คำสั่งนี้ เปลี่ยนค่าของ Thomas ให้เป็น 100 แล้ว ลองเช็กดูสิว่า มันเปลี่ยนจริงไหม ทำ 2 คำสั่งนี้ เราจะเปลี่ยนค่าของ Thomas ได้ไหมคะ เราจะเปลี่ยนค่าของ Thomas อย่างเช่น เรา Key ผิด เราพิมพ์ผิดนะคะ เรา ก็จะปรับปรุงค่าใหม่ พอเรา Print ออกมาแล้ว ค่าเราเปลี่ยนไหม เปลี่ยนไหมคะ ลองทำเฉพาะคำสั่งที่ครูตีกรอบ สี่เหลี่ยมตัวนี้นะคะ พิมพ์คำสั่งที่ 1 คือ คำสั่งนี้นะคะ ที่ครูตีกรอบสี่เหลี่ยมให้ เสร็จแล้ว เราก็ต้องการอยากรู้ว่า ค่ามันเปลี่ยนไหม ก็ต้อง Print ออกมาดู ก็ใช้คำสั่งนี้นะคะ เขียนแค่ 2 คำสั่ง คำสั่งที่ 1 แล้วก็คำสั่งที่ 2 คราวนี้ ผ่านไหมคะ ได้นะ อันนี้คือเราเข้าถึงข้อมูลทีละค่า ใช่ไหมคะ เราอ่านข้อมูลทีละค่า ตาม Key ที่เราระบุลงไปนะคะ เราอ่านทีละค่าตาม Key ที่เรากำหนด คราวนี้ ถ้าครูอยากจะอ่าน ข้อมูลที่อยู่ใน Dictionary นะคะ ทั้งหมดเลยว่าประกอบ ไปด้วยข้อมูลอะไรบ้าง อยากจะ Print ออกมาทั้งเลยนะคะ ว่าใน Dictionary ที่เราสร้าง ขึ้นนี่ มีข้อมูลอะไรบ้างนะคะ เราจะไม่เข้าถึงข้อมูล ทีละตัว ถ้าเราต้องการเข้าถึง ข้อมูลพร้อมกันทั้งหมด คือให้มัน Print ออกมาทีเดียว นะคะ หลาย ๆ ค่า เราจะใช้ Loop for นะคะ เราจะใช้ Loop for คือ การทำงานซ้ำ ก็คือ การวนซ้ำนะคะ การวนซ้ำ ก็คือ ทำไปเรื่อย ๆ จนกว่าจะครบ ตามที่เรากำหนด สมมุติครูมี ดูพร้อมกันก่อน นะคะ ครูมี Dictionary อยู่ 1 ตัว เก็บข้อมูลประเทศนะคะ โดย Key คือชื่อย่อ ของประเทศ Value คือชื่อเต็ม ของประเทศนะคะ เป็นภาษาอังกฤษ ครูอยากจะ แสดงข้อมูลทั้งหมดที่อยู่ใน Dictionary ที่ชื่อว่า "Countries" นะคะ ที่ชื่อว่า Countries เราจะแสดงข้อมูลอย่างไร เราจะใช้ Loop for นะคะ เป็นตัววน Loop เราจะใช้นะคะ คำสั่ง คือ Items ดูทีละตัว for k , v คือตัวแปรที่เราจะ เอาไว้ใช้ในการรับค่า Key กับ Value นะคะ k กับ v คือตัวแปร ที่เราสร้างขึ้นจะใช้เป็นตัวแปรชื่ออะไรก็ได้ นะคะ ครูกำหนดให้เป็น k กับ v "k" เก็บค่า Key "v" เก็บค่า Value นะคะ in ตามด้วยชื่อของ Dictionary.Items มี S นะคะ ( แล้วก็ ) แล้วก็ ใส่ ; เราต้องการแสดงค่า Key กับ Value ใช่ไหมคะ ตอนนี้เขาจะอ่านทีละตัว แล้วเก็บในตัวแปร k กับ v เพราะฉะนั้น เราต้อง Print ตัวแปร k ก็คือ Key ถูกไหมคะ และ ตัวแปร v ก็คือ Value ออกมา เขาจะทำงานอยู่ทั้งหมด 4 รอบด้วยกัน ใช่ไหมคะ รอบที่ 1 ก็จะ เอาข้อมูลตัวแรกออกมาก่อน วน อ่านซ้ำ เขยิบไปตัวถัดไปนะคะ อ่านซ้ำก็จะดึงตัวถัดมาลง แสดง แล้วก็ตัวสุดท้ายนะคะ เขาก็จะ ทำงานทั้งหมด 4 รอบ คือ Print ออกมา 4 ครั้งนะคะ เท่ากับจำนวนที่อยู่ใน Dictionary ของเรา โอ.เค. ไหม ทีนี้เดี๋ยวดูก่อนนะ นะคะ แล้วค่อยทำ อันนี้คือการอ่านค่า Dictionary นะคะ คราวนี้ ถ้าเราต้องการเฉพาะ key อย่างเดียว เอา Key ออกมาอย่างเดียวนะคะ ไม่อยากรู้ว่ามี Value อะไรบ้าง อยากรู้ว่า ใน Dictionary ของเรานี่มี Key อะไรบ้าง ก็วน Loop เหมือนเดิมใช่ไหมคะ ก็เป็น for k ก็คือตัวแปร ที่ครูสร้างขึ้นเพื่อเก็บค่า Key in countries ก็คือชื่อ Dictionary .keys มี S นะคะ เอาเฉพาะ Key มาก็ .keys นะคะ ( แล้วก็ ): ต้องการแสดงก็ใช้ Print ใช่ไหมคะ เอาค่า K ออกมาอย่างเดียว ถ้าครูมีเฉพาะ K นะคะ คำตอบมันจะเรียงลงมาทีละบรรทัด แต่ถ้าครูต้องการให้มันเรียงต่อ ในบรรทัดเดียวกัน ก็จะใช้แบบนี้นะคะ , end = ช่องว่าง ก็คือใส่ ' ' เป็นช่องว่างไป ตรงนี้ก็จะหมายถึง ช่องว่างตรงนี้นะคะ อันนี้คือเอา เฉพาะ Key ถ้าเอาเฉพาะ Value บ้าง ก็เปลี่ยนจาก Key ตรงนี้ เป็น Value เฉย ๆ เลยนะคะ ก็เปลี่ยนจากคำสั่ง Key นี่ ให้เป็น Values เติม S ตัวแปรตัวนี้จะใส่เป็นอะไรก็ได้ นะคะ ครูสร้างตัวแปรคือ v เสร็จแล้วเราก็ Print ค่า v ออกมา ที่หน้าจอ มันจะเหมือน ๆ กันเลยถูกไหมคะ ไม่ได้มีอะไร ต่างกันเลย เปลี่ยนแค่คำสั่ง ถ้าต้องการทั้ง Key กับ Value ใช้ Items ต้องการ Key เฉย ๆ ใช้คำสั่ง Keys ใช่ไหมคะ ต้องการใช้ Value เฉย ๆ ก็ใช้คำสั่ง Values คือมันก็ตรงไปตรงมานะคะ คราวนี้ถ้าบอกว่า ไม่อยากวน Loop นะคะ มีคำสั่งอื่นไหม ที่แสดงได้แบบง่าย ๆ เลย ก็ใช้คำสั่งนี้เลยนะคะ countries.keys ก็จะเอาค่า Keys ออกมาให้เลย ไม่ต้องใช้ Loop for นะคะ หรือ countrise.values ก็จะโชว์ค่า ออกมาให้นะคะ แต่ผลลัพธ์ที่ได้ จะอยู่ในรูปแบบของ List นะคะ อันนี้คือจะง่าย เดี๋ยวค่อยลองทำนะคะ ถ้าอยากหาขนาด ของ Dictionary ใช้คำสั่งอะไรคะ Len หาคำสั่งของ List ก็ใช้อะไร ก็ใช้ Len นะคะ คำสั่งจะคล้าย ๆ กันเลย หาคำสั่ง... หาขนาดของ List ก็ใช้ Len หาขนาด ของ Dictionary ก็คือมีข้อมูลกี่จำนวน ก็ใช้ Len นะคะ len(countries) คิดว่าจะตอบเป็นอะไร มีค่าเท่ากับ 4 ใช่ มีค่าเท่ากับ 4 ก็คือมี 4 ชุด มี Keys 4 ตัวเท่านั้นเอง ถ้านับนะคะ ถ้าอยากเอา Dictionary มารวมกัน ถ้าอยากเอา Dictionary มารวมกันทำอย่างไร เอา d1 กับ d2 มา รวมกันนะคะ รวมเสร็จแล้ว เอาไปไว้ที่ไหน ก็เอาไปไว้ที่ d1 นะคะ ก็คือเอา d2 นี่มาต่อ d1 ก็จะใช้ คำสั่ง Update นะคะ d1 .update( แล้วก็ d2 นะคะ แล้วก็ Print ออกมาดูสิ d1 มีค่าเป็นอะไร ก็จะได้ข้อมูลแบบนี้นะคะ เอาข้อมูลตัวที่ 2 น่ะมาต่อตัวที่ 1 อันนี้คือการต่อข้อมูลกันใน Dictionary นะคะ คราวนี้ ทุกคนมีสไลด์ใช่ไหม เข้า Classroom ได้ไหมคะ ได้ ครูให้นะคะ เราทำถึงตรงนี้ใช่ไหม ครูจะให้ทุกคน ลองสร้าง ลองทำพร้อมกันก็ได้ค่ะ แต่ถ้าใครทำเร็ว ไปดูในสไลด์นะคะ ใน Classroom แล้วลองทำ ทุกคำสั่ง ไม่ว่าจะเป็น การใช้ Value ใช่ไหมคะ ใช้ Key ใช้ Item นะคะ แล้วก็การหาขนาด เริ่มต้น สร้างตัวแปรที่ชื่อว่า Countries เก็บข้อมูล Dictionary นะคะ แล้วก็แสดงข้อมูลตรงนี้ออกมาดู ทำ ๆ ทีละคำสั่ง จะได้ฝึกพิมพ์นะคะ การที่เราฝึกพิมพ์เราจะ ได้รู้ว่า อ๋อมันพิมพ์คำสั่งแบบนี้ แล้วต้องดูผลลัพธ์ด้วยนะคะ ไม่ใช่ พิมพ์เฉย ๆ นะ พิมพ์ตามครู พิมพ์แล้วก็ต้องดูด้วย ว่าผลลัพธ์ที่ได้ อ๋อมันเป็นแบบนี้ ใช้คำสั่ง นี้ ได้ผลลัพธ์แบบนี้นะคะ ถ้าใครเสร็จก่อน นะคะ ไปดึงสไลด์ใน Classroom แล้วพิมพ์ตามนะคะ จาก หน้านี้เป็นต้นไป ใครพิมพ์แล้ว Error ยกมือนะคะ เดี๋ยวครู ไปดูให้ ใครเสร็จแล้ว ก็มาทำสไลด์ตัวนี้ ใช่ไหม พิมพ์ตรงไหน ก็พิมพ์คำสั่ง for อย่างไร พิมพ์คำสั่ง for ตรงนี้นะคะ ข้างบนนี้ ต้องสร้างใหม่ไหม ไม่สร้างแล้ว สร้างครั้งเดียวพอ นะคะ Dictionary ไม่ต้องสร้างใหม่แล้วนะคะ ถ้ามันมีของเดิมอยู่ ก็ใช้ ของเดิม เราก็แค่มาใช้คำสั่งตรงนี้ นะคะ เดี๋ยวครูย้อนกลับไป บางคนยังไม่เสร็จอันเดิม ทุกคนนะคะ ถ้าใครพิมพ์หน้าแรกเสร็จแล้ว เข้ามาที่ Google Classroom เข้ามาที่ Classroom วิชานี้เร็ว เพราะบางทีเราพิมพ์ ความเร็วไม่เท่ากันนะคะ เข้ามาที่ Classroom ตัวนี้หรือยังคะ แล้วก็ มาที่สไลด์ตัวนี้ Array .ppt เห็นไหมคะ อะ เปิดขึ้นมา เห็นไหมเราก็จะ เริ่มสไลด์ ที่ 29 นะคะ อันนี้เราทำแล้วใช่ไหม เราก็ เปิดไปสไลด์ที่ 30 นะคะ เราก็ใช้คำสั่งตรงนี้ for ใช่ไหม นะคะ เราต้องการเอาเฉพาะ Key เราก็พิมพ์ตัวนี้ for สไลด์ถัดมา 31 เราต้องการเอาเฉพาะ Value เราก็พิมพ์เฉพาะคำสั่งนี้ นะคะ ได้ไหม อันนี้ใครยังไม่เสร็จ หน้านี้ใครยังไม่เสร็จ เอา Key กับ Value เอาแค่... เอาแค่คำสั่ง 2 บรรทัดนี้ ไม่ต้องพิมพ์เยอะนะคะ เอาแค่คำสั่ง 2 บรรทัดนี้ คราวนี้เสร็จแล้ว มาอ่านเอาเฉพาะ Key เอาเฉพาะ Key ก็คือพิมพ์ คำสั่งนี้ใช่ไหมคะ เอาเฉพาะ Key เฉย ๆ อันนี้เสร็จหรือยัง คำสั่งนี้ได้ไหมคะ ครูย้อนกลับมาที่ตัวแรก ถ้าเป็น k กับ v ก็คือต้องใช้ Item ถูกไหมคะ ถ้าใช้ Items ต้องมี k กับ v อืม เพราะว่า Items ต้องการ ค่าแสดง 2 ค่าคือ Key กับ Value นะคะ ได้ไหม แต่ถ้าเป็น Keys คำสั่งเป็น Keys ตรงนี้เอาเฉพาะค่าเดียวก็คือค่า k นะคะ ถ้าใครเสร็จแล้ว ก็ถ้าเราต้องการเฉพาะ Value นะคะ เอาเฉพาะค่า ที่อยู่ใน Dictionary ออกมา ... แล้วใช่ไหมคะ เราสามารถดึงค่า Value ออกมาได้ คราวนี้ลองใช้ 2 คำสั่ง นี้ดูสิคะ ลองใช้ 2 คำสั่ง นี้ดู จะได้ผลลัพธ์ออกมา เป็นอย่างไร คราวนี้ใครเสร็จแล้วนะคะ ครูขอเปิดแป๊บหนึ่ง ให้ทำแบบฝึกหัด ได้ไหม ให้ทำแบบฝึกหัด ลองนะ คนทำเสร็จแล้วทำแบบฝึกหัดต่อเลย ใครยังไม่เสร็จทำก่อน หาขนาดหรือยังคะ หาขนาดเสร็จแล้ว ก็รวม หาขนาดเสร็จแล้วก็รวม นะคะ ใช้คำสั่งที่ครู สร้าง Block ให้ รวม Dictionary อันนี้คือรวม Dictionary นะคะ รวมได้ไหม รวมเสร็จแล้ว เดี๋ยวเรามาดูแบบฝึกหัดนะ ทำข้อ 2 ก่อน ข้อ 2 ง่าย ทำข้อ 2 ก่อนเร็ว ข้อ 2 จะง่ายมาก เราเคยทำแล้ว เอา 2 อันมารวมกันทำอย่างไร เอา dic 2 อันมารวมกัน เดี๋ยวเราทำข้อ 2 ก่อน ข้อ 2 จะง่ายกว่าข้อ 1 เอา dic มา รวมกันใช้คำสั่งอะไรคะ Update คราวนี้ดูข้อ 2 ค่ะ ดูโจทย์ข้อ 2 ดูนะ แบบฝึกหัดข้อ 2 ครูบอกว่าให้รวม Dictionary อันดับแรกเราก็ต้อง สร้าง dic1 ก่อนใช่ไหมคะ เสร็จแล้วต้อง สร้าง dic2 เสร็จแล้วนี่ เอา dic2 มารวมกับ dic1 ใช้คำสั่ง Update ใช่ไหมคะ dic1 .update( dic2 เห็นไหมสร้าง ตัวที่ 1 ตัวที่ 2 นะคะ รวม เอ๊า บรรทัด Sample Dictionary ไม่เขียนนะคะ บรรทัดนี้น่ะไม่เขียน ไม่ต้องลอกโจทย์ สร้างเลย สร้าง dic สร้าง dic ใช่ไหม เราจะรวม ใช้คำสั่งอะไรเหมือนตัวนี้เลย จะรวม ๆ ๆ เห็นไหม ใช้คำสั่งอะไร Update เหมือนกันเลย ถ้าใครทำแบบฝึกหัด พิมพ์ตามครูแล้ว อันนี้จะต้องทำได้ ใช้ Update นี้เลย คราวนี้ ข้อ 2 นะคะ เราก็ใช้คำสั่ง เดี๋ยว คราวนี้มาดู ข้อ 2 ทำแบบเดียวกันไหม เราสร้าง dic1 แล้วก็ dic2 แล้วใช่ไหมคะ ครูอยากจะรวม ข้อมูล 2 อันเก็บไว้ที่ dic1 ครูก็ใช้คำสั่ง dic1.update( dic2 นะคะ เอา 2 มารวมไว้ที่ 1 เสร็จแล้วก็ สั่ง Print ออกมาดู คราวนี้ ย้อนกลับมาดูข้อ 1 ย้อนกลับมาดูข้อ 1 เร็ว ในโจทย์ข้อ 1 นะคะ ครูบอกว่า สร้าง Dictionary นะคะ ที่ มีค่าแบบนี้ ถูกไหม เราก็ต้อง สร้างก่อนนะคะ สมมุติครูให้เป็น x นะ แล้วก็สร้าง Dictionary ก่อนนะคะ ทุกคนสร้างขึ้นมาเป็นตัวแปรอะไรก็ได้ อันดับแรกครูให้สร้าง dic ก่อน เราก็สร้างนี่ เราสร้างแล้ว ใช่ไหมคะ จากนั้น ครูให้เพิ่มค่า ใช่ไหมคะ ค่า Key คือ 2 Value คือ 30 เวลาเราจะ เพิ่มข้อมูลลงไปใน Dictionary เราจะใช้คำสั่ง Update ถูกไหม คราวที่แล้วน่ะ เราเอามาต่อกัน แสดงว่าเราเพิ่ม ข้อมูลลงไปใน Dictionary นะคะ เพราะฉะนั้น เราจะเพิ่มข้อมูลลงไปใน dic ตัวนี้ ก็ใช้เป็น x. อะไรคะ Update แล้วก็ () ก่อน จะเอาค่าอะไรใส่ลงไป เนื่องจากมันเป็น Key กับ Value ต้องอยู่ภายใต้ { กับ } เอาค่าอะไรคะ 2 กับ 30 ลงไป จากนั้น อยากรู้ว่า มันเพิ่มจริงไหม ก็ใช้คำสั่ง Print อะไรคะ print(x) จะเห็นว่า จากเดิมนะคะ ที่เราใช้คำสั่ง เดี๋ยวครูเพิ่มอีกข้อหนึ่งให้เรา ข้อที่ 2 นะ จะเห็นว่าครูใช้ dic1.update(dic2) dic2 นี่ มันก็คือ dic ถูกไหม คุณสามารถเอาค่า มันมาใส่เลยหรือเอาตัวแปรมาใส่ก็ได้ เพราะครูก็เลย อย่างนี้ อันนี้คือใช้ตัวแปรใช่ไหม แต่ข้อข้างบนครูเอา ค่าที่ต้องการจะเพิ่มน่ะมาใส่เลย นะคะ เหมือนกัน ได้ไหม ถ้าใครเสร็จแล้วให้เบรก 5 นาที ให้พัก 5 นาที ค่อย ๆ นั่งดู นะคะ ค่อย ๆ นั่งดูคำสั่งนี้คืออะไร เอาสไลด์มา แล้วก็มาหัดทำทีละคำสั่ง คราวนี้ดูนะคะ ครูอยากรู้ว่าเราแยก List กับ Dictionary ออกไหม คือเหมือนรูปร่างนะ นะคะ เหมือนเราแยกผลไม้ตามรูปร่าง เห็นรูปร่างแบบนี้ เราก็บอกได้ว่า อันนี้คือผลไม้ชนิดอะไรนะคะ อย่าง List กับ Dictionary นี่ รูปแบบการเขียน ไม่เหมือนกันเลยนะคะ ครูแค่อยากรู้ว่า เราพอมองออกไหมว่า List เป็นอย่างไร Dictionary เป็นอย่างไรนะคะ ครูมีโจทย์อยู่ 3 ข้อด้วยกันนะ มี x, y, z ตัวแปร x, y แล้วก็ z ข้อไหนเป็น List บ้าง 1, 2, 3 1 กับ 3 เป็น List ข้อ 2 เป็นอะไรคะ เป็น Dictionary ถูกไหม มีใครแยกไม่ออกไหม ว่า รูปแบบการเขียนอันไหน ที่เป็น List รูปแบบอันไหนที่เป็น Dictionary นะคะ Dictionary ต้องมี Key กับ Value ใช่ไหมคะ Dictionary ต้องมี Key กับ Value นะคะ ส่วน List เราจะใช้ Index ในการ เข้าถึงข้อมูลนะคะ โอ.เค. เราจะมาดูรูปแบบของโครงสร้าง ข้อมูลอีกแบบหนึ่ง ก็คือ Stack นะคะ ก็คือ Stack เดี๋ยวมาดูว่ามันเป็นแบบไหน อันนี้นะคะ Stack เป็นรูปแบบอีกแบบหนึ่งนะคะ เคยไปทานก๋วยเตี๋ยวไหม ทุกคนเคยไปผ่านร้านก๋วยเตี๋ยวไหมใช่ไหมคะ เคยนั่งทาน เคยนั่งมองถ้วยที่เขาเอามาทำก๋วยเตี๋ยวไหม เคยนั่งมองไหม ระหว่างรอก๋วยเตี๋ยว เขาวางจาน... เขาวางถ้วยเป็น ลักษณะแบบนี้ใช่ไหม บางร้าน ก็จะคว่ำใช่ไหมคะ บางร้านก็จะหงายถ้วย ไม่สำคัญ ก็คือ จะมีการเรียงถ้วย ขึ้นไปแบบนี้ใช่ไหมคะ เวลาเขาหยิบชามมาทำให้คุณ เขาหยิบจากข้างล่าง หรือหยิบจากข้างบน (นักศึกษา) จากข้างบน (อาจารย์) มีร้านไหนไหมหยิบมาจากข้างล่าง มีไหม ไม่มี ใช่ไหมคะ เวลาเขาทำก๋วยเตี๋ยว ในร้านใช่ไหมคะ เขาจะหยิบถ้วยข้างบนออก คราวนี้ พอเรานั่งมองไปเรื่อย ๆ ถ้วยมันก็ลดลงไปถูกไหม เขาก็เอาถ้วยใหม่น่ะ มาวาง เขาซ้อนด้านล่างหรือซ้อนด้านบน (นักศึกษา) ซ้อนด้านบน (อาจารย์) ซ้อนด้านบนถูกไหมคะ ถ้วยแรกนี่ที่เขา เอามาวางนี่จะถูกใช้ตอนไหน ตอนสุดท้ายเลยถูกไหม ไม่ถูกใช้ สักทีน่ะ วางทับขึ้นไปเรื่อย ๆ ถูกไหมคะ ถ้วยนี่ ล่าสุดที่วางจะถูกหยิบออกไปใช้ก่อน ถูกไหม ใช่ไหมคะ ถ้วยที่วางตั้งแต่เช้านี่ จะถูกใช้ ทีหลังนะคะ อันนี้คือรูปแบบของการจัด เก็บข้อมูลแบบ Stack นะคะ และ การเรียกใช้ข้อมูลแบบ Stack คือ เข้าก่อนออกทีหลัง เข้าก่อนออกทีหลังนะคะ เข้าทีหลังออก... ออกก่อน ใช่ไหม เข้าก่อนออกทีหลัง เข้าที่หลังจะออกก่อนนะคะ คราวนี้เราเทียบกับอะไร ถ้าเรา เทียบ คือ ข้อมูลนี่แทนจานแต่ละ... ถ้วยแต่ละใบนะคะ ข้อมูลไหนที่เข้ามาเก็บก่อนจะถูกดึงออกไปใช้ทีหลัง ส่วนข้อมูลไหนที่อยู่บนสุดหรืออยู่ ล่าสุดนี่ จะถูกดึงออกไปใช้ก่อนนะคะ เราไม่สามารถดึง ตรงกลางออกไปได้ เคยเห็นไหมเวลาทานก๋วยเตี๋ยว เขาเอาถ้วยตรงกลาง ออกไปใช้ ไม่มี ใช่ไหมคะ เพราะฉะนั้น เวลาเอาข้อมูลออกไปใช้ เราต้องเอาตัวล่าสุดที่อยู่ข้างบนออกไปใช้ จะไม่มาดึงตรงกลางนะ นะคะ ไม่มาดึง ออกตรงกลางนะคะ คราวนี้ รูปแบบของการจัดเก็บแบบนี้นะคะ เข้าทีหลังออกก่อน ก็คือ Last In Fist Out นะคะ เข้าทีหลังออกก่อน อย่างที่ครูอธิบาย ข้อมูลที่เข้า มาใน Stack ลำดับแรกจะอยู่ด้านล่างสุด ถูกไหม อยู่ด้านล่างสุดของ Stack นะคะ เราจะเรียกโครงสร้างตรงนี้ว่า "Stack" ข้อมูล ที่เข้ามาเป็นลำดับสุดท้ายก็จะอยู่ข้างบนสุดนะคะ ข้อมูลที่เข้ามาในลำดับสุดท้ายจะถูกเอาไปใช้งานก่อน ข้อมูลที่เข้ามาแรกสุดเลย จะถูกเอามาใช้ทีหลังสุดนะคะ คราวนี้ แล้ว Stack นะคะ รูปแบบของการจัดเก็บข้อมูลแบบ Stack เราเก็บแบบไหน เราใช้เป็น List ก็ได้ถูกไหม ข้อมูลมาเรียงต่อกันไปหรือ Array นะคะ หรือเป็น Link List ก็ได้นะคะ แล้วแต่เราจะเลือกวิธีการเก็บ แต่คอนเซปต์ของ Stack มีแค่ว่า เข้า ทีหลังออกก่อน ถึงจะเรียกว่ามันคือ Stack นะคะ คราวนี้ดู การทำงานของ Stack ต้องมีเข้ากับออก ใช่ไหม การทำงานของ Stack ต้องมีเข้ากับออก จะมีเข้ากับออกได้กี่ทาง Stack เรามองร้านก๋วยเตี๋ยว มองถ้วยนี่ ที่เขาเรียงต่อไป มีทางเข้าทางออกกี่ทาง ทางเดียวถูกไหม ใช่ไหม ถ้า 2 ทาง คือต้องมีบนกับล่าง แต่เราเอาออกแค่ ด้านบน เอาเข้าด้านบนใช่ไหมคะ เพราะฉะนั้น Stack จะมีทางเข้าทางออกเพียงแค่ 1 ทาง เท่านั้นนะคะ การนำข้อมูล เข้าไปเก็บไว้ใน Stack เราจะใช้คำสั่งที่ชื่อว่า "Push" Push ถูกไหมคะ ก็คือดันน่ะ เหมือนประตูมี Push ถูกหรือเปล่า แล้วเวลาเราเอาข้อมูลออกจาก Stack จะใช้คำสั่ง "Pop" นะคะ ถ้าพูดถึง Stack จะต้องรู้จัก Push กับ Pop Push คือใส่ Pop คือเอาออกนะคะ คราวนี้มาดู อันนี้คือตัวอย่างนะ เราไม่สามารถเปิดออกมา ได้ดูว่า ในหน่วยความจำ Stack เก็บแบบไหน เราก็ ต้องจินตนาการ นี่มันต้องเก็บแบบนี้นะคะ เพื่อให้ เราเข้าใจ ได้ไหม คราวนี้ Stack ว่าง Stack ว่างมีข้อมูลไหม ถ้าพูดถึงคำว่า "Stack ว่าง" คำว่า "ว่าง" มีข้อมูลไหม ไม่มีนะคะ ถ้าพูดถึง Stack ว่าง คือ ไม่มีข้อมูลเลย Stack ว่างอยู่ นะคะ ถ้าครูต้องการใส่ข้อมูลลงไปใน Stack ครูจะใช้ Push หรือ Pop Push ใช่ไหมคะ ครู จะใส่ข้อมูลลงไปใน Stack หย่อนข้อมูลลงไป ครูก็ใช้คำสั่ง push (a) a คือข้อมูลนะคะ เห็นไหม พอครู Push มันลงมา เห็นไหม เราสร้างกล่องขึ้นมากล่องหนึ่งนะคะ อันนี้คือในจินตนาการนะ เราสร้างกล่อง ขึ้นมากล่องหนึ่งนะคะ ถ้าครูสั่ง Push ต่อ ก็คือ จะได้กล่อง b ถูกไหม ครูใช้คำสั่ง push(c) ก็จะได้กล่อง c ครูใช้คำสั่ง push(d) ก็จะได้กล้อง d ที่อยู่ข้างบน คราวนี้ ครูอยากเอาข้อมูลออกจาก Stack ครูใช้คำสั่ง Pop อะไรออกก่อน อะไรจะถูกดึงออกมา d dog ถูกไหมคะ พอครูใช้คำสั่ง Pop ปุ๊บ d dog หายทันทีถูกไหม เพราะครูดึงมันออกมาแล้วนะคะ ครูใช้คำสั่ง push(e) ก็ใส่ลงมา push(f) ก็ใส่ลงมา ใช่ไหมคะ แล้วครู Pop อะไรออก f หรือ a f f ก็จะหายไปนะคะ อันนี้คือลักษณะการทำงานของ Stack มีแค่ Push กับ Pop แค่นั้นเอง นะคะ Push คือใส่เข้า Pop คือเอาออก เวลาเรา เอาออก เราต้องบอกให้ได้ว่าเอาอะไรออก นะคะ เอาข้อมูล เอาค่าข้อมูลอะไร ออกจาก Stack คราวนี้ เราจะแทน Stack ด้วยอะไรได้บ้างนะคะ เราสามารถใช้ List แบบนี้เป็น Stack ก็ได้ใช่ไหมคะ โดยเราจะเขียนเป็นแนวตั้ง หรือแนวนอนได้หมด เพราะมันคือ List นะคะ List ข้อมูลจะเรียงต่อกันไปเรื่อย ๆ คราวนี้ ทุกคนดูตัวอย่างนี้ไว้นะคะ เดี๋ยวครูจะเขียนคำสั่ง แล้วให้ทุกคนวาดแบบนี้ได้ไหม นะคะ แล้วทุกคนก็จะวาด Block อย่างนี้ ขึ้นมา ครูจ่ายกระดาษให้คนละ 1 ใบนะคะ ครูจ่ายกระดาษให้คนละ 1 ใบ ครูมีคำสั่งนะคะ อยู่ 6 ข้อ ครูมีคำสั่งอยู่ 6 ข้อ มีแค่ Push กับ Pop แค่นั้นเอง ไม่มีอะไรอย่างอื่นเลย Push กับ Pop วาดรูปให้ครูหน่อยได้ไหมคะ วาดรูป Stack ในแต่ละข้อ ทำอย่างไร ข้อ 1 ใช่ไหมคะ ลอกโจทย์ก่อนคือ push(10) เพราะฉะนั้นเรามีอะไร 10 อย่างนี้ใช่ไหม ค่ะ ถัดไปข้อ 2 Push เท่าไรคะ 20 แต่ละข้อ ทำต่อเนื่องนะคะ push(20) เพราะฉะนั้น 20 อยู่บนหรืออยู่ล่าง 10 (นักศึกษา) อยู่บน (อาจารย์) อยู่บนอย่างนี้ ทำไปเรื่อย ๆ จนครบ 6 ข้อ เขียนใส่กระดาษ ให้ครูหน่อย คราวนี้ข้อ 3 คือ push(30) ข้อ 4 คือ Pop เอา Pop ตรงไหนออกดี เอาข้อมูลไหนออกไป ไม่รู้ ก็ไล่ลงมาก่อนถูกไหม เออ ต้องดูก่อนว่า พอ push(30) แล้ว 30 อยู่ตรงไหนนะ แล้วเวลา Pop เอาอะไรออก สุดท้ายแล้ว Stack เหลือค่าอะไรบ้าง งงไหม ค่อย ๆ ทำทีละ 1 ข้อถูกไหมคะ เอ้าเริ่มต้นข้อที่ 1 ก่อน push(10) เราก็สร้าง Block เก็บข้อมูล 10 พอข้อ 2 เรามี 10 แล้ว เรา Push เท่าไรคะ push(20) ลงไป ข้อ 3 เรา Push เท่าไร push(30) จะอยู่ตรงไหนดี เอามาเรียงต่อข้างบน หรือด้านข้าง หรือด้านล่าง วาดนะคะ ข้อ 4 Pop เอาอะไรออกล่ะ Pop ลบอะไรออก แป๊บหนึ่งนะคะ ถ้าใครงง เอาสไลด์ หน้านี้ขึ้นมาดู เพราะครูโหลด ครูอัพไว้ให้ที่ Classroom แล้ว เอาสไลด์หน้านี้ มาดูเห็นไหม push(a) ได้อะไร เห็นไหม ทีละอัน แต่เผอิญเขาเขียนทีละหลาย ๆ คำสั่งอย่างไร ครูให้ทำทีละคำสั่ง push(b) ใส่อะไร เห็นไหม ก็คือ ไล่ไปอย่างนี้เป็นข้อ ๆ นะคะ นึกออกนะ ครูทำข้อ 1 กับข้อ 2 ให้ล่ะ ทำต่อให้ครูหน่อย จนครบ 6 ข้อ เอ้าลองดูสิ ข้อ 1 ครูทำแบบไหน ข้อ 2 เอ๊ะ คำสั่งนี้ แล้วครูทำแบบไหน พอ มาข้อ 3 ก็ลองเลียนแบบสิ่งที่ครูทำดูสิคะ ดูนะคะ Push Push ข้างบนนะ ตัวล่าง ตัวแรก 10 นี่ จะถูกดันลงมานะคะ 10 จะถูกดันลงมา แล้วก็ใส่ตัวใหม่ถูกไหม พอ Push อีก 2 ตัวนี้ก็จะถูกดันลงมา แล้วก็ใส่ตัวใหม่ ไม่เอามาต่อข้างหลังนะ นึกถึง ถ้วยก๋วยเตี๋ยวน่ะ จะดึงออกมาจากด้านล่างหรือ หรือจะเอามา ต่อด้านล่างดัน ๆ ขึ้นไป คงไม่ใช่นะคะ อันนี้มาดูพร้อมกันน่ะค่ะ มา ๆ เดี๋ยวครูลบใหม่ก่อน คราวนี้ ดู ๆ นะคะ เราจะวาดอย่างไร เดี๋ยวครูให้ทำแบบฝึกหัดอีกข้อหนึ่ง ครูใช้ คำสั่ง push(10) ใช่ไหมคะ ครูสร้าง Block 10 มาไว้ ก่อน ครูใช้คำสั่ง push(10) ครูสร้าง Block 10 มา ครูใช้คำสั่งอะไรคะ push(20) เพราะฉะนั้น เดิมมีอะไรคะ เดิมมี 10 ก็เขียน ของเดิมก่อน คือ 10 แล้ว ต่อข้างบนด้วยอะไร 20 นะคะ ดู ๆ ดูบนกระดานก่อน มา ๆ ต่อมาข้อ 3 ครูใช้คำสั่งอะไรคะ push(30) เดิมมีอยู่กี่อัน มีอยู่แล้ว 2 อัน ถูกไหมคะ ถ้า Push น่ะ ให้วาดของเดิมก่อน ถ้า Push นะคะ ให้วาดของเดิมก่อน มีอะไร เสร็จแล้วเราใส่อะไรไป 30 ก็ต้องเอามาต่อข้างบน ถัดมา ครูใช้คำสั่ง Pop Pop คือ เอาออก เอาข้างบนหรือข้างล่างออก เอาข้างบนออกถูกไหมคะ เพราะฉะนั้นเหลืออะไร 20 กับ 10 ถูกไหม ครูใช้คำสั่ง Pop คือ เอาออก เอาอะไรออก ก็ต้องเอาตัวบนสุดออก เพราะฉะนั้นมันจะเหลืออะไร เหลือ 20 กับ 10 ถูกไหมคะ หลังจากที่เราใช้คำสั่ง Pop อีกหนึ่งครั้ง เราเหลืออะไร เหลือ 10 หลังจากที่เราใช้คำสั่งนี้ แล้วผลลัพธ์ เป็นอย่างไร เราก็วาดรูปนะคะ เสร็จแล้วเรา Push อะไรคะ push(50) เดิมมีอะไร เดิมมี 10 Push ก็คือ เพิ่มเข้าไป ข้างบนเป็นเลข 50 ได้ไหม พอได้ไหม อีกอันหนึ่ง ลองทำอีกข้อหนึ่ง แบ่งครึ่งกระดาษก็ได้นะคะ เขียนในกระดาษแผ่นนั้นล่ะ ครูมีอยู่ 5 ข้อ push('A') push('B') Pop() Pop() แล้วก็ push('C') แสดงวิธีทำ หลังจากที่ทำแต่ละคำสั่ง ผลลัพธ์เป็นอะไร ครู push('A') ถูกไหมคะ ครู push('A') ครูสร้าง Block A ขึ้นมา เสร็จแล้ว push('B') ทำอย่างไร เอา A เดิมมาไว้ก่อน ถูกไหมคะ แล้วก็ต่อด้วย B สงสัยไหม ถ้าสงสัยต้องถาม นะคะ ว่า มันคืออะไร Push Push Pop Pop นี่ เดี๋ยววันนี้เราเอาคอนเซปต์ Stack นะคะ Push กับ Pop ให้เข้าใจ คราวนี้มาดูนะคะ ครู push('B') ได้แล้ว ข้อ 3 คือ Pop คือ Pop ใช่ไหม เอาอะไรออก เอา B ออก เพราะฉะนั้น เหลืออะไรคะ เหลือ A เหลือ A นะคะ ข้อ 4 ครูสั่ง Pop อีกครั้งหนึ่ง เพราะฉะนั้นเหลืออะไร ไม่เหลือนะคะ จะเขียนหรือ ไม่เขียนก็ได้ เสร็จแล้ว ครูใช้คำสั่ง push('C') ก็คือ ครูต้องสร้าง Block ใหม่ คือ C นะคะ Stack สุดท้ายเหลือข้อมูลอะไร C ได้นะ มีใครยังงงอีก ไม่รู้ว่า Push กับ Pop อย่างไร งงไหม คราวนี้ต่อได้ไหม นะคะ เวลาเรา จะใช้คำสั่ง Push ข้อมูลลง Stack อันนี้ให้ดูก่อนนะ เดี๋ยวสัปดาห์หน้า เราค่อยมาเขียนนะคะ เวลาเราจะเพิ่มข้อมูลลงไป ใน Stack เราบอกว่า Stack ของเรานี่คือ List นะคะ เรากำหนดให้ Stack ของเราคือ List ที่เราเรียนไปนี่ คราวก่อนนะคะ เพราะฉะนั้นคำสั่งใน List ที่จะเพิ่มข้อมูล คือ ใช้คำว่า "Append" นะคะ ใช้คำว่า Append ครูเขียนฟังก์ชันขึ้นมานะคะ 1 ตัวก็คือ Push โดยส่งค่าข้อมูลที่เราจะ Push ลงไป เสร็จแล้ว ครูก็สั่งถูกไหมคะ Stack ครูชื่อ Stack Stack.append( ค่าข้อมูลที่จะใส่ไปคืออะไรนะคะ อันนี้ คือ Push คอนเซปต์ของ Push เรารู้แล้ว อันนี้คือแปลงมาเป็น Code ของโปรแกรม Stack ว่างนะคะ Stack ว่าง Stack ว่าง คือ ไม่มีข้อมูลนะคะ ครูถามว่า ถ้า Stack มันว่าง เราสามารถ Pop ได้ไหม ถ้า Stack มันว่าง ไม่มี ไม่มี Stack ไม่มีจาน เลยสักใบนี่จะเอาไปใส่ก๋วยเตี๋ยวได้ไหม ไม่ได้ ใช่ไหมคะ คอนเซปต์แบบเดียวกัน ถ้า Stack มันว่าง แสดงว่ามันไม่มีข้อมูลอะไรแล้ว เราก็ต้องโชว์คำว่า "Stack ว่าง" หรือ "Stack Empty" นะคะ เพื่อบอกว่าต่อไปต้องหาข้อมูล มาใส่นะ แต่ถ้ามี ก็ดึงออกมานะคะ ถ้ามันยังมีข้อมูลอยู่ใน Stack เราก็ดึงมันออกมา คราวนี้มาดูนะคะ จะรู้ได้อย่างไรว่า Stack มันว่าง ก็ หาขนาดของ List ถูกไหมคะ Stack มันว่างหรือเปล่าก็หาขนาดของ List ถ้าขนาดเป็นอะไรคะ เป็น 0 แสดงว่ามีข้อมูลไหม ถ้าขนาดของ List เป็น 0 แสดงว่ามี ข้อมูลไหม หา ขนาดเป็น 0 ก็ไม่มีสิ ถูกไหม ถ้ามีข้อมูล 1 ตัว ขนาดเท่ากับเท่าไร เท่ากับ 1 นะคะ เราก็เช็กก่อนว่า Stack มันว่างไหม เช็กจาก ขนาดของ Stack นะคะ ถ้ามันว่างก็ไม่ต้องทำอะไร แต่ถ้ามันไม่ว่างก็ Pop มันออกมา นะคะ ก็ใช้คำสั่ง Pop ได้เลย ครูต่อนะคะ ถ้า ครูอยากดูข้อมูลบนสุดที่อยู่ใน Stack นะคะ อยากรู้ว่าข้อมูลล่าสุดที่อยู่ใน Stack คืออะไรนะคะ เราจะใช้ Stack[-1 ก็คือตัว ถ้ามองเป็น List คือตัวสุดท้ายนะคะ เอาข้อมูลตัวสุดท้ายจะใช้ Index เป็น -1 นะคะ ก็เหมือนเรากลับน่ะ ข้างหน้าเป็น 0 ข้างหลังก็กลับ ก็คือให้เป็น -1 หาขนาด หาขนาดของ Stack ใช้คำสั่ง Len นะคะ ใช้คำสั่ง Len เดี๋ยวเราจะมาเขียน Code กันนะคะ คราวหน้า ดูว่าจะ เอาข้อมูลเข้าเอาข้อมูลออก แล้วเหลือข้อมูลอะไรบ้าง นะคะ เดี๋ยวสัปดาห์หน้า Stack เอาไปใช้ทำอะไร เดี๋ยวดูคร่าว ๆ ก่อนนะ Stack เอาไปใช้ทำอะไร บวกเลขได้ไหมคะ ทุกคน บวกลบเลขได้ไหม ได้ ใช่ไหมคะ ทุกคนบวกลบเลขได้หมดเลย เดี๋ยวแป๊บหนึ่ง ครูถามว่า 5 + 4 x 2 ตอบเท่าไรคะ ตอบให้ครูหน่อย 5 + 4 x 2 ตอบเท่ากับ หา หา มีใคร ได้คำตอบอื่นไหมน่ะ อ้าวใช้ความรู้เดิม 5 + 4 x 2 ตอบเท่ากับ มีใครได้คำตอบอะไรบ้าง 1. คือ 13 เราได้ เท่าไรคะ 18 มีคนอื่นได้อีกไหม ทำไมโจทย์เดียวกันได้ค่า 2 ค่า มีใครได้มากกว่า 13 กับ 18 ไหมคะ ใครได้ 13 ยกมือหน่อยเร็ว ใครคำนวณแล้วได้ 13 ยกมือ ไหนมี 1 คน แล้วมีใครอีกคะ มี 2 คนคู่นั้น ใครได้ 18 อ้าวที่ไม่ยก คือออะไร บวกเลขไม่เป็นหรือ ทุกคนบวกเลขเป็น มี 13 กับ 18 ใช่ไหมคะ ตอนสมัยเรียนประถมฯ มัธยมฯ คุณครูบอกว่าถ้าเจอวงเล็บก่อน ให้ทำข้างในวงเล็บใช่ไหม นะคะ ถ้ามีวงเล็บ ให้ทำให้วงเล็บ แต่บังเอิญว่าอันนี้ ไม่มีวงเล็บนะคะ แต่เป็นตัวเลขที่เรียงต่อกันมา ระหว่างบวกกับคูณ อันไหน มีลำดับความสำคัญมากกว่ากัน บวกกับคูณ อะไรสำคัญกว่ากัน คูณ เพราะฉะนั้นเรา ควรทำบวกก่อนหรือคูณก่อน ควรทำอะไรก่อน (นักศึกษา) ทำคูณก่อน (อาจารย์) คูณก่อน 4 x 2 เป็น 8 แล้ว บวกกับ 5 ตอบเท่ากับ 13 ใช่ไหมนะคะ กรณีที่ไม่มีวงเล็บอย่างไร เราก็ต้องดูว่า อันไหนคือลำดับความสำคัญมากกว่านะคะ บวก กับลบเท่ากัน ทำอะไรก่อนก็ได้บวกกับลบ คูณกับหาร อย่างนี้เท่ากันนะคะ แต่คูณ จะมากกว่าบวกกับลบ จะเห็นไหมคะว่า การบวกเลขตรงนี้นะคะ ถ้าเราเอาใส่ใน Excel นะคะ หรือในคอมพิวเตอร์ที่สามารถ ประมวลผล ไม่ใช่เครื่องคิดเลขนะ เพราะเครื่องคิดเลขเราจิ้มทีละตัว ถ้าใครไปเอาเครื่องคิดเลขธรรมดานะ มาจิ้มก็ไม่ถูกนะ นะคะ ต้องเป็นเครื่องคิดเลขวิทยาศาสตร์ เครื่องคิดเลขในมือถือเราน่ะได้ ที่ใส่เป็นชุดได้นะคะ เราบวกลบเลขใช่ไหมคะ แล้วคอมพิวเตอร์นี่ เราใส่ข้อมูลตัวนี้ คอมพิวเตอร์ นี่จะคำนวณให้ได้ไหม ได้ เอาไปลอง Test ใน Excel นะคะ ก็คำนวณให้ได้ คอมพิวเตอร์ คำนวณได้อย่างไร เขาใช้ Stack นะคะ ช่วยในการคำนวณตัวเลขให้ออกมาเป็น 13 เดี๋ยวรอบหน้านี่จะมีวิธีการคำนวณ นะคะ ว่า คอมพิวเตอร์นี่คำนวณ มาได้เลข 13 นี่ คำนวณอย่างไรนะคะ ไม่ได้ง่าย ๆ เลยนะ มีขั้นตอนเยอะมากนะคะกว่าจะได้ เลข 13 มาแต่เราทำอย่างไรคะ ใส่ปุ๊บเดียว ใน Excel ออกมาเลยไหม ออกมาเลยใช่ไหมคะ แต่เราจะมาดู แล้วเบื้องหลังมันคำนวณ แบบไหนนะคะ รอบหน้า เราคำนวณ ได้ เราต้องรู้ด้วยว่า แล้วคอมพิวเตอร์คำนวณอย่างไร นะคะ เดี๋ยวครูจะฝากการบ้านนะ ทุกคนมีชีตนะคะ List Dictionary นะคะ Stack เดี๋ยวครูจะ ฝากการบ้านกับพี่ปอย ง่าย ๆ ไม่ยากนะ เดี๋ยวจะ Print มาให้ นะคะ ลองทำดู เป็นการทบทวนนะคะ เป็นการทบทวน เผื่อเวลา สอบนะ จะได้เข้าใจนะคะ จะได้จำได้ เดี๋ยวเจอกัน สัปดาห์หน้านะคะ เดี๋ยวครูจะฝากการบ้านไว้ให้ค่ะ เดี๋ยว... [สิ้นสุดการถอดความ]