--- title: การบรรยาย วิชา โครงสร้างข้อมูลและอัลกอริทึม (IT ปี 2) subtitle: date: วันจันทร์ที่ 2 กันยายน 2562 เวลา 08.50 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) เราคราวนี้คราวที่แล้วเราพูดถึงอาร์จำได้ไหมว่าการจัดเก็บ เรย์นนะคการจัดเก็บของข้อมูลในArray แบบนี้นะ มีรายการข้อมูลนะคะ มีรายการข้อมูลที่เราต้องการ ในข้อมูลทั้งหมดที่เราจัดเก็บใน 1 Array จะต้องเป็นข้อมูลประเภทเดียวกัน นะคะ ในอาร์เรย์ คราวนี้อีก 1 รูปแบบของการจัดเก็บของข้อมูลที่เราต้องรู้จักก็คือ List List นะคะ L I S T List เป็นรูปแบบของการจัดเก็บข้อมูลเช่นเดียวกัน สามารถเก็บค่าข้อมูลได้ 1 ค่าใน List เราเก็บข้อมูลได้มากกว่า 1 ค่านะคะ และสามารถเป็นประเภทข้อมูลในหลายแบบได้ในList เช่นแบบไหน ตัวอย่างนะคะ ที่หน้าจอตรงนี้ อันนี้คือ List ใช่ไหมคะ เราจะเห็นว่า รู้ได้อย่างไรว่าเป็น List นะคะ จะมี { เป็น [ ใช่ไหมค่ะ มีรายการข้อมูลตัวที่ 1 เรียกว่า List นะคะ List นมีชื่อว่าอะไร ก็ดูข้างหน้า ใช่ไหมคะ List นี้จะมีชื่อนะคะ ก็คือเอาฝั่งข้อมูลฝั่งขวามาเก็บไว้ที่ฝั่งซ้าย ฝั่งขวาชนิดข้อมูลใน List นี้เป็นแบบไหน ลองดูสิคะ ข้อมูลใน List นี้เป็นแบบไหน เป็นข้อความ เป็นแบบไหนเอ่ย เป็นข้อความใช่ไหมคะ รู้ได้อย่างไรว่าเป็นข้อความ เพราะมี มีอะไร มีฟันหนูถูไหม เครื่องหมายคำพูดนะคะ เมื่อไรก็ตามที่มีเครื่องหมายคำพูดค่อมข้อความหรือตัวเลข ชนิดข้อมูลตัวนี้จะเป็น String หรือเป็นข้อความ เช่นตัวนี้เป็นข้อความหรือเป็นตัวเลข เป็นอะไรคะ ข้อมูลตัวนี้เป็นอะไรคะ เป็นข้อความหรือตัวเลข เป็นอะไรเอ่ย เป็นข้อความใช่ไหมคะ ถึงแม้ว่าจะเป็นตัวเลขก็ตาม แต่ตัวเลขตัวนี้ อยู่ภายใต้เครื่องหมายคำพูด ถูกเปล่า หรือว่า ฟันหนู มันคือข้อความนะคะ ไม่ใช่ตัวเลข คราวนี้ความต่างระหว่างข้อความกับตัวเลขเป็นอย่างไรอันนี้ตอบว่าอะไร 1+2= เท่ากับอะไรคะ เท่ากับ 3 แต่ข้อมูลข้างบนนะคะ 1 ที่เป็นข้อความ บวก 2 ที่เป็นข้อความ ผลลัพธ์จะได้เป็นอะไร อะไรคะ เป็น 1 กับ 2 ทำไมถึงเป็นแบบนี้ เพราะมันเป็นข้อความใช่ไหมค่ะ ถ้าเอาข้อความมาบวกกันจะหมายความว่าเอามาเรียงต่อกันใช่ไหมคะ แต่ถ้ามันเป็นตัวเลข อันนี้เป็นตัวเลขใช่ไหมคะ เราก็บวกตามวิธีทางคณิตศาสตร์ได้เลย อันนี้ก็คือ 1 + 2 นะคะ อันนี้คือความแตกต่างระหว่าง ตัวเลขกับข้อความ ถ้าเรากำหนดชนิดข้อมูลเป็นแบบไหน ก็ต้องพึงระวังด้วยนะคะ ถ้าเป็นตัวเลขจะมาบวกกันทางคณิตศาสตร์ ถ้าเป็นข้อความจะเอามาเรียงต่อกันนะคะ จะเอาข้อมูลมาเรียงต่อกัน Dist List ตัวนี้มีข้อมูลกี่ตัว Dictionary ตัวนี้มีข้อมูลกี่ตัวคะ คะ มีเท่าไร มี 3 ตัว ถูกไหมคะ จะมีข้อมูลอยู่ 3 ตัว ก็คือมีขนาดเท่ากับ อะไรเอ่ย 3 ถูกไหม มีข้อมูล 3 ตัว ถูกไหม เพราธขนาดของ Dis List จะมีเท่ากับ 3 นะคะ เวลาเราจะเข้าถูกข้อมูลแต่ละตัวใน List จะทำอย่างไรคะ จำได้ไหมตอน Array เราใช้ Index ในการเข้าถูกข้อมูลแต่ละตัว Index ตัวแรกจะเริ่มที่ 0 หรือ 1 ถ้า Index จะเริ่มที่ 0 หรือ 1 ที่เท่าไรคะ 0 หรือ 1 0 ถูกไหมคะ ถ้า Index เวลาเราจะเข้าถึงข้อมูลใน List หรือ Array เราจะเริ่มต้นที่ Index เท่ากับ 0ตัวนี้ จะเป็น Index 0 แล้วก็ 1 แล้ว 2 นะคะ Index เราเริ่มที่ 0, 1, 2 นะคะ ขนาดตัวนี้เท่ากับ 3 นะคะ ถ้าเราจะเข้าถึงข้อมูล ลองดูก่อนนะคะ เดี๋ยวเราค่อยฝึกปฏิบัติ เข้าถึงข้อมูลที่อยู่ใน List นี้ เราจะเข้าถึงได้อย่างไร เราก็ใช่ Index ใช่ไหมคะ เราใช้ Index เป็นตัวเข้าถึงข้อมูล เมื่อกี้เรารู้แล้วว่า Index ตัวแรกคือ 0 Banana คือ Index = 1 เชอร์รี่ Index เท่ากับ 2 อันนี้คือ Index เวลาเราจะเข้าถึงข้อมูลเราจะอ้างอย่างไร เราก็ใส่ชื่อ List นะคะ ใส่ชื่อ List แล้วตามด้วยเครื่องหมาย { เปิด แล้วก็ใส่หมายเลข Index ข้างใน แล้วก็ปิดนะคะ Dislist banana ใช่ไหมคะ ถ้าครูถามว่า Dislist Index เป็น 0 จะตอบอะไรเอ่ย คำตอยนี้จะตอบว่าอะไร มี Apple banana หรือ เชอร์รี่ เอาอันไหนดี ตอบอะไรเอ่ย เอาเด็กพิเศษคนหนึ่งสิคะ อาสาสมัคร (อาจารย์) อาสาสมัครเด็กพิเศษ 1 คน อันนี้ตอบอะไร Dislist Index = 0 ผลลัพธ์ที่ได้คือ คืออะไรเอ่ย คือ Apple ใช่ไหมคะ ถูกไหมอันนี้คือ แอปเปิ้ล ถ้าครูถาม DisList 2 จะตอบอะไรคะ Dislist 2 ตอบอะไรเอ่ย อันนี้ตอบ Cherry ใช่ไหม ดูอย่างไร ตัวแรกมีค่า Index เป็น 0 เห็นไหมคะ นี่มันตรงกับตัวนี้เลย ตัวที่ 2 Index เป็น 1 เห็นไหมคะ ก็ตรงกับตรงนี้ข้างใน ก็เลยต้องตอบว่า Banana ตัวที่ 3 คือเชอร์รี่ เพราะฉะนั้นคำตอบก็คือ Cherryได้ไหม มีใครงงไหมคะ จะเข้าถึงข้อมูลทีละตัวทำอย่างไร ไม่งงนะ มีไหม ดูตามนี้นะคะ เห็นไหม List ครูมีชื่อว่า A ใช่ไหม มีขนาดเท่าไร มีขนาดเท่ากับขนาดของ List ตัวนี้มีขนาดเท่ากับ 6 ใช่ไหมคะ รู้ได้อย่างไรว่า 6 1, 2, 3, 4, 5, 6 ใช่ไหม ขนาดข้อง List จะมีค่าเท่ากับ 6List ครูประกอบไปด้วยค่าข้อมูลที่เป็นตัวเลขนะคะ มี 1, 2, 3, 4, 5 และ 6 ครูอยากจะเข้าถึงข้อมนะคะ ครูอยากเข้าถึงข้อมูลใน Index ต่าง ๆ ครูก็เลยใช้วิธีการอ้างถึงข้อมูลในแต่ละ Index โดยครูก็ใส่ชื่อ List ก่อน [ แล้วก็ใส่หมายเลข Index ตัวนี้คือหมายเลข Index ตัวแรก Index 2 คือค่าอะไร Index คือค่าอะไรให้ชูนิ้ว ชูนิ้วใครนิ้วมัน คำตอบแรกตอบอะไรเอ่ย ตอบเท่าไรคะ เด็กพิเศษยกมือเร็ว คนอื่นได้ไหมคะ คนอื่นได้เลขอะไร ได้เลข 3 นะคะ A Index คือเลข 3 แล้ว A In เลขอะไรคะ เลข 1 นะคะ A Index 4 คือเลข 5 Index 3 คือ 4 โอ.เค.ถ้าครูอยากให้ถึงข้อมูลตัวนี้ ครูต้องอ้างอิงถึง Index ที่เท่าไร จะเข้าถึงข้อมูลเลข 6 ตัวนี้ตัวสุดท้ายเลยครูต้องอ้างถึง Index เลข เลข 5 ถูกไหมคะ A5 ก็จะมีค่าเท่ากับ 6 โอ.เค. พอได้นะคะ ถ้าเราอยากจะถึงข้อมูลหลาย ๆ ตัว เมื่อกี้ เราเข้าถึงข้อมูลทีละตัวนะคะ ถ้าเราอยากจะเข้าถึงข้อมูลคือทุกตัวเลย ให้เขาพิมพ์ออกมา อย่างนี้นะคะ แบบนี้ ก็คือให้โชว์ Apple Banana Chrerrtออกมาทีเดียวเลย ไม่ต้องไล่ทีละตัวทำอย่างไร เราใช้ Loop for จำได้ไหมคะ เราใช้ Loop for ในการเข้าถึงข้อมูลแต่ละตัวใน List for xx นะคะ X ตัวแปลใด ๆ ใด ๆ in thislist คือชื่อของ List ตัวนี้นะคะ X จะแทนด้วยอะไรก็ได้ เป็นตัวแปรใด ๆ นะคะ ตัวนี้คือชื่อ List นะคะ เสร็จแล้วก็ใส่ ; Enterขึนมาบรรทัดใหม่แล้วก็ใส่ print x ก็คือ print นะคะ ก็คือตัวแรกก็คือ Apple ตัวที่ 2 ก็จะเป็น Banana ตัวที่ 3 ก็จะเป็นเชอร์รี่ คำสั่ง print คืออะไรเอ่ย print แสดงผลที่ไหนคะ ที่หน้าจอใช่ไหมคะ คำสั่ง print จะเป็นคำสั่งแสดงผลที่หน้าจอ ถ้าเราอยากรู้ขนาดของ list เราก็สามารถบอกได้ว่าขนาดของ List เป็นเท่าไร แต่ถ้าเราอยากจะสั่งให้คอมพิวเตอร์นะคะ หาขนาดของ list ให้เราหน่อย เราต้องใช้คำสั่ง len L E N นะคะ วงเล็บเปิดแล้วตามด้วยชื่อ Array พูดผิดค่ะ คือชื่อ List นะคะ คือชื่อ list นะคะ ครูพิมพ์ผิด ชื่อ List นะ เราใช้คำสั่ง len () List นะคะ เพิ่มข้อมูลลงไปใน List เมื่อกี้ดูข้อมูลแล้ว อยากจะเพิ่มข้อมูลตัวใหม่ลงไปใน List นะคะ จะใช้คำสั่ง append () append () คำสั่ง append () คือเพิ่มข้อมูลลงไปใน List เช่น ครูต้องการเพิ่มส้ม ก็คือ นะคะ ครูจะเพิ่มแบบไหน อันดับแรก ใส่ชื่อ List ก่อน .append () List.append (แล้วก็ใส่ชื่อหรือค่าข้อมูลใหม่ ที่ต้องการเพิ่มนะคะ ถ้าอยากรู้ว่ามันเพิ่มจริงหรือเปล่า ก็สั่ง print Dออกมาดู โอ.เค. อันนี้คือการเพิ่มข้อมูล 1 ค่า ลงไปใน List นะคะ ถัดมาลบบ้าง การลบ เราใช้คำสั่ง remove () การลบใช้คำสั่ง Remove ลบอย่างไร เราต้องการลบ Banana ออกไป ลบข้อมูล ก็ใช้คำสั่ง คือ List Remove วงเล็บเปิดremove () ค่าที่ต้องการจะลบ มันคือค่าอะไรก็ใส่ลงไป อยากรู้ว่ามันลบจริงไหม ก็สั่ง print this listThislist นะคะตัวนี้เราลบโดยการใส่ค่า โดยการใส่ค่า ถ้าเราต้องการลบ โดยการระบุหมายเลข Index จะใช้คำสั่ง Del ก็คือ Del นะคะ ถ้าต้องการลบข้อมูลโดยการใช้ Index จะใช่คำสั่ง del วรรค แล้วตามด้วยชื่อ List ก้ามปูเปิด ใส่ Index จะลบ Index 0 แสดงว่าเราลบอะไรคะ ลบแอปเปิ้ล apple จะหายไป จะเหลือแค่ banana กับ cherry นะคะ แค่ 2 ตัวคราวนี้เปิดโปรแกรมขึ้นมา เปิด Anaconda thislistผthislistผถ้าใครเปิดได้แล้ว เราสร้าง List ที่ ที่ชื่อว่า Dist list ที่ชื่อว่า Banana และ Cherry สร้างเร็ว สร้าง List ตัวนี้นะคะ ชื่อ thislist มีข้อมูลอยู่ 3 ตัว ได้ตัวนี้นะ ทุกคนจะมี Distlist มี Apple Banana แล้วก็ cherry thislist = ["apple", "banana", "cherry"] thislist = ["apple", "banana", "cherry"]ผหรือยัง ทุกคนจะมี List จากนั้นได้หรือยัง นะคะ เดี๋ยวครูสั่งงานไว้ ครูมีประชุมนะ ให้ทำนะ ลองดู ทุกคนมีสไลด์อยู่ใช่ไหม อยู่ใน Classroom มีทุกคนมีสไลด์อยู่ใน อย่าบอกว่าไม่มี เปิดคู่กันเปิดคู่กันนะ ให้เปิดคู่กัน หรือให้พี่ปอยมา Enter ให้ที่ข้างหน้านะคะ ทำตัวแรก thislist 1ใช่ไหมคะ ค่อย ๆ ไล่ไปทีละคำสั่ง เสร็จแล้ว thislist 0 ตัวนี้มีค่าเป็นอะไร เสร็จแล้วไปทีละคำสั่งนะคะ แล้วพิมพ์ทะอันนี้เช่นเดียวกัน แล้วก็จะมีผลลัพธ์เป็นแบบไหน ใช่ไหม ไล่ไปทีละคำสั่งนะคะ การหาขนาดเช่นเดียวกัน การเพิ่มนะคะ การลบ ลบโดยการกำหนด index อาจจะไม่ได้ข้อมูลแบบนี้ไม่เป็นไร แต่เราลบไปแล้ว แต่ครูใช้ข้อมูลตัวเดิม ทำให้จนครบใช่ไหม จากนั้นทำแบบฝึกหัดตัวนี้เรียงต่อกันมาเลย สร้าทำต่อลงมาเลย สร้าง List ที่เก็บข้อมูลสีมี rad with แสดงค่าข้อมูล color เท่ากับ 1นะคะ เสร็จแล้วเพิ่มข้อมูล Pink ลงไปใน List เพิ่มข้อมูลและแสดงค่าด้วยนะ เพราะไม่อย่างนั้นจะไม่รู้จะว่ามันเพิ่มจริงหรือเปล่านะคะ ก็คือใช้คำสั่ง print หาขนาดนะคะ แล้วก็ลบข้อมูลพร้อมกับแสดงค่า นะคะ ได้ไหม ได้ จากนั้นทำตัวนี้เสร็จ ครูมีโจทย์ให้อยู่ทั้งหมด 8 ข้อแบบฝึกหัดเหมือนกันเลย เดี๋ยวครูมีกระดาษให้อยู่หน้าห้อง สร้าง list ชื่อ scoocตื้ด ๆ ๆ ถ้าต้องการเข้าถึงข้อมูล 20 ต้องเขียนคำสั่งอย่างไร จะเขียนคำสั่งอย่างไร เข้าถึงข้อมูล index 2 เป็นเท่าไร ครูจะเข้าถึงขอมูลที่ 20 ครู ถึง Index ที่เท่าไรนะคะ หาขนาดของ List เพิ่มข้อมูล 50 แล้วพิมพ์ออกมา ก็คือแสดงออกมา ลบข้อมูลที่ index=2 ลบข้อมูลค่า 10 เพิ่มข้อมูล 100 แล้วก็แสดงออกมา สุดท้ายจะมีขนาดเท่าไรนะคะ ทำในเครื่องเลย จะได้รู้ว่าถูกหรือเปล่า แล้วก็ส่งใน Classroom นะคะ ทั้งหมดมีแค่ไฟล์เดียวใช่ไหม ทำตามคำสั่งใน sheet ทำตามคำสั่งในชีต 2. แบบฝึกหัดในชีต 3. แบบฝึกหัดข้างนอก 3 ตัว ใน 1 ไฟล์นะคะ โอเคไหม ใช่ค่ะ ส่งวันนี้ ทำนี่ ทำเลย ทำในชั่วโมง [สิ้นสุดการถอดความ]