เข้าไปที่ลิงค์ลิสต์เขาได้ยินไหมได้ยินไหมเอ่ยโอเคได้นะคะ โอเคเริ่มฮัลโหลค่ะพี่ล่างได้ยินไหมคะ พี่ล่ามได้ยินไหมคะยิ้มใส่ใครค่ะวันนี้นะคะเดี๋ยวจะมาต่อในเรื่องของ Link List นะคะคราวที่แล้วเราเพิ่ม node ใหม่ เข้าไปในลิสต์ถูกไหมคะ เราเพิ่มโน้ตใหม่เข้าไปในลิงค์ลิสต์ เพิ่มตรงกลางเพิ่มข้างหน้า แล้วก็เพิ่มข้างหลังนะคะ วันนี้เราจะมาพูดถึงการลบบ้าง การลบก็คือการเอา node ออกนะคะ การลบก็คือการที่เราดึง node ออกนะคะ ทำอย่างไรไม่ให้มันมันปรากฏอยู่ในลิสต์ของเราเราก็ต้อง สร้างเส้นเชื่อมใหม่เราก็ต้องลากเส้นเชื่อมใหม่นะคะเราสามารถลบได้ครั้งหน้า ตรงกลาง แล้วก็ข้างหลังเหมือนกัน คราวนี้ ครูมีลิงค์ลิสต์ถูกไหมคะอันนี้คือลิงค์ลิสต์นะ สภาพคือ Link List Link List ที่เราเห็นที่หน้าจอนะคะ มีทั้งหมดกี่ node node ทั้งหมดคือสี่เหลี่ยมใช่ไหม node มีทั้งหมด 3 node ด้วยกันอันนี้คือหน่วยที่ 1 node ที่ 2 แล้วก็ node ที่ 3 เห็นไหมคะ รู้ได้อย่างไรว่าอันไหนคือด้านหน้าต้น List ของ List รู้ได้อย่างไร ว่าอันไหนคือ node แรก 3 7 หรือ 10 ก็คือ node นี้ใช่ไหมคะ รู้ได้อย่างไรเพราะว่ามีเหตุที่อยู่เราก็เลยรู้ว่าโดดหมายเลขที่มีข้อมูลหมายเลข 3 คือ node ที่อยู่ต้น List หรืออยู่หัวแถวนะคะ ถัดมาถ้าตอนนี้นะคะ ครูถามต่อว่า สมมุติครูถามถึงข้อมูลนะคะแบบนี้ Test.Data จะตอบเท่ากับเท่าไหร่ Test. Data จะตอบเท่ากับ 3 ทันไหมคะ เหตุก็คือตัวชี้นะคะ Test ก็คือตัวชี้นะคะ ที่อยู่ที่นี่ Data Data ก็คือข้อมูลใช่ไหมคะ พูดถึงวัด Data แล้วข้อมูลใน node ที่ชี้อยู่ เก็บข้อมูลอะไรก็คือ 3 นะคะ ถ้าครูต้องการลบข้อมูลใน node 3 อันนี้ทิ้งไป ครูทำอย่างไร ครูก็แค่อยากให้ใหม่คะ มาที่ node ถัดไป เพราะเหตุผิดที่ไหนตัวนั้นคือหัวแถวหรือต้น List เพราะฉะนั้นถ้าเราต้องการลบ node 3 นะคะ ที่มันอยู่ด้านหน้าสุดเราจะทำอย่างไรเราก็เขียนคำสั่งให้เอาเหตุมาชี้ที่ node 7 เราจะใช้คำสั่งอะไรตอนนี้ขึ้น node 7 คือเส้นนี้ชี้อยู่ คือเส้นนี้ที่มันเชื่อมอยู่ด้านหลัง ชี้อยู่เส้นนี้มันออกมาจาก node ไหน node สาม อยู่เส้นนี้ก็เลยเป็น test connect เราจะย้าย test ก็ใช้คำสั่งเหตุไปชี้ที่ test.net ที่อยู่ ซื้อที่ไหน ที่นี่ใช้หรือเปล่า ที่นี่ช่องนี้ช่อง 22 มันชี้ไปที่ช่องไหนช่องที่ 7 เพราะฉะนั้น test ตัวเดิมที่อยู่ช่องข้างหน้าสุด จะย้ายไปอยู่ที่ 7 นะ จะชี้ไปอยู่ที่ 7 โอเคนะคะ คราวนี้ลบข้างหน้าได้แล้วมาลงตรงกลางนะคะ ตรงกลางบ้างมันกลางคือลบอะไร ลบ node 7 ตรงนี้ node 7 จะอยู่ระหว่าง 3 กับ 10 เราจะลบตัวนี้ทิ้งไปเราจะทำอย่างไรอันดับแรก ต้องวาดรูปถูกไหมคะจะได้รู้ว่าจาก 3 ต้องกลับมาที่ 10 ใช่ไหมคะ จาก 3 เราจะเชื่อมมัดที่ 10 แล้วเส้นนี้จะเขียนคำสั่งอะไรสังเกต node 3 มีตัวชี้ previous node 7 มีตัวชี้ตรงนี้คือ current node ครูจะลบตัวนี้ออกเส้นนี้มันออกมาจาก 3 ใช่หรือเปล่า node หามันมีอะไรชี้อยู่ previous node ก่อนนะ นี้มาที่ไหนสีมาที่ 10 แล้วสิบอะไรชี้อยู่ ที่อยู่ถูกไหมคะ มาดูใหม่นะ วันนี้นะคะ เรามาดูพร้อมกัน เล่มนี้เราต้องการเขียนคำสั่งเส้นสีแดง ที่ครูลากเส้นเมื่อกี้นี้เส้นนี้มันออกจากไหนออกมาจากตัวนี้ ชี้อยู่ถูกไหมคะ previously ออกมาช่องนี้ออกมาจาก node 3 ที่มีชื่อว่า previous.Net ออกมาจากจุดนี้มันมาชี้ที่ 10 ถูกไหมคะ แล้วที่ 10 มีอะไรชี้อยู่มันมีแค่ 1 เส้น แล้วเส้นนี้มาจากไหนออกมาจากจุดนี้คือ current node ออกมาจากช่องที่ชื่อว่าเล็กนะคะ มันก็เลยเป็น previous node.net เท่ากับ ลองทำแบบฝึกหัดนะ เดี๋ยวดูอีกตัวหนึ่งท้ายสุด สุดท้าย ท้ายสุด สุดท้าย node สุดท้ายเลย ลบ node สุดท้ายที่มีคีย์ชี้อยู่ ทำอย่างไรก็ให้ P = ไปเลย none ตัวนี้หายไปเลย เท่ากับ null คนเอาชีทเก่ามาไหม เอาชีทเก่ามาสิคะ คราวที่แล้วเราเหลือข้อ 4 นะคะ ที่เรายังทำไม่เสร็จที่ครูต้องการลบ node 20 ซึ่งมันอยู่ตรงกลางพอดีเลย อยู่ตรงกลางพอดีเลยโจทย์ข้อนี้เลยเราจะเขียนคำสั่งแบบไหน เขียนให้ครูดูหน่อย ข้อ 4 ครูจะลบโน๊ตตรงกลางเหมือนกันนะ ในโจทย์ที่ครูให้ล่างตรงกลางซ้ายมีอะไรชี้อยู่ ตัวที่ลบมีอะไรชี้อยู่ ลองดูสิคะ แป๊บนึงนะ อะ ดู ๆ นะคะ อะ คราวนี้ดู เรามี node 3 node ใช่ไหมคะ ที่ครูให้นะในข้อ 4 แรกเก็บข้อมูล 13 หมด 2 เก็บข้อมูล 20 และบทสุดท้ายเก็บข้อมูล 33 รู้เลย 13 กระโดดที่ 1 นะคะ ตามมาด้วย 20 แล้วก็ 33 รู้จักไหนนี่ไง มีตัวชี้ไปตัวถัดไป ครูต้องการลบ node ที่เคยชี้อยู่ก็คือลบ node ที่ 20 ต้องการลบ node นี้นะคะ ครูต้องการลบหมด 20 ทิ้งไป อันนั้นอันดับแรกสุดเลยก่อนถูกไหม ลากเส้นไหนล่ะ เราต้องลองว่า ครูก็ว่าสีชมพูนะคะ 13 แล้วก็ต้องต่อด้วย 33 ถูกไหม node นี้จะหายไป เพราะครูต้องการลบ node 20 นะคะ ครูจะเขียนคำสั่งแบบไหน อันดับแรก อะ ดูพร้อมกัน อันดับแรกจุดเริ่มต้นตรงนี้ จุดตรงนี้มันออกมาจาก node 13 นะคะ แล้ว node 13 มีอะไรชี้อยู่ มี previous เสร็จแล้วมันออกจากช่องนี้ใช่ไหมคะ ช่องที่ 2 ของ node ห้องนี้มีชื่อเรียกว่า previous.Netชี้ไปที่ไหนมันชี้มาที่ 33 ถูกไหมคะ 33 แล้ว 33 มีอะไรชี้อยู่ มันไม่มีเส้นข้างนอกชี้มันมีแค่เส้นนี้เดียว มีลูกศรชี้มาอยู่ตัวเดียว แล้วเส้นนี้คำสั่งคืออะไร แล้วก็ดูต่อมันออกมาจาก node นี้ใช่ไหมคะ node 20 มีอะไรชี้อยู่ อยู่ปล่อยมันออกมาจากช่องที่ชื่อว่าใครเป็น previous next = .net อันนี้เสร็จหรือยังคะ ข้างหลังเสร็จแล้วหรือยังคะ ข้างหลังบนกระดาน ลอกตามครูเสร็จแล้ว คราวนี้ย้อนกลับมาดู link list ที่เราเรียนมานะคะ สัปดาห์ที่แล้ว วันนี้เรียนเพิ่มเรื่องของการลบ เริ่มเอาแบบง่าย ๆ ก่อน เราลองทนนะ คราวที่แล้ว คำถามที่ 1 นะ ครูมีโจทย์ให้ ข้อแรกครูถามว่า Link List ที่ครูกำหนดให้มีกี่หน่วย ตอบพร้อมกันได้ไหมคะ Link List ที่ครูกำหนดให้ด้านบนมีกี่node มีกี่สี่เหลี่ยม สี่เหลี่ยมมีอยู่ 4 node แล้ว node อะไรเป็นข้อมูลใด เป็น node แรกเก็บข้อมูลอะไรคะ รู้ได้อย่างไร Test ดูที่ test นะคะ ตอบว่า 5 นะคะ ถัดมาเราจะเข้าถึงข้อมูลที่อยู่ในลิงค์ลิสต์ เราใช้คำสั่งเหล่านี้นะคะ มีอยู่ 5 ข้อยังจำได้ไหม คราวที่แล้วเราเคยทำใช่ไหมคะ test.Data ตอบอะไรท้ายด้วย Data ที่อยู่ในมาตอบ ถ้าครูลงท้ายด้วย test หามาตอบครูหน่อย เจ็บคอ ตอนนี้เป็นการทบทวนนะคะ ลองดูสิเราเรียนสัปดาห์ที่แล้วมาถึงสัปดาห์นี้เรายังจำได้อยู่ไหม อะ คราวนี้ดูวิธีการสังเกตนะ เวลาเราเขียนคำสั่งนะคะ เราต้องการเอาคำตอบมาใส่ จะเห็นว่าตัวสุดท้ายที่ครูเขียน ถูกไหมคะ ก่อนเครื่องหมายเท่ากับ 2 มีค่าอะไรมี Data เห็นไหมไม่มีตัวอื่นเลยมีแค่ Data Update อ่ะ Data แล้วก็ติ๊กได้แค่ 2 คำแค่นั้น ก็คือData entry 2 แบบนะคะ แล้วจะเอาอะไรมาใส่ เอาอะไรมาตอบ ถ้าลงท้ายด้วย Data ไม่เอาข้อมูลอยู่ใน node อยู่ในช่องสี่เหลี่ยมนี่มันตอบถ้าลงท้ายด้วย next ให้เอาตัวชี้มาตอบถูกไหมคะ เอาที่อยู่ที่ node ไหนก็รู้ว่า node นะนี่มีอะไรชี้อยู่ ก็เอาตัวสูงนั่นล่ะมาตอบ มาดูพร้อมกัน ข้อแรกเดี๋ยวคุณครูเขียนให้ก่อนนะ เล่นอย่างที่เราตอบอยู่แล้ว มีอยู่ 4 node node อะไรเป็น node แรก เท่าไหร่คะ node 5แต่ถ้า head.data แสดงว่าต้องเอาข้อมูลมาใส่ใช่ไหมคะ head คือตัวสีนี่ head จะอยู่ที่ไหนอยู่ ที่ตัวแรก .Data คืออะไรเอามาใส่คะ ค่ะ เมื่อคืน head.Data ถัดมา head.net Update Data head อยู่ที่นี่ .Net กระเถิบมา mello.me แล้วมันเดินไป 1 ช่อง ช่องถัดไปแล้ว อยู่นี่มีข้อมูลอะไร 10 ใช่ไหมคะ คือ 10 ถัดมาที่ตรงนี้เป็นการที่ครูที่อยู่ เดินทักไปดูที่อยู่ที่ 20 แล้วคำตอบครูถามเด็กว่า ฉะนั้นต้องตอบตัวชี้แล้ว 20 มีอะไรชี้อยู่อยู่นะคะ จัดมาข้อ 6 ครูที่อยู่ในข้อมูลคือ OK q.next ตกขอบเลย ว่าตอบอะไรคะ นั่น que.next ไม่มีอะไรแล้วยังตกขอบเลย เลยต้องเอา null มาใส่ ดูสิคะเหมือนของเราไหม OKได้ไหมคะ มาเราเข้าถึงข้อมูลในการใช้คำสั่งแล้วนะคะ ถ้าครูอยากจะเพิ่ม node ใหม่เข้าไป เพิ่ม node ใหม่นะคะ อยากจะเพิ่ม node ใหม่เข้าไปที่ท้าย list เป็นตัวสุดท้ายนะคะ 20 แล้วต่อด้วย ตัวนี้ node ใหม่ที่สร้างขึ้นมาต่อท้าย 20 ก่อนจะเขียนคำสั่ง ถูกไหม มาเสียหน่อยจะได้รู้ว่ามันต่อท้ายอย่างไรนะคะ อะ เดี๋ยวลอกโจทย์ก่อน เดี๋ยวครูรอแป๊บนึง ให้เวลาลอกโจทย์ก่อน เสร็จหรือยังคะ อะ ถ้าใครทำได้ลองเขียนคำสั่งเส้นนี้สีชมพูนะคะ ให้ครูหน่อยว่าสร้างเส้นนี้ขึ้นมาต้องใช้คำสั่งอะไร แป๊บนึงนะ ขออภัยครูแก้ node ที่สร้างใหม่หน่อยนะ เพราะชื่อมันซ้ำกัน ครูลืมดู โทษที เป็นตัว T ต้นไม้ เส้นที่เราสร้างขึ้นมาใหม่นะคะ แล้วก็เขียนคำสั่งให้กับเส้นนี้ ดูว่าที่เราออกมานี่นะคะ node 20 นี่มันมีอะไรชี้อยู่ มันมีที่อยู่ใช่ไหมคะตัว T.next ด้วย มันออกมาจากช่องที่ชื่อว่า มาที่ไหน ที่วันที่ 30 แล้ว 30 มีอะไรที่อยู่คือ มี T นะคะ จะได้เป็น T.next = T ได้ไหมคะ ได้ไหมคะ เสร็จหรือยัง คราวนี้ถัดมา มี 2 ข้อช่วยครูทำหน่อย เพิ่ม node ใหม่ระหว่าง 20 กับ 30 เอา 20 แล้วตามด้วย 25 แล้วก็ตามด้วย 30 นะคะ รหัสมาลบ node 20 เมื่อคืนลบ node ที่อยู่ต้น List ใช้คำสั่งอะไร เพิ่ม node ใหม่นะคะ เราก็วาดเส้นเชื่อมเหมือนเดิมจาก 20 มา 25 จาก 25 ไป 30 ใช่ไหม node 20 ก็ตัดตัวนี้ทิ้ง คราวนี้นะคะ เดี๋ยวมาดูกัน อันที่ 1 อันนี้เส้นที่ 21 นักเขียนพูด นักเขียนคำสั่งว่าอย่างไร เริ่มต้นจากตรงนี้ใช่ไหมคะ แล้วอะไรชี้อยู่ เห็นไหมคะ ครูเริ่มต้นจากตรงนี้แล้วมีอะไรชี้อยู่ คือมี head ชี้อยู่นะคะ ช่วงนี้มีชื่อว่า test ก็คือ head ที่มาที่ไหน ที่มาที่ 25 25 มีอะไรชี้อยู่ อยู่อันนี้คือเส้นที่ 1 นะคะ หน้าคือเส้นที่ 2 ออกจากตรงไหน ออกจากตรงนี้ถูกไหมคะ ที่ครูชี้อยู่มีอะไรชี้อยู่นี้มีชื่อว่า t.next ชี้ไปที่ข้างบนนี้อะไรที่อยู่ที่ t ชี้อยู่ ูถัดมา ครูจะลบ node 20 ลบตัวนี้ทิ้งไป อยู่ตัวแรกใช่หรือเปล่า แสดงว่าเราลบ node แรกเมื่อเราลบ node แรก เราต้องทำอะไรคะ เราต้องย้าย head ได้ head ไปไว้ที่ไหนคะ ไปที่ 30 แล้ว 30 มีอะไรที่อยู่ t ก็คือ head เนื้อหาก็จะประมาณนี้นะคะ ให้เรารู้ Concept ของ linked list นะ เวลาเราจะเข้าถึงข้อมูลเ วลาเราจะเพิ่มเวลา เราจะลบนะคะ ครูให้เบรคอีก 5 นาที เดี๋ยวครูจะติวทั้งหมดเลย โจทย์นะ ตอนสัปดาห์หน้านะคะ เราจะนัดสอบกัน สัปดาห์หน้ามีสอบอะไรบ้าง ตั้งแต่เรื่องแรกเลย อัลกอริทึมคืออะไร ใช่ไหมคะ การวัดประสิทธิภาพ Big O Dictionary และ นะคะ หาเรื่องให้เบรคก่อน 5 นาทีนะ เดี๋ยวหลังจากนั้นครูจะทวนให้นะคะ พร้อมนะคะ เดี๋ยวเราจะมาทวนเนื้อหาที่เราเรียนผ่านมา ว่าเราเรียนเรื่องอะไรไปบ้างนะคะ สรุปสาระสำคัญ เรื่องแรกที่เราเรียนนะคะ เราพูดถึง algorithm ยังจำได้ไหม algorithm แปลว่าอะไรเอ่ย algorithm นะคะ ก็คือขั้นตอนที่เราใช้ในการแก้ปัญหา ซึ่งปัญหาเดียวกันนะคะ เราอาจจะมีวิธีการแก้ไขปัญหาที่แตกต่างกัน นั่นคือขึ้นอยู่กับ algorithm หรือวิธีคิดที่เราใช้นะคะ เรามี algorithm เพื่อทำอะไร เรามีโจทย์นะคะ เราจะหาคำตอบจากโจทย์นั้นได้อย่างไรนะคะ เราต้องมีวิธีทำ วิธีทำตัวนั้นล่ะ ก็คือ algorithm หรือนะคะ ถ้าเราทำกับข้าว algorithm ก็คือวิธีการทำกับข้าว ไม่ว่าถ้าเราต้องการไข่เจียว 1 จาน เรามี algorithm ในการทำไข่เจียวนั้นอย่างไร ก็ต้องมีตั้งแต่การเตรียมไข่ถูกไหมคะ ตั้งกระทะ ตอกไข่ ตีไข่อะไรก็ว่ากันไปนะคะ คราวนี้ครูยกตัวอย่างนะ เช่นการทำไข่ต้ม เช่นการทำไข่ต้ม ครูก็ต้องมีขั้นตอนนะคะ 1 2 3 4 5 เริ่มตั้งแต่ ตั้งน้ำ ต้มน้ำให้เดือด ใส่ไข่ลงไป รอ 10 นาที ไฟ แล้วก็ตอกไข่ เอาไข่ขึ้นมา แล้วก็ปลอกไข่ algorithm ตัวนี้เพื่อให้ได้ไข่ต้ม เราจะข้ามขั้นตอนไม่ได้ใช่ไหมคะ เราต้องทำตามขั้นตอนนี้ เพื่อให้ได้ผลลัพธ์ตามที่เราต้องการนะคะ เช้านี้เรามี algorithm นะคะ เช่นอีกอย่างหนึ่งแม่ให้เงินไป 100 บาท แม่ให้ไปซื้อหมูปิ้งใช่ไหมคะ 100 บาทที่เขาขายเป็นชุด สมมุติชุดละ 20 บาท เราจะไปซื้ออย่างไรถูกไหมคะ เราก็เดินไปซื้อ สั่งถูกไหม ว่าจะต้องซื้อหมูปิ้งกี่ชุดนะคะ เสร็จแล้วเดี๋ยวพอเขาใส่มาให้เรา เราก็ต้องมีการตรวจสอบถูกไหม ว่าเขาให้ถูกหรือเปล่า แล้วก็ถือกลับมาให้แม่ อัลกอริทึมที่เราเขียนนะคะสิ่งเหล่านี้จะถูกแปลงไปเป็นโปรแกรม เช่นอีกอย่างหนึ่งคำนวณการหาพื้นที่สามเหลี่ยม 1 ส่วน 2 คูณฐาน คูณสูง เราต้องดูว่าฐานคืออะไร สูงคืออะไร แล้วก็นำมาคำนวณโดยการใส่สูตรหาพื้นที่ พอเราได้วิธีคิดแบบนี้ เราก็เอาไปเขียนโปรแกรมถูกไหมคะ จากขั้นตอนที่เราคิดเมื่อกี้ ควรจะต้องทำอะไรก่อน แล้วก็เอาไปเขียนโปรแกรมนะคะ อันนี้เราเอาของเราไปสู่การเขียนโปรแกรมนะคะ เราต้องมีการวัดประสิทธิภาพของอัลกอริทึม การวัดประสิทธิภาพของ algorithm ในคลาสนี้ การวัดโดยการสนใจในเรื่องของเวลาที่ใช้ในการประมวลผล เราสนใจว่าเวลาที่ใช้ในการประมวลผลนะคะ ของอัลกอริทึมของเรามันมีค่าเท่าไหร่นะคะ ซึ่งเราจะใช้ตัววัดที่ชื่อว่า Big o นะคะ เราใช้ตัววัดที่ชื่อว่า Big O ในการวัดประสิทธิภาพ สัญลักษณ์คือตัว O ตัวใหญ่นะคะ ในการวัดประสิทธิภาพของ algorithm เราก็ต้องมาดูก่อนว่าแล้วอัลกอริทึ่มที่เราเขียนนะคะ ที่เขียนเป็นโปรแกรมนี่เรามีคำสั่งแบบไหน เรามีคำสั่งให้เรียงเป็นลำดับลงมา หรือเป็นเเรียงคำสั่งที่มีเงื่อนไข หรือเป็นคำสั่งที่ใช้ในการวนลูปก็คือทำซ้ำหลาย ๆ รอบ แต่ละรูปแบบนะคะ การดำเนินการแต่ละรูปแบบนะคะ มีวิธีคิดที่ต่างกัน เช่น การหาค่า Big O ที่ต่างกัน เช่ยตัวแรกหาค่าบิ๊กโอกับแบบค่าคงที่หมายถึงอะไร ค่าคงที่เราไม่ได้ทำซ้ำนะ แบบค่าคงที่นะคะ เราจะวัดว่าคำสั่งแต่ละคำสั่งที่ไม่ใช่การวนลูปและไม่ใช่แบบที่ตรวจสอบเงื่อนไข แต่ละคำสั่งทำงานกี่ครั้ง เมื่อเรากดปุ่มรันนะ เมื่อเราทำงานเสร็จ กดปุ่มรันเขียนโปรแกรมเสร็จ เรากดปุ่ม Run ปุ๊บ ทั้งที่เราเขียนขึ้นแต่ละบรรทัด ทำงานอีกครั้งนะคะ คำสั่งแต่ละบรรทัดทำงานกี่ครั้งจาก โปรแกรมที่ครูให้ไปมันมีโปรแกรมอยู่ 2 บรรทัดนะคะ บรรทัดแรกเป็นการกำหนดค่าเริ่มต้น บรรทัดที่ 2 เป็นการคำนวณใช่ไหมคะ บรรทัดแรกกำหนดค่าเริ่มต้น บรรทัดที่ 2 เป็นการคำนวณ เวลาเรากดปุ่ม Run ปุ๊บ เขียนโปรแกรมเสร็จ บรรทัดที่ 1 จะเริ่มทำงานที่บรรทัดที่ 1 ก่อน ทำเสร็จจะเลื่อนมาเป็นบรรทัดที่ 2 มันมีอยู่ 2 คำสั่งใช่ไหมคะ เสร็จแล้วมันก็จบการทำงาน เพราะฉะนั้นคำสั่งแต่ละตัวทำงานเพียง 1 ครั้งเท่านั้น จะทำงานเพียง 1 ครั้งเท่านั้น จากนั้นมาหาค่าฟังก์ชันนะคะ เพื่อจะเอามาคำนวณค่า big o เรารู้ว่าแต่ละบรรทัดทำงาน 1 ครั้ง เราก็เอาตัวเลขหนึ่งในแต่ละบรรทัดมาบวกกัน จะเป็น 2 นะคะ ไม่มีการทำงานวนซ้ำถูกไหม ฉะนั้นเราจะบอกได้ว่า คำสั่งที่เราเขียนขึ้นเป็นคำสั่งที่ทำงานเรียงลำดับลงมาเรื่อย ๆ ทำงานเพียงบรรทัดละ 1 ครั้ง บิ๊กโอจะตอบว่าโอ 1 นะคะ bigo จะตอบว่าโอ 1 นะคะ ถึงแม้ว่าตรงนี้จะบวกกันกี่ครั้งก็ตาม แต่มันทำงานแต่ละคำสั่งเพียง 1 ครั้งนะคะ ก็จะตอบเท่ากับโอ 1 นะคะ ถัดมา กรณีที่เป็นการตรวจสอบเงื่อนไข กรณีที่เป็นการตรวจสอบเงื่อนไข การตรวจสอบเงื่อนไขนะคะ เราใช้คำสั่ง If เราใช้คำสั่ง If เป็นการตรวจสอบเงื่อนไข ตรวจสอบเงื่อนไขหลัง if ใช่ไหมคะ เป็นจริงจะทำบรรทัดถัดไป มาทำหลัง else คือทางเลือกถูกไหมคะ การตัดสินใจทำหรือไม่ทำ จริงหรือเท็จ ถ้าไม่จริง ทำหลัง else นะคะ สมมุติครูกำหนดให้ n = 2 n = 2 ครูมาตรวจสอบ เช่น เช่นนะคะ n OK คราวนี้มาดูนะคะ เสียงดังไปไหม อะ คราวนี้ดูนะคะ จากตารางตัวนี้นะคะ ครูกำหนดให้ตรง loop for เป็น n มันคือ 3 เพราะฉะนั้นค่าที่เป็นไปได้นี่ของข้า i เนี่ยมันควรจะเป็นค่าอะไรบ้าง มันก็คือเป็นค่า 0 ค่า 1 2 นะคะ ถ้า i ที่เป็นไปได้นี่ก็มีอยู่ 3 ค่าด้วยกัน เอามาจากไหนจากที่ครูกำหนดด้านบน คือ 3 เพราะฉะนั้นไปที่เป็นไปได้ก็คือมี 0 1 2 ใช่ไหมคะ มี 0 1 แล้วก็ 2 คราวนี้ตัดมาถ้า i เป็น 0 คำสั่ง for ทำงานอยู่แล้วใช่ไหมคะ คำสั่งก็ทำเป็นหนึ่งสั่งฟ้องจะทำถูกไหม เพราะมันอยู่ในช่วงตัวเลขที่กำหนดเอาไว้ คำสั่งก็ทำนะคะ ก็ทำ ก็ทำเช่นกัน จำนวนครั้งทั้งหมดคือทำ 3 ครั้ง ซึ่งเลข 3 ตัวนี้มันไม่ตรงกับค่า n ที่เรากำหนดตรงกับที่เรากำหนดเพราะฉะนั้นครูกำหนด n ตัวเลขจำนวนครั้งของการทำงานก็จะเป็น n ครั้ง ครูกำหนดเป็น 3 ตัวนี้ทำงาน 3 ครั้ง ครูกำหนด n เป็น 5 จำนวนรอบของการทำงาน 5 นะคะ จากนั้น เมื่อเรารู้แล้วว่าคำสั่ง for นี่ เมื่อกำหนดให้เป็น n เป็นค่าอะไรก็ตาม จะทำงานเท่านั้นครั้ง เราจึงบอกได้ว่าไหนว่า n จะแทนด้วยเลขอะไร จะทำงานเท่ากับเป็น n ครั้ง เราก็เลยเขียนด้านบนนะคะ ด้านบนตรงนี้ว่าบรรทัดนี้ทำงาน n ครั้ง จากนั้นเรามาหาฟังก์ชันแต่ละบรรทัด มาทำงานอีกครั้ง ก็คือเอาแต่ละบรรทัดมาบวกกันบรรทัดแรกคนงาน 1 ครั้ง มันไม่ได้อยู่ภายใต้ loop อะไรอยู่ภายใต้การทำงานแบบวนซ้ำเลยเป็นหนึ่งบวก n เป็นก็คือบรรทัดที่ 2 ถูกไหมคะ ทำงาน n หลังเลนส์ตัวนี้คือบรรทัดที่ 3 บวกกัน n + n ก็ได้เป็น 2 n บวก 1 นะคะ หาค่า Big O เลือก n ที่มากที่สุด แล้วแต่ ออกก็จะได้เป็น o n อะ คราวนี้ลองดูนะคะ อันนี้คือบรรทัดที่ 1 นะ บรรทัดที่ 2 บรรทัดที่ 3 สมมุติคุณครูมีโปรแกรมมาให้อยู่ 3 บรรทัด บรรทัดแรกเป็นการกำหนดค่าเริ่มต้นให้กับ x นะคะ บรรทัดที่ 2 เป็นการทำงานแบบวนซ้ำนะคะ โดยกำหนดให้ for i in range แล้วก็มีค่า n ถ้า i อยู่ภายใต้เงื่อนไขตัวนี้ ว่าจะทำงานคำสั่ง Print นะคะ ครูกำหนดให้ N = 5 ฉะนั้น range 5 เท่ากับมีค่าเท่ากับเท่าไหร่ สินค้าตัวนี้มีค่าเป็นอะไรคะ เริ่มต้นที่เลขอะไร เริ่มต้นเลขอะไรคะ ครูเริ่มต้นที่เลขอะไร ครูเขียนเล่นแบบนี้ ครูเริ่มต้นที่ 00 10 12 34 พอหรือยังคะ พอแล้วล้อมีกี่ตัวแล้วนี่ 1 2 3 4 5 ครบแล้วนะคะ OK เพราะฉะนั้นไอ้ที่เป็นไปได้พอจะมีเลขจะมีแค่อะไรคะ ตามนี้เลย 0 1 ถ้า i ที่เป็นไปได้ใช่ไหมคะ จะมีค่า 0 1 2 3 4 ตัวนี้ไม่เกี่ยว OK มาจ๊ะ ตามตรงนี้เลยที่เราเขียนเอาไว้ข้างต้น แล้วตัวเลขเหล่านี้ต้องทำงานนะคะ ในการวน loop for ถูกให้หมดเลย แม่ค้าก็ต้องทำงานด้วย OKเพราะฉะนั้นตรงนี้ for ทำงาน 5 ครั้งกี่ครั้งคะ นับเครื่องหมายถูก 1 2 3 4 5 ทำงาน 5 ครั้ง สิ่งที่เราเห็นอะไรไหม 5 ตัวนี้จะพลาดวันนี้ ตรงกันไหม โรงงาน เพราะฉะนั้นเมื่อเราแทนด้วย N ใด ๆ ทำงานกี่ครั้งเป็นครั้งเลขตัวนี้มันเท่ากันใช่ไหม เราก็เลยเอาค่า n นี่สมัครใหม่ใช่ไหมคะ เมื่อ n n แทนอะไรก็ตามจะมีค่าทั้งหมดเป็น n ครั้ง ถัดมาเราจะมาหาค่าฟังก์ชัน n นะคะมันต้องรู้ว่าแล้วแต่บรรทัดทำงานอีกครั้ง บรรทัดที่ 1 เนี่ยทำงานกี่ครั้งคะ มันอยู่ในรูปอะไรเลย เพราะฉะนั้นมันทำงาน 1 ครั้ง อยู่ใน loop ใดๆเลยก็ตามนะคะ ไม่ได้อยู่ในloopเลยก็ตาม จะทำงาน 1 ครั้ง บรรทัดที่ 2คำสั่งนี้จะทำงานเป็นครั้งใช่ไหมคะ ตามที่เรากำหนดข้างล่าง ก็เหมือนกันทำงานเป็นครั้ง เพราะฉะนั้นถ้าฟังก์ชันที่ได้ก็คือเอา 1 บวกอะไรคะ บวกอะไรคะ n= กี่n 2n + 1 เพราะฉะนั้น Big o o n จะเท่ากับอะไรคะ เพราะฉะนั้น Big o คืออะไรคะ o 1Big O ก็คือ o1 Big O จะเท่ากับโอ 1 นะคะ พอได้ไหมคะ โอเคนะ ครูผ่านนะคะ ถัดมาเมื่อกี้คือตัววัดประสิทธิภาพใช่ไหมคะ ต่อมาทีนี้ Dictionary Dictionaryดูวิธีการเขียนนะ ถ้า List จะใช้สัญลักษณ์ข้างบนนี้ ได้ไหมคะ ขึ้น List นะ Dictionary ปีกกาเปิดคะ ใช่ Dictionary เป็นก้ามปูอะไรล่ะ เขาเรียกว่าอะไร คือก้ามปูนะ จะเห็นรูปแบบการเขียนก็ต่างกัน Dictionary ก็มีเซมิโคลอน แต่ List ไม่มีนะ ใน List เราเก็บเฉพาะค่า ถูกไหมคะ ใน List จะมีเฉพาะ Value หรือค่าเท่านั้น แต่ใน Dictaionary จะมี key และ value กด้วยนะคะ Dictionary จะมี key และ value เวลาเราเอามา เราลองเอามาวาดเป็นช่องเก็บข้อมูลจะใส่ value ลงไปแล้ว หมายเลขห้อง Index ช่องคือค่า Index เริ่มต้นจาก 0 1 2 ไล่ไปเรื่อยๆแต่ในขณะที่ Dictionary จะมี key กับ Value เอามาจากไหน ออกมาจากใน แล้วแต่ว่ามันจะเขียนแบบไหน ตัวที่อยู่ข้างหน้าสิ มีโคลอน จะเป็น Valueไหมคะ ดูวิธีถูกไหม และวิธีสังเกตตารางเพื่อผ่อนคลาย สังเกตว่าเวลาเราจะเข้าถึงข้อมูลแต่ละตัว เราจะต้องอ้างอิงถึงหมายเลข ตัวชี้หมายถึงอะไร เวลาเราจะเข้าถึงข้อมูลที่เป็น List อ้างอิงโดยการใช้ Index เราอ้างอิงโดยการใช้ Index ข้อมูล Apple เราจะดูว่า Apple อยู่หมายเลข index ที่เท่าไหร่ 0 ลงไปมันจะมีค่าเท่ากับเท่านะคะ อยากได้ Banana พนักงาน index เป็น 1 ครูก็ใส่ค่าใส่หมายเลขเราก็จะได้ค่า Banana ออกมา คราวนี้ในขณะที่ Dictionary เวลาเราจะเข้าถึงข้อมูลนะคะ เราจะใช้ key ต้องการเข้าถึง 1 ตอบก็คือวัน ว่าไง 3 คำตอบก็คือ Three นะคะ OK ถ้าเราต้องการหาขนาดของ List หรือขนาดของ Dictionary เราใช้คำสั่งlens หมายความว่านะคะ 1 หมายความว่าก็คือ 1 ตัว 2 ตัว 3 ตัวไม่ไปใช้คำสั่ง len l e n แล้วก็ใส่ชื่อ List ลงไปนะคะ เช่น ตัวนี้ต้องได้ 5 นะคะ ไม่ใช่ 6 เมื่อกี้ครูมองผิด คือ 5 นะ คำสั่งหาใช้คำสั่ง len x มีข้อมูลกี่ตัว มีทั้งหมดกี่ตัวคะ 5 ตัวถูกไหม แสดงว่า เอ๊ะ มีข้อมูลอีกตัวก็คือมี 5 ตัวนะคะ เข้าถึงข้อมูลแต่ละตัวครูก็ใช้ index ใช่ไหมคะ มันก็เป็นต้องใช้ Index เข้าถึงข้อมูลสอง เราต้องอ้างถึง index หมายเลข 0 ถ้า ครูอยากจะได้ข้อมูลทั้งหมดทีเดียวที่อยู่ใน List ครูก็ใช้คำสั่งของการวนลูปนะคะ ก็คือ for ถ้า i ตัวนี้ก็คือจะเอาค่าออกมาแล้วก็วนลูปในช่องถัดไปคือ 4 รูปในตัวถัดไปคือ 6 วนลูปไปตัวถัดไปคือ 8 ตัวต่อไปเป็น 10 นะคะ การเชเข้าถึงข้อมูลหลายค่า วันนี้มาดูพร้อมกัน ครูมี List ข้อมูลมาให้ ชื่อว่า My List ครูมาให้ตัวนะคะ ครูใช้คำสั่ง len ได้คำตอบคือ 9 รู้ได้อย่างไร นับว่ามีกี่ตัวนะคะ ทีละตัวว่ามีเท่าไร เช่น ครูใช้คำสั่ง len นะตัวที่ 2 ที่ 3 ตัวที่ 4 5 6 7 8 9 มี 9 ตัว ถ้าครูต้องการเข้าถึงข้อมูลทีเดียวหลายตัว ไม่เอามาทีละค่ากันนะคะ ได้ทีเดียวหลายตัว จำได้ไหม สามารถนำข้อมูลได้ทีละหลายๆตัว โดยใช้เป็นตัวบอกว่าเอาถึงไหน 1 ข้อมูลออกมาถึงไหนตัวแรก 2 จนถึง 5ทำอย่างไรคะจนถึง 5 เราก็เริ่มปิดไอ้ที่ไม่ 2 ไหม เราก็เริ่มอยู่ที่ 2 5 เราเอาตัวสุดท้ายด้วยไหม ขยับปิดมันไว้เลยตัว 5 ก็คือตัวที่เราปิดเพราะฉะนั้นคำตอบก็คือตัวอะไรคะหาช่วยครูหน่อยอีก 4 ตัว อะ ลอก ลอกตัวนี้ลงสมุดสิคะ แล้วก็หาคำตอบสี่ตัวนี้ให้ครูหน่อย เขียนลงสมุดสิคะ อะไรนะ คราวนี้มาดูด้วยกัน OK พร้อมกับ ก็จะได้รู้ว่าเราจะกลับแบบไหนนะคะ บนเป็นหมายเลข index นะ บรรทัดที่ 2 ที่เป็นตารางอันนี้คือข้อมูลคือหมายถึง ครูต้องการ index 1 จนถึง 4 นะ หนึ่งจนถึงสี่นี้ ครูเด้อ ดูมือครูปิดเริ่มที่ 1 จนถึง 4 ก็คือตัวนี้ไหนคะ ปิดที่ 4 ด้วยนะใช่ไหมคะ ครูต้องปิดที่ 4 ด้วย คำตอบข้อแรกคืออะไร ครูปิดที่ 4 ด้วย 1 จนถึง 4 จะได้คำตอบเท่ากับ r o g r o g ใช่ไหมคะ ถัดมา 5 ปิดไว้ จนถึงเจ็ด เพราะฉะนั้นจะได้อะไรคะ 7 นักเรียนจะได้อะไรคะ a กับ M ได้เอกับเอม ถัดมา 3 มานะคะ 3-5 จะได้เท่ากับ ถัดมา 0-2 จะได้เท่ากับออกตรงนี้จะได้เท่ากับ เพิ่มอีกสองข้อนะคะ ข้อนี้ตอบอะไรเอ่ย อะ ๆ ดูต่อ 5-8 ตรงนี้ตอบอะไรคะ 5-8 เป็น A M I ทุกคนต้องอย่าลืม ใช่ด้วยนะคะ อย่าลืมปิดตาด้วยตัวสุดท้าย 4 5 เอากลับ OK ทุกคนจะได้นะ ได้ ถัดมา OK สมมุติครูอยากจะเพิ่มข้อมูลนะคะ ในการเพิ่มข้อมูลมันจะไปต่อด้านท้ายนะ เวลาเราจะเพิ่มข้อมูลน่ะ เราจะไปต่อท้ายใช่ไหมคะ ไปต่อท้ายของเดิมที่มีอยู่ งเราจะใช้คำสั่งที่ว่า append ใช้คำสั่งที่ชื่อว่า append เพิ่มข้อมูลเข้าไปต่อ size L ของเราวิธีเขียนทำอย่างไร ชื่อใส่ข้อมูลที่เราเพิ่มเข้าไปใช่ไหมคะ มันจะมีช่องอยู่ด้านท้ายนี่เพิ่มขึ้นมา ไม่ได้ยิน มันจะมีช่องที่อยู่ด้านท้าย ไม่มีครับ เพราะเราเพิ่มเข้าไป ยังไงอะไร Index เพิ่มขึ้นมาอีก 1 ตัว เป็น index หมายเลข 9 พอเอาเอสใส่เข้าไป เริ่มได้แล้วเอาออกน่ะ ลบใช้คำว่าr del ย่อมาจาก delete ย่อมาจาก - อะไร - List ห้องไหนห้องหมายเลข 9 ไหมคะ มันก็จะเอาตัว List พรุ่งนี้ก็จะหายไปนะคะ ถัดมา Dictionary อย่างที่ครูบอก Dictionary กับ List ไม่เหมือนกันนะคะ Dictionary มีคีย์ value แต่ List เพราะว่า อย่างเดียวเห็นไหมคะว่า Dictionary จะมีเซมิโคลอนเห็นไหม OK ถ้าเราจะเข้าถึงข้อมูลที่อยู่ใน Dictionary เรากะอ้างอิงไปถึงคีย์ใช่ไหมคะ ถ้าเราต้องการดึงข้อมูลทั้งหมดนะคะ key กับแวลูแล้วก็ใช้การวนลูปเราใช้คำสั่งดูซิว่าไอเทมตัวนี้นะคะ ชื่อ Dictionary Dota Item มันก็จะเอาค่าคีย์ตัว k แล้วโตแวลูเอาไปเก็บไว้ที่ตัวเคเสร็จแล้วก็จะปริ้นออกมานะคะ โอเคคือ P V ก็คือ Value ถ้าครูมี Dictionary นะคะที่ว่า สกอร์ โดยการเก็บคะแนนของนักศึกษา แต่ละคน เช่น เจมส์มี 25 Thomas 50 แดนนี่ 69 บ๊อบบี้ 76 เสร็จแล้วครูก็จะเอามาใส่ในช่อง ข้างบนคือ key ข้างบนคือ key ข้างล่างคือ Value ของโทมัสอยากรู้ของโทมัส ชื่อเด็กชายนารีแล้วก็ใส่โทมัสตอบเท่าไหร่คะ โทมัสมีคะแนนเท่ากับ 50 คะแนนเปลี่ยนค่าคะแนนของผมทำอย่างไร จอทัชสกรีนโทมัสใส่งานใหม่เข้าไปเลย เอาฝั่งขวามายอนใส่ฝั่งที่ของโทมัส สภาพคะแนนจะเปลี่ยนเป็น 55 นะคะ โอเคนะ ถัดมาจะเป็นลิงค์ลิสต์ ก่อนจบทบทวน Link List 1 หน่วยมี 2 ช่องที่ data กับเล็กใช่ไหมคะ จำได้ไหมน่ะเอาไปให้ครูอีกรอบนึงก่อนเลิก เรียนมาเยอะแล้วก่อนจบมาพูดถึงรีบปิดท้ายด้วยกระปุกอยู่ไหมลองดูสิ อะ มาดูสิคะตอบอะไร อันแรกตอบอะไรเอ่ย 3 เอาใหม่นะ paint.net Data ก็คือ t.next. มี .net อะ ก็คือสิบ เห็นไหมคะ ว่าถ้าลงท้ายด้วย ก็เอาข้อมูลมาใส่ ถ้าลงท้ายด้วย next เอาตัวแต่บังเอิญว่าตัวนี้ มันตกขอบไปแล้วไงมันก็เลยเป็น null OKวันนี้กลับไปทบทวนนะคะสิ่งเหล่านี้ที่ครูโพสต์ไว้ที่ classroom อยู่แล้วนะคะ จะเอาไปทบทวนสัปดาห์หน้าวันอังคารบ่ายโมงตรงนะคะ เตรียมอุปกรณ์ไม้บรรทัดปากกามาให้เรียบร้อยนะคะ นและสอบนะคะเป็นแบบ open book เปิดทุกอย่าง ยกเว้นถามเพื่อนนะคะ ได้ ไม่ได้ถามเพื่อน แต่ให้เปิดชีต ดูได้ แบบฝึกหัดได้นะคะ ไม่ให้ถามกันเท่านั้นเองนะ ออกแบบนี้ล่ะ ที่เราติวกันวันนี้ให้ แต่ละเรื่องนะ ว่าเป็นแบบไหน OK แบบฝึกหัดวันนี้ที่มันเป็น 2 ชุดใช่ไหมคะ ถ่ายรูปส่งใน classroom นะคะ แบบฝึกหัดที่เราทำกันมาต้นชั่วโมงนะคะ เดี๋ยวครูจะเปิด classroom ให้ แล้วก็ถ่ายรูปส่งนะคะ แล้วก็ถ่ายรูปส่งด้วยนะ ทุกคนถ่ายรูปนะคะ แบบฝึกหัด แล้วก็เอาลง Classroom เพื่อนที่ไม่มานะติวด้วยนะคะ ฝากไปสอนเพื่อนด้วย ชื่ออะไรนะคะ วริษา อะ มา ทุกคนนะคะ ยกเว้น วริษา ใครยังไม่มีตัวไหนนะ ถามเพื่อนนะคะ หรือว่าแบบฝึกหัดที่ครูให้ไป โอเค วันนี้ก็น่าจะเท่านี้ค่ะ ค่ะ สวัสดีค่ะ