--- title: โครงสร้างข้อมูลและอัลกอริทึม 21/06/2565 subtitle: date: วันอังคารที่ 21 มิถุนายน 2565 เวลา 13.00 น. --- (ข้อความสดจากระบบถอดความเสียงพูดทางไกล) (ล่าม) ขออนุญาตทดสอบเสียงนะครับ ฝั่งนั้นได้ยินเสียงล่ามไหมครับผม (อาจารย์สุธาสินี) สวัสดีคะ ได้ยินไหมคะ ล่ามได้ยินนะคะ โอเค (ล่าม) ได้ยินครับ ล่ามได้ยินครับผม (อาจารย์สุธาสินี) โอเคนะคะ เดี๋ยววันนี้นะคะ เราจะมาพูดถึงเรื่องของการวัดประสิทธิภาพของ อัลกอริทึม ทวนนิดหนึ่งนะคะ สัปดาห์ที่แล้วเราพูดถึงอัลกอริทึมใช่ไหมคะ อัลกอริทึมคืออะไร อัลกอริทึม ก็คือกระบวนการของการแก้ไขปัญหาใช่ไหมคะ เรามีโจทย์ใช่ไหมคะ เรามีโจทย์แล้วเราต้องการเราต้องการอะไร ก็คือ Output เราคืออะไร เราต้องหากระบวนการ หรือขั้นตอนการแก้ไขปัญหานะคะ ไอ้กระบวนการหรือขั้นตอนนั้นล่ะ เรียกว่า "อัลกอริทึม" คราวนี้นะคะ คราวที่แล้วเราพูดถึงอัลกอริทึมของการต้มไข่ ใช่ไหมคะ มีต้มไข่ มีมาม่า ทำมาม่านะ ทุกคนจะเห็นว่าแต่ละคนนี่ มีกระบวนการการต้มมาม่าไม่เหมือนกัน แต่สิ่งที่ได้เราได้มาม่าเหมือนกัน พร้อมรับประทานนะคะ จะเห็นว่าโจทย์ 1 โจทย์ เราสามารถมีวิธีการแก้ปัญหาที่แตกต่างกันได้หลายรูปแบบ นอกจากตัวอัลกอริทึมที่เราพูดไปแล้วที่เราพูดไปแล้วนะคะ เราแสดงอัลกอริทึมในรูปแบบที่เป็นขั้นตอน 1 2 3 นะคะ นอกจากนั้นแล้ว เรายังเขียนในลักษณะของ Flowchart หรือว่าผังงาน ค่ะ โอเค โดยผังงานตัวนั้นนี่ เราเริ่มต้นถูกไหมคะ เรามีสัญลักษณ์ของการเริ่มต้น แล้วก็มีีสัญลักษณ์ของการสิ้นสุด สิ่งที่อยู่ข้างในก็คือ Process นะคะ ที่แทนด้วยสี่เหลี่ยมนะคะ สี่เหลี่ยมผืนผ้า จะแทนด้วย Process นะ กระบวนการไหนที่เราต้องการตัดสินใจเราจะใช้สี่เหลี่ยมข้าวหลามตัดนะ แล้วในการตัดสินใจของเรานี่ ก็คือตัดสินใจว่าจริงหรือไม่จริง ถ้าจริงให้ทำอะไร ไม่จริงให้ทำอะไรนะคะ แล้วก็คราวที่แล้วนะคะ เราพูดถึงการเดินของนกนะคะ เราพูดถึงเรื่องของการเดินนะ เดินของนกที่ไปกินหมู อันนี้ทุกคนสามารถเดินได้ โดยการเดินไหนที่เราเดินซ้ำ ๆ ถูกไหมคะ อะไรที่เราเดินซ้ำ เดินซ้ำ ๆ ทำเหมือนกันเลย เราไม่จำเป็นทำเขียนขั้นตอนเหล่านั้นซ้ำ ๆ เราจะใช้การวนลูปหรือว่าทำซ้ำถ้าจำได้นะคะ เราจะเขียนการวนซ้ำนะคะ แล้วข้างในก็ก็ใช้สัญลักษณ์หรือคำสั่งที่เราเขียนหลาย ๆ บรรทัดนั่นล่ะ เหลือแค่ 1 คำสั่งนะคะ เสร็จแล้วเราก็ระบุว่าเราทำคำสั่งนั้นกี่ครั้งนะ อันนี้ก็คือการวนลูปหรือว่าการทำซ้ำนะคะ คราวนี้จากอัลกอริทึมที่เราเขียนไป แล้วเราจะรู้ได้อย่างไร ว่าอัลกอริทึมที่เราเขียนนี่ มันมีประสิทธิภาพ มันดีหรือเปล่า มันทำงานได้เร็วหรือเปล่านะคะ เราต้องมีวิธีการวัดนะ เราต้องมีวิธีการวัดนะคะ เราวัดจากอะไรได้บ้าง 1. วัดจากเวลาที่ใช้ในการประมวลผล โปรแกรมที่เราเขียนขึ้นใช้โปรแกรมในการประมวลผลเป็นอย่างไร ใช้หน่วยความจำในคอมพิวเตอร์เป็นอย่างไรนะคะ เหมือนกับเทียบกับการเรียนในชั้นเรียนนี่ พอเรียนเสร็จเราก็ต้องมีการวัดผลใช่ไหมคะ ทุกคนรับข้อมูลเหมือนกัน ครูสอนเหมือนกันทุกคนเลย แต่การวัดผลทุกคนก็อาจจะแตกต่างกันเห็นไหมคะ บางคนได้ A ได้ B ได้ C ใช่ไหมคะ อัลกอริทึมก็มีวิธีการวัดประสิทธิภาพ เราจะได้รู้ว่าสิ่งที่เราเขียนมีประสิทธิภาพมากแค่ไหน มันขึ้นกับว่าหน่วยเวลา หน่วยความจำนะคะ ในคลอสนี้ครูจะใช้การวิเคราะห์เวลา การวิเคราะห์เวลาที่ใช้ประมวลผลนะคะ คราวนนี้เราจะเรียนเกี่ยวกับการวิเคราะห์เวลา การวิเคราะห์เวลาที่ใช้ในการประมวลผลนะคะ คราวนี้ เวลาที่ใช้ในการประมวลผลจะเปจะเป็นการประมาณเวลา โดยการใช้ตัววัดที่มีชื่อว่า Big-O Big-O เขียนอย่างนี้นะ Big แล้วก็ขีดแล้วก็ตัว O จริง ๆ มันมีตัววัดประสิทธิภาพหลายตัวนะคะ มี Big-O , Big-Omega , Big-Teta นะคะ แต่ที่เราจะใช้กันวันนี้ในคอร์สก็คือ Big-O ทุกคนจะหา Big- Oจากอัลกอริทึม 1 ตัว จะดูว่าเราจะใช้เวลาในการประมวลผลคิดเป็นเท่าไรนะคะ เขาบอกว่า Big-O ก็คือหน่วยวัดการทำงานความเร็วของการทำงานของโปรแกรม ด้วยที่เราวัดจากจำนวนรอบของการทำงานกับข้อมูล นับจำนวนรอบของการทำงานหมายความว่าอะไรเราเขียนโปรแกรมใช่ไหมคะ แต่ละบรรทัด เราเขียนโปรแกรมแต่ละบรรทัดเป็นลำดับลงมา เวลาเรากดปุ่ม Run ปุ๊บ มันจะค่อย ๆ ทำงานทีละบรรทัดใช่ไหมคะ มันจะทำงานทีละบรรทัด ไล่ลงมาจากบนลงล่างนะคะ ถ้าเราเขียนโค้ดเรียงลำดับลงมาเรื่อย ๆ นะคะ จะทำงานเพียง 1 ครั้ง ทำบรรทัดที่ 1 เสร็จ ทำบรรทัดที่ 2 บรรทบรรทัดที่ 4 ไล่ลงมาเรื่อย ๆ นะ ไม่ได้วนกลับขึ้นไปข้างบนนะ แต่เมื่อไรก็ตามที่เราใช้ลูปหรือว่าการทำงานแบบวนซ้ำที่เราเคยพูดไปแล้ว ตัวนี้อย่างเช่น ตรงนี้นะคะ เป็นการทำงานแบบวนซ้ำ แสดงว่าเราทำงานมากกว่า 1 รอบ ใช่ไหมคะ เมื่อไรก็ตามทีมีการใช้ Loop หรือว่าวนซ้ำ แสดงว่าคำสั่งนั้นนี่อาจจะมีการทำงานมากกว่า 1 ครั้ง เราจะต้องรู้ว่าแล้วมันทำงานกี่ครั้ง แล้วมันทำวงานกี่ครั้ง ถ้าไม่มีการวนลูปมันจะทำงาน 1 ครั้งนะคะ แต่เมื่อiก็ตามที่มีการทำซ้ำหรือวนลูป เราจะทำงานตามจำนวนรอบที่เรากำหนดว่าเรากำหนดให้มันทำงานกี่ครั้งนะคะ แล้วเราถึงจะเอามาหาความเร็วของการทำงานของโปรแกรม คราวนี้ สัญลักษณ์ของ Big-O ก็คือตัว O ใหญ่ เราจะใช้ตัว O ใหญ่เป็นสัญลักษณ์ในการหาความเร็วของการทำงาน แล้วเริ่มต้นนะคะ อย่างที่ครูบอกว่า Big-O คือ การวัดความเร็วของการทำงานโดยวัดจากจำนวนรอบ เพราะฉะนั้น เรามาดูว่าเรานับแล้วเรานับจำนวนครั้งของการทำงานหรือจำนวนรอบของการทำงานนี่นับอย่างไร มีอยู่ 2 แบบนะคะ แบบค่าคงที่ แบบที่ครูบอกทำตามลำดับลงมาเรื่อย ๆ หรือทำงานแบบลูปลำดับ ก็คือวนซ้ำ เราใช้ลูปอะไรบ้าง ในการเขียนโปรแกรม ในการวนซ้ำ เราใช้ลูปอะไรบ้างเอ่ย ตอนเราเขียน Python เราใช้อะไร จำได้ไหม จำได้ไหมคะ Loop อะไร ในการวนลูปในภาษา Python น่ะค่ะ เราใช้ลูปอะไรบ้าง เราใช้ลูปอะไรบ้าง ใช่ เราใช้อะไรคะ ใน Python ที่เราเขียน ก็คือ Loop For ใช่ มี While ใช่ไหมคะ มี while นะคะ อย่างที่เพื่อนบอกนะคะ อีกตัวหนึ่งคืออะไร For นะคะ เราจะคุ้นเคยนะ การทำงานแบบวนซ้ำ จะมี for กับ While for กับ while ต่างกันอย่างไรคะ ทราบไหม เมื่อไหร่เราจะใช้ For เมื่อไรเราจะใช้ while 1. อันนี้เราสันนิฐานได้เลยอาจจะทำงาน 1 ครั้งหรือมากกว่า 1 ครั้งนะคะ ขึ้นอยู่กับเงื่อนไข แสดงว่าเราต้องการวนซ้ำ เราสามารถใช้ for หรือใช้ while ได้ เมื่อไรที่เราทราบจำนวนรอบของการวนของการวนซ้ำเราจะใช้ for นะคะ เพื่อความง่าย เมื่อไรก็ตามที่เรารู้จำนวนรอบของการวนซ้ำ เราจะใช้ for เช่น เขาบอกว่าให้วิ่งรอบสนามฟุตบอล 10 รอบ แสดงว่าต้องวิ่ง 10 รอบ วิ่ง 11 รอบได้ไหม ไม่นับถูกไหม ครูบอกว่า 10 รอบ ก็ต้อง 10 รอบ ก็ต้องใช้ for ใช่ไหมคะ แต่ถ้าครูบอกว่าวิ่งจนกระทั่งเพื่อนนาย A มา รู้ไหมกี่รอบ ไม่รู้ เพราะว่าไม่รู้นาย A มาตอนไหน เราถึงจะหยุดนะคะ เพราะฉะนั้น While เราไม่รู้จำนวนรอบที่แน่นอนถูกไหม แต่ for นี่ให้เราคิดว่าเรารู้จำนวนรอบที่แน่นอนนะคะ เช่น แม่ให้เงินมานะ มาโรงเรียนบอกว่า ไม่ใช่มาโรงเรียน แม่ให้ไปซื้อของนะคะ ไปซื้อหมูปิ้ง ให้เงิน 100 บาท ไปซื้อหมูปิ้ง เรารู้ไหมต้องซื้อได้กี่ไม้ ไม่รู้เหมือนกันนะ เราก็ใช้ While ก็ได้นะคะ เงินเป็น 0 เมื่อไรถึงหยุด เหมือนซื้อหวยถูกไหม ซื้อไปเรื่อย ๆ ไม่รู้จนกว่าจะถูกอย่างนี้ ไม่รู้จำนวนรอบต้องซื้อกี่งวดใช่ไหมคะ คราวนี้ เราแยก Loop while กับ Loop for พอได้ คราวนี้ การนับตัวดำเนินการก็คือ 1 2 3 4 นะ นับก็คือนับจำนวนรอบนะคะ ในการทำงาร ในกรณีที่ไม่มี Loop การวนซ้ำนะคะ เรียงลำดับลงมาเรืิ่อย ๆ นะคะ เช่น ครูมีคำสั่งอยู่ 2 บรรทัด คำสั่งอยู่ 2 บรรทัด ไม่ใช่การวนลูปใช่ไหม เพราะไม่มีคำว่า for กับไม่มีคำว่า "while" คำสั่งแรก count = 0 คืออะไร เราให้ค่ากับตัวแปรที่ชื่อว่า count c-o-u-n-t เมื่อเรา Run คำสั่งนี้ปุ๊บ เมื่อคำสั่งนี้ถูกประมวลผล count จะมีค่าเป็น 0 ใช่ไหมคะ อ่านบรรทัดที่ 1 นี่ เมื่อผ่านบรรทัดที่ 1 ไป count จะมีค่าเป็น 0 นะคะ count จะมีค่าเป็น 0 เสร็จแล้วทำงานบรรทัดที่ 2 บรรทัดที่ 2 คือ การคำนวณใช่ไหมคะ คำนวณ คำนวณเสร็จแล้วก็เก็บในตัวแปรที่ชื่อว่า Tatal เวลาเรากด Run ถูกไหมคะ เราเขียนโปรแกรม Python นะ แล้วเรากด Run นี่ บรรทัดที่ 1 เสร็จ กรณีที่ไม่มี Error นะ กรณีที่บรรทัดที่ 1 เสร็จ แล้วก็มาบรรทัดที่ 2 มันหมดแล้วไม่มีอะไร มันก็จบการทำงานใช่ไหมคะ เพราะฉะนั้น ครูเลยถามว่า ไอ้คำสั่งของบรรทัดที่ 1 มันทำงานกี่ครั้ง คิดว่ามันทำงานกี่ครั้ง ครูกดปุ่ม Run ปุ๊บ มันมาอ่านบรรทัดที่ 1 ใส่ค่าให้กับตัวแปร count เสร็จแล้วก็มาทำบรรทัดที่ 2 คำนวณเสร็จ เก็บใน เพราะฉะนั้น บรรทัดที่ 1 นี่ทำงานกี่ครั้ง 1 ครั้งใช่ไหมคะ ทำงานแค่ 1 ครั้ง ต่อการ Run นะ ต่อการ Run บรรทัดที่ 2 ทำงานกี่ครั้ง กด Run สิ Run ครั้งหนุ่ง 1กด Run Run ครั้งหนึ่งถูกไหมคะ บรรทัดที่ 1 ก็ต้องทำ บรรทัดที่ 2 ก็ต้องทำ 1 ครั้งเหมือนกัน แล้วก็จบใช่ไหมคะ เพราะฉะนั้น เมื่อไหร่ก็ตาม โปรแกรมของเราไม่มีการวน โปรแกรมของเราไม่มีการวนลูป การทำงานแต่ละบรรทัด จะทำงาน 1 ครั้งนะคะ จะทำงาน 1 ครั้งเท่านั้น เราจะนับตัวดำเนินการตัวนี้ คือ 1 ก็คือ 1 ครั้ง ตัวนี้ 1 ครั้ง ถ้าเราจะหาค่า Big-O นะคะ เรานับตัวดำเนินการได้แล้ว ต่อไปเราจะหาค่า Big-O นะคะ เราต้องหารค่าฟังก์ชันก่อนคือ F นะคะ F ย่อมาจาก Function F= ตัวเลขตัวนี้มากจากไหน 1 ตัวนี้ ก็คือ 1 ตัวนี้ของบรรทัดที่ 1 บวกด้วย 1 ตัวที่ 2 ก็คือจำนวนรอบของบรรทัดที่ 2 นะคะ ทำงาน 1 ครั้ง ทำงาน 1 ครั้ง บวกกันเป็น 2 ครั้งนะคะ เราถือว่าค่า Big-O ก็คือเป็น O (1) เขียน O (1) นะคะ เป็น O (1) แล้วถ้าเป็นเงื่อนไขบ้าง เป็นเงื่อนไขคืออะไร เป็นการตัดสินใจ มีการตัดสินใจ เมื่อไรก็ตามที่เราตัดสินใจ คือ การเลือก การตัดสินใจ คือการเลือกถูกไหมคะ เลือกว่าจะไปทางซ้าย จะไปทางซ้ายหรือจะไปทางขวา เวลาเราเจอ 4 แยก เราต้องตัดสินใจใช่ไหม เราต้องตัดสินใจ เลี้ยวซ้าย เลี้ยวขวานะคะ เพราะฉะนั้น การตัดสินใจเราใช้คำสั่ง if i-f นะคะ ใช้คำสั่ง if ใน Python if คือ ถ้า ถ้าแล้วตามด้วยเงื่อนไขใช่ไหมคะ ข้างในตรวงนี้คือเงื่อนไข เงื่อนไขที่ครูกำหนด คือ ถ้า n น้อยกว่า 0 ถ้า n น้อยกว่า 0 n คือตัวเลข เดี๋ยวเราจะมาแทนค่า n กัน จากโค้ดตัวนี้นะคะ ถ้า n น้อยกว่า 0 ให้ทำอะไร ถ้าเงื่อนไขตัวนี้เป็นจริง จะมาทำบรรทัดที่ 2 พูดผิด มาทำบรรทัดที่ 3 ถ้าเงื่อนไขตรงนี้เป็นจริง จะมาทำบรรทัดที่ 3 ให้ print คำว่า "negative integer" ก็คือตัวเลขติดลบ else คืออะไรคะ ถ้าเงื่อนไขตรงนี้ เงื่อนไขตัวนี้ไม่จริง ก็คือ n มันมากกว่า เท่ากับ 0 ใช่ไหมคะ เงื่อนไขตรงนี้ไม่จริง คืออะไร คือ n มากวว่า 0 ก็คือเป็นนิเสธกับตัวนี้ ตรงกันข้ามกับเงื่อนไขข้างบนถ้าข้างบนนี่ไม่จริง ก็แสดงว่า n เรานี่ต้องมากกว่า เท่ากับ 0 เราจะแสดงคำว่าอะไร เราจะแสดงคำว่า "positive integer" คราวนี้ ทุกคนช่วยครูดูนะ สิ่งที่เราจะต้องตอบครูให้ได้ว่าจะทำงานบรรทัดที่ 3 หรือทำงานบรรทัดที่ 7 นะคะ เดี๋ยวให้ยกมือนะ ยกมือ ครูถามตัวเลขครูจะแทนค่า n ใด ๆ ให้ แล้วให้เราลองบอกครูหน่อยว่าเราจะทำงานบรรทัดที่ 3 หรือบรรทัดที่ 7 ด้วยเงื่อนไขตอนนี้ ถ้า n น้อยกว่า 0 จะทำบรรทัดที่ 3 ถ้า n มากกว่าเท่ากับ 0 จะทำบรรทัดที่ 7 ครูกำหนดให้ n= 20 ทำบรรทัดไหนเอ่ย บรรทัดไหนดี อันนี้ n เท่ากับ 20 นะ คำถามคือ จากโค้ดตัวนี้โค้ดตัวนี้ที่ครูให้มา ครูอยากรู้ว่าเมื่อครูแทน n ใด ๆ ด้วยตัวเลขนี้ แทนค่า n ด้วยตัวเลขนี้ เมื่อเอา n เท่ากับ 20 เอา 20 ไปแทน n นี่ เมื่อเรา Run คำสั่งนี้ ครูจะทำบรรทัดที่ 3 หรือบรรทัดที่ 7 อันไหนคะ น้อยกว่า ครูก็เลยอยากรู้ว่าเราจะโชว์บรรทัดที่ 3 ที่หน้าจอหรือโชว์บรรทัดที่ 7 คนอื่นบรรทัดที่เท่าไรเอ่ย น้อยกว่า 0 เราจะทำบรรทัดไหนดีคะ เดี๋ยวนะครูลองกด 14 นะ ครูลองกด... โจทย์ครูนะคะ จากโค้ดตัวนี้นะคะ ถ้าครูกำหนดให้ n เท่ากับ 20 เมื่อเรา Run โปรแกรมตามเงื่อนไขแล้ว จะแสดงข้อความในบรรทัดที่ 3 หรือ บรรทัดที่ 7 เราต้องเช็กเงื่อนไขถูกไหมคะ เอา 20 ไปแทน n ได้ไหมคะ โอเค น้องตอบแล้วนะ คือ บรรทัดที่ 7 นะคะ ใช่ คือ ถ้าเราแทน n ด้วย 20 ใช่ไหมคะ แล้วก็เทียบ 20 น้อยกว่า 0 จริงไหมคะ 20 น้อยกว่า 0 จริงไหม ไม่จริง ถ้าไม่จริงให้ทำอะไร ให้มาทำหลัง else ใช่ไหมคะ เพราะฉะนั้น จะต้อง print บรรทัดนี้ออกมาที่หน้าจอโอเค เอาใหม่นะ เอาทีละตัวนะคะ เอาใหม่นะ สมมติว่าเดี๋ยวครูถามอย่างนี้แล้วกันนะ ถ้าคิดว่าถามทุกคนเลยนะคะ ถ้าทำงานบรรทัดที่ 3 นี่ เดี๋ยวจะให้ยกมือซ้ายนะ ถ้าทำงานบรรทัดที่ 7 ยกมือขวา เดี๋ยวครูเขียนให้ ถ้าตัวนี้นะ ให้ยกมือขวาถ้าทำงานตรงนี้ให้ยกมือซ้าย นะคะ เอาใหม่ ทุกคนดูนะ ถ้าครูกำหนดให้ n = 6 n = 6 ยกมือซ้ายหรือมือขวา n = 6 มีใครยกอีก ยกมือให้ครูดูหน่อยเร็ว n = 6 น้อยกว่า 0 จริงไหม น้อยกว่า 0 จริงไหมคะ 6 น้อยกว่า 0 ไม่จริง เห็นไหม ไม่จริงแล้ว แสดงว่า 6 นี่ มันน้อยกว่าหรือเท่ากับ 0 ต้องยกมือไหนคะ ยกมือขวานะ ยกมือขวา เอาใหม่ทุกคนต้องยกมือนะ นะคะ เปลี่ยนใหม่ ๆ ตัวเลข 25 ยก ใครไม่ยก ยกมือด้วย 25 มากกว่า 0 ไหม 25 มากกว่า 0 ไหม มากกว่า เพราะฉะนั้น ยกมือ มากกว่า 0 ยกมือขวาใช่ไหม เพื่อนตอบถูก ยกมือขวานะคะ เอาใหม่ -10 -10 -10 ลบมันน้อยกว่า 0 ไหม น้อยกว่า เพื่อนตอบถูก ยกมือ ซ้ายนะ ใช่ ยกมือซ้าย สมมติครูมีโจทย์ใหม่ อย่างนี้ยกมือซ้ายหรือมือขวา ครูแทนตัวเลขให้แล้ว ได้ไหมคะ ถ้า 25 น้อยกว่า 0 มันจริงไหม ไม่จริง 25 มันไม่ได้น้อยกว่า 0 ไม่จริง เพราะฉะนั้น บรรทัดนี้ไม่ทำ ต้องย้ายมาทำตัวนี้ 25 มากกว่าเท่ากับ 0 ใช่ไหม ใช่ มันเลยมากกว่าเท่ากับ 0 ใช่ไหม ใช่ ก็เลยต้องยกมือซ้าย ดูเส้น อันนี้คือ 0 นะ แล้วก็ -10 ใช่ไหมคะ มากกว่า 0 มาทางขวา อันนี้ไปทางซ้ายคือน้อยกว่า 0 ถ้าตัวเลขอยู่ในช่วงนี้ถูกไหมคะ ให้ทำอะไร ยกมือซ้าย ใช่ไหม ถ้าตัวเลขอยู่ในช่วงนี้นะคะ อันนี้รวมถึงตัวนี้ด้วยนะ ได้ไหม ดูเส้นจำนวนตัวนี้นะคะ ครูแปลงจากตัวนั้นมาเป็นเส้นจำนวนแบบตัวนี้แล้ว 0 ตั้งแต่ 0 มาทางขวา ให้ยกมือซ้ายเห็นไหม ถ้า 0 ย้อนไปทางซ้าย คือ ตัวเลขมันติดลบน่ะ ตัวเลขมันติดลบ ทำไมมันไม่ลบให้ครู 0 ย้อนไปทางซ้าย คือ ตัวเลขมันติดลบน่ะ เอาใหม่นะคะ ตัวเลขติดลบนะ ถ้ามีตัวเลขติดลบอย่างนี้นะ ให้ยกมือขวา เอาใหม่นะ สมมิตครูบอกว่าเลข -1 ถ้า -1 จะยกมือขวาหรือมือซ้าย -1 จะยกขวาหรือซ้ายขวา -1 ขวาใช่ไหม เอาใหม่ ถ้าครูเปลี่ยนเลขตัวนี้เป็น 9 มันเกินนะ 15 15 ยกซ้ายหรือขวา 15 15 อันนี้โอเคขึ้นนะ เอาใหม่ครูเปลี่ยนใหม่ ถ้าเป็นแบบนี้ติดลบ คือ ซ้าย เป็นบวกมากกว่า 0 ก็คือขวาใช่ไหมคะ คราวนี้จะได้ไม่งงนะ 19 ยกมือไหน คนอื่นล่ะ ใช่ ๆ ขวา เปลี่ยนแล้ว ครูผิดพลาดแล้ว ดูสิจำนวนได้ไหม โอเคเอาใหม่นะอีกครั้งหนึ่ง -5 ซ้ายหรือขวา ใช่ คือ ซ้ายใช่ไหมคะ เรารู้ได้อย่างไร เราเอาตัวเลขนั้นมาเทียบ ถูกไหมคะตัดสินใจอยู่ตอนนี้ จะยกซ้ายหรือยกขวาใช่ไหม นี่คือการจตัดสินใจใช่ไหมคะ จะยกมือไหนดี อย่างที่ครูบอกว่าถ้ามากกว่าเท่ากับ 0 เราจะยกมือขวา เพราะฉะนั้นเมื่อไร ที่ครูบอกตัวเลขคุณไป เราต้องมานั่งคิดตัดสินใจ เอ๊ะ มันมากกว่า 0 หรือเปล่า ใช่ไหม ถ้ามันมากกว่า 0 เราต้องยกมือซ้ายแต่ถ้าไม่ใช่ มันน้อยกว่า 0 พูดผิด มากกว่า 0 ยกมือขวา น้อยกว่า 0 เราต้องยกมือซ้ายนะคะ อันนี้คือการตัดสินใจนะคะ ตัดสินใจจะยกซ้ายหรือยกมือขวาดี เทียบกับอะไร ก็ต้องมีเงื่อนไขก็ต้องมีเงื่อนไขใช่ไหม ต้องมีเงื่อนไขของการตัดสินใจนะคะ จะยกมือซ้ายเมื่อไร จะยกมือขวาเมื่อไหร่ เวลาเราเอาไปเขียนโปรแกรม เราจะใช้จะใช้คำสั่ง if ตัวนี้ล่ะนะคะ แล้วข้างในวงเล็บ ก็คือเงื่อนไข ที่เรากำหนดขึ้นนะ เป็นเงื่อนไขที่ืี่เรากำหนดขึ้นนะคะ เสร็จแล้วถ้ามันจริงให้เราทำอะไร ถ้าไม่จริงให้ทำอะไรนะคะ โอเค ถัดมาจะเห็นว่าการตัดสินใจตรงนี้ เราจะทำงานแค่ 1 ครั้งเท่านั้นนะคะ ตรวจสอบเงื่อนไขถูกไหม แล้วก็ยกมือถูกไหมคะ ตามโจทย์นี่ตรวจสอบเงื่อนไข 1 ครั้ง แล้วมันเป็นจริงหรือเปล่า ถ้าจริงก็มายกมือในบรรทัดนี้ถูกไหมคะ หรือตรวจสอบเงื่อนไขตัวนี้แล้วไม่จริง ก็มายกมือในบรรทัดยกมือซ้าย เพราะฉะนั้น เวลาเรานับการทำงานนะคะ เราก็จะนับเฉพาะบรรทัดที่เราทำงานเท่านั้น ทำงานเพียง 1 ครั้งเท่านั้นนะคะ ทำงานเพียง 1 ครั้งเท่านั้น เพราะฉะนั้น เช่น เราเปรียบเทียบที่เงื่อนไขทำงาน 1 ครั้งนะคะ ถ้ามันเป็นจริงจะมาทำบรรทัดที่ 3 แล้วก็จบการทำงาน ข้างล่างนี้จะไม่ทำต่อนะคะ จะไม่ทำต่อ เพราะเราตัดสินใจแล้วนะคะ เพราะเราตัดสินใจแล้ว ตัดสินใจให้แสดงข้อความนี้ เสร็จแล้วก็จบ เพราะฉะนั้น มันก็จะทำงานบรรทัดที่ 1 ทำงาน 1 ครั้ง ทำงานบรรทัดที่ 3 ทำงานอีก 1 ครั้งนะคะ ก็จบการทำงาน เพราะฉะนั้น ถ้า Big-O ที่ได้ เราก็เอา 1 นะคะ +1 เป็น 2 เวลาเราเขียนค่า Big-O จะแทนด้วย 1 เพราะมันไม่มีค่าสัมประสิทธิ์อะไรเลย มันเป็นตัวเลขนะ เราก็แทนมันเป็น 1 นะคะ คราวนี้ ไม่ได้ใช่ไหม ไม่เป็นไรค่ะ ทำอย่างไรจะขึ้นมาอีกทีหนึ่ง คือ เสียงเข้าเฉย ๆ ใช่ไหม คราวนี้ดูต่อนะคะ คราวนี้ เมื่อกี้ คือ เงื่อนไขใช่ไหมคะ คือ เงื่อนไข เงื่อนไขคือการตัดสินใจ ถัดมา เมื่อกี้ครูครูบอกแล้วว่าถ้าเรามีคำสั่งซ้ำ ๆ นะคะ เราจะไม่เขียนคำสั่งเดิม ๆ หลาย ๆ ครั้ง เราก็จะใช้การวนซ้ำนะคะ หรือการใช้ loops แทนการเขียนแบบเดิม ๆ เหมือน ๆ กัน แล้วการใช้ loop นะคะ เราจะพูดถึง loop for นะ ที่ง่ายที่สุดนะคะ การใช้ loop For ก็คือเรามีจำนวนรอบที่แน่นอนเรานับจำนวนรอบได้ว่าทำงานกี่ครั้งนะคะ จากโจทย์ที่ครูกำหนดให้เราใช้ for แสดงว่าเราทำงานมากกว่า 1 ครั้ง อาจจะเป็น 2 ครั้ง 3 ครั้ง 4 ครั้ง ตามที่เรากำหนด และเราอยากรู้ว่า จำนวนรอบของการทำงานน่ะ เมื่อเราวัดประสิทธิภาพ เวลาที่ใช้นะคะ เราจะวัดอย่างไร มันจะได้ค่าอะไรออกมา ในการทำงานนะ เรากำหนดให้เป็น n ใด ๆ เป็นตัว n นะ เป็น n ใด ๆ นั่นหมายความว่า เมื่อแทน n ด้วยตัวเลขอะไรก็ตามจะมีประสิทธิภาพ ในเรื่องของความเร็ว มีค่า Big-O เท่ากันนะคะ เช่น ครูมีคำสั่งอยู่ทั้งหมด 3 บรรทัด เห็นหน้าจอ ครูมีอยู่ 3 บรรทัดนะคะ บรรทัดแรกไม่ได้อยู่ใน loop for บรรทัดแรกเป็นการกำหนดค่าเริ่มต้นให้กับตัวแปรที่ชื่อว่า total เมื่อเรา run เมื่อเรา run หรือทำงานผ่านบรรทัดที่ 1 ไป total จะมีค่าเป็น 0 เป็นตัวเลขนะ เป็นตัวเลข integer เป็นตัวเลขจำนวนถัดมาเจอคำสั่งบรรทัดที่ 2 มีการใช้ loop for แล้ว เราก็คาดเดาได้เลยว่ามันน่าจะต้องทำงานมากกว่า 1 ครั้งนะคะ แล้วมันทำงานกี่ครั้งล่ะ เขากำหนดให้ for i in range () นะคะ หมายความว่าตัว i ตัวนี้ ตัวแปร iมันสามารถเป็นค่าอะไรได้บ้าง เมื่อเราแทนค่าตัวเลขที่แทน n ตัวนี้ ถ้ามันอยู่ภายใต้จำนวนรอบที่เรากำหนด เมื่อเรากำหนดค่า n แล้ว มันจะมาทำงานคำสั่งบรรทัดที่ 3 นะคะ จะวนรอบตามจำนววนที่กำหนดที่กำหนดจนครบแล้วก็หลุดออกจากวนซ้ำนะคะ มันก็จะหลุดออกจากการวนซ้ำนะคะ คราวนี้ สมมติครูกำหนดให้ n= 3ครูกำหนดให้ n = 3 n = 3 นะคะ 1 2 3 n = 3 แล้ว i มีค่าเป็นอะไรได้บ้าง ตัวนี้ครูใช้ Python ถูกไหมคะ คำสั่งตัวนี้เป็นภาษา Pythin for i in range 3 ครูแทนตัวนี้ด้วย 3 แล้ว ครูเปลี่ยนละ ตอนนี้ n ครูไม่ใช้ 3 แทน ครูถามว่าค่า i ควรจะเป็นตัวเลขอะไรได้บ้าง ใน Python นะคะ ใน Index หรือตัวเลขแรกนี่ของ range ตรง range ตรงนี้ จะเริ่มต้นที่ 0 เสมอนะคะ range 3 จะเริ่มต้นที่ 0 1 แล้วก็ 2 คือมี 3 ตัวถูกไหมคะ 0, 1, 2 หรือจำแบบเร็ว ๆ เริ่มต้นที่ 0 ใช่ไหมคะ ตัวเลขตัวนี้มัน 3 คือลดลงมา 1 จำเร็ว ๆ คือลดลงมา 1 เพราะฉะนั้น range 3 คือ 0, 1, 2 คราวนี้ครูถาม เพิ่มใหม่ range 2 ควรมีค่าเป็นอะไรได้บ้าง ตรงนี้ควรมีค่าเป็นอะไรได้บ้าง ดูตัวนี้เป็นตัวอย่าง ครูบอกว่าตัวแรกต้องขึ้นต้นว่าอะไร 0, เลขอะไรคะ 1 ไปต่อไหม ปิดได้หรือยัง ต้องมี 2 ไหม ดู เทียบกับตัวนี้ มีแค่ 0 กับ 1 แล้วก็ปิด ทุกคนมีกระดาษที่ครูให้แล้วใช่ไหมพลิกไปหน้าหลัง พลิกหน้าหลัง หน้าหลังมันจะเป็นหน้ากระดาษเปล่า ๆ พลิกกระดาษที่ครูแจกให้ ทุกคนพลิก ๆ เป็นกระดาษที่ครูแจกให้ คราวนี้ครูมีตัวอย่างให้ 2 อันนะที่เราทำเมื่อกี้ใช่ไหมคะ range 3 กับ range 2 ทำที่เหลืออีก 3 ข้อให้ครูหน่อยสิ ว่า range 5 มันต้องประกอบไปด้วยตัวเลขที่อยู่ใน List มีค่าอะไรบ้าง range 1 range 10 มันควรจะมีค่าตัวเลขอะไรเอ่ย เป็น list ใช่ไหมคะ มันควรจะเป็นตัวเลขอะไรได้บ้าง ต้องอยู่ใน List นะ มันต้องเป็น List นะ ถ้าเรารู้จำนวนเลขนะคะ ว่าที่อยู่ใน list ตัวนี้มันมีกี่ตัว เราก็จะรู้จำนวนรอบของการทำงาน คราวนี้ เมื่อกี้ครูเดินดูแล้วทุกคนได้นะ ตัวนี้รู้ว่า range 5 มีค่าเป็นอะไรได้บ้างนะคะ ก็คือ 0, 1, 2, 3, 4 นะคะ range (1) ก็คือมี 2 ตัว 0 กับ 1 range (10 ก็คือ 0, 1, 2, 3, 4, 5, 6, 7ีมี 10 ตัว เริ่มจาก 0 นะคะ นับไปให้ได้ 10 ตัว ให้ได้ 0 ตัว ก็ 0 ถึง 9 คราวนี้ range ตัวนี้นะ ครูไม่มีจุดเริ่มต้นครูไม่ได้บอกว่ามันเริ่มต้นด้วยตัวอะไรเราจะเริ่มต้นด้วย Index เป็น 0 เสมอ แต่ถ้าครูอยากจะระบุตัวเลขเริ่มต้นว่าควรเริ่มต้นด้วยตัวเลขอะไรนะคะ ควรเริ่มต้นที่ตัวเลขอะไรที่ไม่ใช่ 0 เราจะไม่เริ่มต้นจากตัวแรกที่เป็น 0 นะคะ เราอยากจะเริ่มต้นจากตัวเลขตัวอื่นบ้าง เราจะกำหนด range ตรงนี้อย่างไร เช่น range คือ ช่วงถูกไหมคะ range (1, 4) ตัวแรกที่เราจะเขียน ก็คือ 1 นะคะ เป็น 1 ตามที่เรากำหนดตัวแรก เสร็จแล้วนี่ข้างหลังมาถึง 4 ใช่ไหม ลดลงไป 1 นะคะ เป็น 1, 2, 3 ตัวเลขข้างหลังคือ 3 มันน้อยกว่าตัวเลข 4 1 ตัวนะคะ ให้จำแบบนี้ ถัดมา range (1,3) เราเริ่มต้นที่เลข 1 นะคะ ,2 เห็นไหมมันน้อยกว่าน้อยกว่าเลข 3 1 ตัว ถัดมา ตัวนี้มาดูด้วยกัน 3 กับ 7 เราควรใช้อะไร เริ่มต้นตัวแรกเป็นอะไรคะ 3 แล้วเลขอะไรอีกเลขอะไรอีก 4, 5, 6 มี 7 ไหม ไม่มี ใช่ไหมคะ 3, 4, 5, 6 ตอบให้ครูหน่อยเร็ว range 1, 2 ต้องมีตัวเลขอะไรบ้าง range (2,6) อะไรบ้าง คะ ต้องอยู่ใน list ใช่ไหม อยู่ใน list นะ ทุกอันต้องอยู่ในมีตัวเลขอะไรบ้าง คราวนี้ดูเมื่อกี้ครูเดินดูแล้วตอบถูกนะ range (1,2) ได้เลขอะไรคะเลข 1 ใช่ไหม ทุกคนได้เลข 1 นะ 2,6ก็คือ 2, 3, 4 แล้วก็ 5 ใช่ไหมคะ ถามต่อบรรทัดนี้สมมติ for i in range (3,7)ทำงานกี่รอบ ลองดูสิคะ ข้อนี้ทำงานกี่รอบ มันได้ 3 ได้ตัวเลข 3, 4, 5, 6 ทำงานทั้งหมดกี่รอบ มีกี่ตัว 4 ตัว ถูกหรือเปล่า มีอยู่ 4 ตัว เพราะฉะนั้น ทำงานกี่รอบ 4 รอบ เขียนให้ครูหน่อยทุกอันเลยนี้ทำงานกี่รอบ เขียนเพิ่มให้ครูหน่อยที่ทำไปแล้วน่ะ เขียนเพิ่มว่าทำงานกี่รอบ = ... รอบ นับจากไหน นับว่ามันมีกี่ตัว List เรานี่มีกี่ตัว ก็คือทำงานเท่านั้นรอบ จากโค้ดโปรแกรมตัวนี้นะคะ เดี๋ยวเราจะเอาไปรวมใน loop for นะคะ เราแยกส่วนมาเฉย ๆ นะ เพื่อให้รู้ว่าถ้าขอบเขตของค่าที่เรากำหนดมันสามารถเป็นตัวเลขอะไรได้บ้างนะคะ ก็อย่างที่เราเขียน และมันทำงานกี่รอบ ก็คือนับว่ามันมีกี่ตัวนะคะ คือ จำนวนรอบ ย้อนกลับมาดูตัวโปรแกรมตัวนี้นะคะ ครูมีโค้ดอยู่ 3 บรรทัดนะอย่างที่บอก บรรทัดแรก กำหนดค่าเริ่มต้นนะคะ กำหนดค่าเริ่มต้นให้กับ total เหมือนแม่ให้เงินเรา 100 บาทสำหรับวันนี้นะคะ เราก็จะวันนี้ทั้งวันนี่มีเงินอยู่ในกระเป๋านะคะ เริ่มต้นอยู่ที่ 100 บาท แล้วทั้งวันเราจะใช้กี่บาทน่ะนะคะ ก็แล้วแต่ แต่ละคน แต่เริ่มต้นวันนี้เราเริ่มต้น ตอนนี้ครูกำหนดค่าเริ่มต้นให้กับ Total นี่มีค่าเป็น 0 นะคะ เริ่มต้นมีค่าเป็น 0 ทำงานไปเรื่อย ๆ Total จะเปลี่ยนเป็นอะไรก้แล้วแต่ เราสั่งให้มันมีค่าเป็นอะไร บรรทัดที่ 2 ที่เราเจอนี่ เราเจอ loop for แล้ว มันทำงานวนซ้ำ มันทำงานหลายรอบ เหมือนอย่างที่ครูถามทำงานกี่รอบนะคะ เราต้องหาคำตอบให้ได้ว่าแล้วทำงานกี่รอบfor i in range (n เห็นไหม เจอ i in range ที่เราเพิ่งเจอกันไปเมื่อกี้เอง ไอ้ตัว range นะคะ วงเล็บเปิดแล้วก็ตัว n n ตัวนี้อาจจะเป็นตัวเลขอะไรก็ได้ใช่ไหมคะ เหมือนที่เราทำเมื่อกี้ เห็นไหม ครูยังเปลี่ยนไปตั้งเยอะเลย (3, 2, 5, 1) เพราะฉะนั้น แล้วนี่ n ตัวนี้ เป็น n อะไรก็ได้ที่ครูกำหนดให้นะคะ ถ้ามันอยู่ในขอบเขตของข้อมูล ลิสต์ตัวเลขที่เรากำหนดมันก็จะทำงานบรรทัดที่ 3 ต่อ คือ การบวกค่า total ไปเรื่อย ๆ เมื่อกี้เราเพิ่งทำไป ครูแทน n ตัวนี้ด้วย 3 เราต้องทำงานกี่รอบ range 3 ทำงานกี่รอบคะ ดูในกระดาษสิทำงานกี่รอบคะ ดูในกระดาษสิ ในกระดาษมีไหม range 3 เมื่อกี้ เราต้องทำงานกี่รอบคะ 3 ถูกไหม หาเจอไหม เจอ ที่เราเขียนไปเมื่อกี้ถ้าเรายังจำได้ นี่ไง range 3 เราทำงานกี่รอบคะ 3 รอบ เพราะฉะนั้น ตอบครูได้แล้วว่าคำสั่งนี้จะต้องทำงานกี่รอบ 3 รอบ ใช่ไหม ดูจากไหน นี่ไงคะ ดูจาก range ที่เรากำหนดให้นี่ range เรามีค่าเป็นอะไรได้บ้าง 0, 1, 2 เพราะฉะนั้น ทำงานกี่รอบคะ 3 รอบนะ 3 รอบ เพราะฉะนั้น i มีค่าเป็นอะไรได้บ้าง i ตัวนี้มีค่าเป็นอะไรได้บ้างคะ มีค่า 0, 1, 2 ใช่ไหมคะ i ตัวนี้ สามารถมีค่าเป็น 0, 1, 2 นั่นหมายความว่าทำงานรอบที่ 1 เราบอกว่าเราทำงาน 3 รอบใช่ไหมคะ ทำงานรอบที่ 1 i มีค่าเป็นอะไร เป็น 0 รู้ได้อย่างไร นี่ไง เราเป็นคน list ค่าไว้อยู่แล้ว ทำงานรอบที่ 2 i มีค่าเป็นอะไรคะ เป็น 1 ทำงานรอบที่ 3 i มีค่าเป็น 2 ใช่ไหมคะ ตามนี้นะ ตามที่เราขยายบอกว่า range 3 มีค่าเป็นอะไรได้บ้าง 0, 1, 2เห็นไหมคะ i มีค่าเป็นอะไรได้บ้าง 0, 1, 2 แสดงว่า i นี่มีค่าเป็น 0, 1, 2 นะ แสดงว่ามันต้องทำงานทั้ง 2 บรรทัดนี้ใช่ไหมคะ มันต้องทำงานทั้งบรรทัดที่ 2 และบรรทัดที่ 3 ทำงานอย่างละ 3 ครั้ง หรือ 3 รอบ บรรทัดที่ 2 ก็คือตรวจสอบเงื่อนไข i นี่ ต้องทำ 3 ครั้ง อันนี้คือบรรทัดที่ 3 เห็นไหมคะ อันนี้คือบรรทัดที่ 2 อันนี้คือบรรทัด 3 มันก็ทำงาน 3 ครั้งเหมือนกัน ใช่ไหมคะ ถ้าครูเปลี่ยน ดูนะคะ ถ้าครูเปลี่ยนจาก range ตัวนี้ ถ้าครูเปลี่ยน range ตัวนี้นี่ ค่า n n เป็น 2 ครูต้องทำงานกี่รอบ ครุเปลี่ยนให้ n ตัวนี้เป็น 2 ครูต้องทำงานกี่รอบคะ n เป็น 2 ทำงานกี่รอบ เราทำงานกี่รอบนี่ range 2 กี่รอบคะ กี่รอบเอ่ย 2 รอบถูกไหมคะ นี่ไง range 2 i มีค่าเป็น 0 กับ 1 เพราะฉะนั้น เราทำงานกี่รอบคะ 2 รอบ n เป็น 2 เราทำงาน 2 รอบ n เป็น 3 เราทำงานกี่รอบคะ3 รอบ ถ้า n เป็น 5 เราทำงานกี่รอบ n เป็น 5 เราทำงานกี่รอบ คะ 5 รอบ ใช่ไหม n เป็น 1 เราทำงานกี่รอบคะ 1 รอบ ก็คือ i เป็น 0 ถูกไหม หรือทำงานแค่ 1 รอบ i เป็น พูดผิด n เป็น 10 เราต้องทำงานกี่รอบ กี่รอบคะ 10 รอบ ตามที่เราเขียนเลยนี่n สมมติแทนตัวนี้ n = 10 เพราะฉะนั้น ต้องทำงานทั้งหมด 10 รอบ เราสามารถบอกได้ไหมคะ ว่าเมื่อ n ใด ๆ จะทำงาน n ครั้งได้ใช่ไหม เพราะเมื่อกี้ที่เราทำกันนี่ n เป็น 3 ก็ 3 รอบ ก็ทำงาน 10 รอบ เพราะฉะนั้น ถ้า n เป็น 999 ต้องทำงานกี่รอบ ถ้า n เป็น 999 ต้องทำงานกี่รอบคะ ทำงานกี่รอบเอ่ย 999 รอบ ใช่ไหม n เป็น 1 ก็ทำงาน 1 รอบนะคะ เพราะฉะนั้น เราจึงบอกได้ว่าการทำงาน n ครั้งนี่ หมายความว่า ไม่ว่าจะแทนด้วย n เป็นตัวเลขอะไรก็ตาม ก็จะทำงาน n ครั้ง เราจึงเราจึงสามารถสรุปได้นะคะ ว่าในบรรทัดที่ 2 นี่ เราจะทำงาน n ครั้ง บรรทัดที่ 3 ก็ทำงาน n ครั้งนะคะ แต่ในบรรทัดที่ 1 นี่ มันอยู่นอก loop ถูกไหมคะ มันไม่ได้อยู่ข้างใน loop total อยู่ข้างใน loop มันกด Tab เข้ามา แต่การกำหนดค่าตัวแปรข้างบน Total = 0 นี่ มันอยู่ข้างนอก loop แสดงว่ามันทำงานกี่ครั้ง 1 ครั้ง เราจึงสามารถเขียนนะคะ ข้างหลังได้ว่าบรรทัดที่ 1 ทำงาน 1 ครั้ง บรรทัดที่ 2 ทำงาน n ครั้ง บรรทัดที่ 3 ก็ทำงาน n ครั้งนะคะ เราจะหาค่า Big-O ทำอย่างไร เอาสิ่ง ที่เราเขียนด้านหลังของคำสั่งเอามาบวกกัน ตัวแรกเป็น 1 ตัวที่ 2 เป็นอะไรคะ เป็น n ตัวที่ 3 เป็น n บวกกันได้เท่าไร n + n ข้างหน้า n ตัวนี้ ดูนะ ข้างหน้า n ตัวนี้มันคือเลข 1 นะ ข้างหน้า n คือเลข 1 เพราะฉะนั้น บวกกันแล้วได้กี่ n 1n +1n ได้เป็น 2n อันนี้มัน 1 เฉย ๆ ไหม ใช่ไหม ไม่ได้มีตัวอื่นเลยนะคะ คือ 1 มันไม่มีตัวไหนบวกเลย ก็บวก 1 นะ อันนี้มันบวกด้วยกันได้ มันเลยกลายเป็น 2 n อันนี้บวกกันไม่ได้นะ เพราะมันไม่มี n อะไรเลย มันรวมไม่ได้ เราจึงสรุปได้ว่าค่า Big-O เราสนใจเฉพาะเทอมของ n โดยตัดสัมประสิทธิ์ออก เพราะฉะนั้น ก็เหลือแค่ n นะคะ เพราะฉะนั้น Big-O กโปรแกรมนี้จะ Run ในเวลา O () เดี๋ยวครูให้เบรกก่อนนะ เบรก 5 นาทีนะคะ เดี๋ยวเราจะมาหัดทำด้วยกันนะ มีโจทย์ 1 โจทย์ตัวนี้ หลังจากเบรกแล้วนะ เราจะมาทำโจทย์นี้ด้วยกันนะคะ คราวนี้มาดูต่อโจทย์ตัวนี้นะคะ เหมือนถ้าเราดูนะ ตัวโปรแกรม บรรทัดที่ 1 บรรทัดที่ 2 บรรทัดที่ 3 เหมือนกับโจทย์ข้อนี้เลยใช่ไหมคะ เหมือนกันเลย แต่สิ่งที่ต่างกันคืออะไร คือ จำนวนตัวแปร ค่าของตัวแปร n นะคะ จากข้อนี้ครูบอกว่าครูให้ n = 2 ครูแทน n ตัวนี้ด้วย 2 นะ ขออภัย แปบหนึ่ง ต้องเขียนเลข 2 ครูแทน n ด้วย 2 นะคะ เพราะฉะนั้น ครูถามว่า บรรทัดนี้ทำงานกี่รอบ จำนวนกี่รอบ เมื่อเราแทน n ด้วย 2 เมื่อแทน n ตัวนี้ด้วย 2 range 2 ตัวนี้ทำงานกี่รอบ ทำงานกี่รอบคะ คนอื่นทำงานกี่รอบเอ่ย range (2) มีค่าเป็นอะไรได้บ้าง ลองดู ที่เราเขียนเมื่อกี้ range (2)มีค่าเป็น 0 แล้วก็ 1 เพราะฉะนั้น เราทำงานกันกี่รอบ เราทำงานกัน 2 รอบใช่ไหมคะ เราทำงานกัน 2 รอบ เพราะฉะนั้น i มีค่าเป็นอะไรได้บ้าง i ตัวนี้มีค่าเป็นอะไรได้บ้าง ที่เราเขียนไว้นี่ i มีค่าเป็น 0 แล้วก็ 1 ใช่ไหม ตามนี้เลยเห็นไหมคะ อันนี้ทุกคนแยกได้อยู่แล้วว่า range 2 คืออะไร เพราะฉะนั้น ค่า i มันก็ต้องมีค่าตามที่เราเขียนไว้ข้างบนถูกไหมคะ เป็น 0 กับ 1 แค่นั้นนะเป็น 0 กับ 1 เพราะฉะนั้น มันทำเงื่อนไขตรงนี้ด้วยใช่ไหมคะ เราก็ติ๊กถูกเลย จำนวนครั้งที่ทำตรงนี้ทำกี่รอบคะ 2 รอบ แล้วก็ใส่ 2 รอบ ดูนะคะ นี่ครูจะมีกระดาษให้ทำต่างหาก เป็น 2 รอบนะ เราทำ 2 รอบเพราะฉะนั้น เรามองด้านบนสิ เมื่อครูแทน n=2 2 ตัวนี้เท่ากับค่า n เลยนะ เพราะฉะนั้น ครูก็เลยเขียนตรงนี้ได้เป็นเลข n ได้เลย เพราะฉะนั้น 2 นี่เห็นไหม n = 2 เพราะฉะนั้น 2 นี่แทนด้วย n ได้ สามารถแทนด้วย n ได้ ครูก็ขึ้นมาดูข้างบนนะคะ แล้วการทำงานแต่ละครั้งทำกี่รอบบรรทัดที่ 1 ทำ 1 รอบ ทำงาน 1 รอบใช่ไหม มันไม่ได้อยู่ใน loop น่ะ เพราะฉะนั้น ต้องทำงานแค่ 1 ครั้งเท่านั้น เท่าไรคะ ทำงาน 2 รอบ แต่เมื่อแทนด้วย n ใด ๆ มันก็คือทำงาน n ครั้งนะคะ บรรทัดที่ 3 n ครั้งเหมือนกัน หาค่า Fn ทำอย่างไร เอาตัวนี้ 3 ตัวนี้มาบวกกัน เป็น 1 + nแล้วก็บวก n ได้เท่าไรคะตรงนี้ ได้กี่ n 1n 2n ได้ 2n แล้วก็ + 1 ถูกไหมคะ มันมี 1 อีกตัวหนึ่ง ตรงนี้นะคะ เพราะฉะนั้น Big-O คืออะไร ตัดสัมประสิทธิ์ออก เห็นไหมคะ เอาค่าสัมปสิทธิ์ กลายเป็น oO (n) นะคะ ก็จะเป็น O (n) อันนี้ เราลองเริ่ม ถ้า range อย่างที่เราเขียนไปนะ อย่างที่เราเขียนไปนะ range ตัวนี้ที่เราทำไป เริ่มจาก 0 ถ้าเราไม่เริ่มจาก 0 นี่เราต้องกำหนดค่าเริ่มต้นใน range ให้ ถูกไหมคะ แล้วเราจะทำงานกี่ครั้งนะ เราดูนะ อันนี้ range 1-4 ทำงาน 3 ครั้ง ถูกไหมคะ range 3, 7 ทำงาน 4 ครั้งหรือ 4 รอบ คราวนี้มาดูโจทย์นี้บ้าง ตรงนี้นะคะ ครูมีตัวอย่างให้ดูข้างบนนี่ด้วยนะ ตรงมุมขวา คำสั่งแรกนี่ range (1,4) ทำงานกี่ครั้งคะ ทำงานกี่ครั้ง ทำงานกี่รอบ ทำงานกี่รอบ range 1 ถึง 4 ข้างบนเห็นไหมคะ ทำงานกี่รอบ 3 รอบ เพราะมีตัวเลขกี่ตัว 3 ตัว บรรทัดที่ 2 ทำงานกี่รอบ 2 รอบนะคะ อันนี้คือ 2 รอบ อันนี้คือ 3 รอบนะ ร. เรือ รอบนะคะ ในโจทย์ คำสั่งให้ใช้เดิมเลย สิ่งที่ต่างกันคืออะไร for i in range (,n) เห็นไหมคะ เริ่มเห็นความต่างแล้ว ถ้า i เรานี่ไม่ได้เริ่มต้นจาก 0 และ เราเริ่มต้นที่เลขอะไรคะ เลข 1 ถูกไหม เริ่มต้นจากเลข 1 นะคะ เพราะฉะนั้น ถ้าครูกำหนดให้ n = 3 ครูเปลี่ยนตรงนี้เป็น 3 บรรทัดที่ 2 ทำงานกี่รอบ ครูเปลี่ยนค่า n เห็นไหมคะ for i in range (1, n) ครูแทน n ด้วยเลข 3 เห็นไหมคะ range (1,3) บรรทัดที่ 2 นี่ ค่า i มีค่าเป็นอะไรได้บ้าง และทำงานกี่รอบ เห็นไหม นี่ไงที่เราเขียนข้างบนไง ทำงานข้างบนไงทำงานกี่รอบคะ 2 รอบ2 รอบ นี่ไง 1, 3 เหมือนกันเลย ค่า i ที่เป็นไปได้ คือ เลขอะไรคะ เลข 2 มันทำงานกี่รอบ 2 รอบ ก็มันมีเลข 2 2 ตัวมันก็ทำงาน 2 รอบใช่ไหมคะ เพราะฉะนั้น มันทำงาน 2 รอบ หรือ 2 ครั้งนะคะ ค่า i ที่เป็นไปได้ คือ 1 แล้วก็ 22 ใช่ไหมคะ แล้วมันก็ทำงาน ติ๊กถูกได้เลย ทำงาน 2 บรรทัดนี้ ก็คือทำงาน 2 ครั้ง ครูจะแปลงนะคะ เมื่อเป็น n ใด ๆ นะ เมื่อเป็น n ใด ๆ สังเกตนะคะ ตัวนี้ คือ เลข 4 นะ มันคือค่า n ถ้าครูแทน n เป็น 4 ทำงานกี่รอบ ตรงนี้ทำงานกี่รอบคะ 3 รอบ ทุกคน 1,5 ทำงานกี่รอบคะ มีค่าที่เป็นไปได้ คือ 1, 2, 3 แล้วก็ 4 ถูกไหมคะ ใช่ 4 รอบn เป็น 4 ทำงาน 3 รอบ n เป็น 5 ทำงาน 4 รอบ เห็นไหมคะ ว่าจำนวนรอบมันลดลง 1 เมื่อเทียบกับ n เพราะฉะนั้น เมื่อเราเขียนแทนสมการ มันเป็น 2 ถูกไหม ทำอย่างไรถึงจะได้เลข 2 n - 1 n - 1 ถูกไหม n เราคืออะไร n ที่ครูกำหนดให้ คือ 3 เป็น 2 ได้ตัวเลขตรงกันไหม ตรงกัน เพราะฉะนั้น เมื่อแทน n ด้วย 2เมื่อแทน n ด้วย 2 ก็ทำงาน 1 ครั้ง หรือแทน n ด้วย 3 ก็คือทำงาน 2 ครั้ง ดังนั้น เมื่อแทน n ใด ๆ จะทำงาน n - 1 ครั้ง เมื่อโค้ดตัวนี้นะคะ เมื่อโปรแกรมตัวนี้ครูแทน n ด้วย 10 ครูแทน n ด้วย 10 จะทำงานกี่รอบ 9 รอบ คือ 10 - 1 ใช่ไหมคะ คือ 9 รอบ เพราะฉะนั้น เราจึงแทนจำนวนรอบของการทำงานบรรทัดที่ 1 คือ ทำงาน 1 ครั้ง 1 รอบ เพราะมันไม่ได้อยู่ในลูป มันจึงทำงาน 1 ครั้ง บรรทัดที่ 2 มันทำงาน n - 1 ครั้งn - 1 ครั้ง เมื่อ n ใด ๆ มันทำ n - 1 ครั้งนะคะ บรรทัดที่ 3 ก็เหมือนกันคือ n - 1 เท่ากันนะ อันนี้ให้ดูนะ 2 ตัวนี้จะต้องเขียนเหมือนกันนะคะ มาหาค่าฟังก์ชัน ก็เอาตัวข้างหลังมาบวกกัน 1 + (n-1) นะคะ คำตอบที่ได้ ครูกระจายตัวนี้นะคะ จะได้เป็น 1 + n - 1 + n - 11n + 1n ได้เป็น 2n 1 - 1 - 1 1 กับ - 1 หมดไหมเป็น 0 เหลือ -1 มันก็เลยเป็น 2n - 1 เพราะฉะนั้น Big-O ก็คือเอา n ที่มากที่สุด ก็คือ n ตัวนี้แล้วตัดสัมประสิทธิ์ออกก็จะได้เป็น O (n) ค่อย ๆ ดูนะ เอาแค่ว่าเริ่มต้น เรารู้ว่าทำงานกี่รอบขอให้นับให้ได้ว่า i นี่ มีค่าเป็นอะไรได้บ้าง แล้วมันทำงานทั้งหมดกี่รอบ โอเคเข้าใจตัวเบสิกตัวนี้ก่อนก็ได้นะคะ อย่างนี้ดีกว่า ก่อนที่ครูจะไป ไป range สัญลักษณ์ตัวอื่นนะ เป็น n + 1 n - 1เดี๋ยวครูมีแบบฝึกหัดให้ทำก่อนนะในกระดาษ เดี๋ยวลองทำตัวนี้ดูก่อน คราวนี้ ครูมี Sheet แจกให้ในห้องคำอธิบายสั่งที่สอนวันนี้แแหละนะคะ โจทย์ตัวเป็น range n กับ 1,n นะ ที่เราเรียนผ่านไปนะคะ ครูจะเขียนอธิบายให้สามารถนั่งดูตัวนี้ได้นะเดี๋ยวครูให้ทำแบบฝึกหัดตัวนี้ก่อนเลย จะได้รู้ว่าเราทำได้หรือไม่นะคะ คนละ 1 แผ่น เขียนลงไปในนี้เลยนะคะ ลองทำในแบบฝึกหัดที่ครูแจกให้นะคะ แล้วลองดูกระดาษเพิ่มหรือในสไลด์ที่เราเรียนกันเมื่อกี้ โจทย์น่าจะเป็นตัวนี้ โอเค โจทย์จะคล้าย ๆ กับตัวนี้เลยนะคะ โจทย์จะคล้าย ๆ กับสิ่งที่ครูโชว์บนกระดานนี้ โชว์บนสไลด์ ค่อย ๆ ดูนะคะ ลองดู แล้วก็ดูชีตประกอบ แล้วลองทำนะคะ ลองทำอย่างไร รูให้โจทย์ตัวนี้มา ตัว Code ข้างบนแบบกันเลย แต่ครูเปลี่ยนค่า n เฉย ๆ ครูกำหนดให้ n = 4 อันนี้ครูเปลี่ยนให้ n = 4 เพราะฉะนั้น ค่า i นี่ มันเป็นค่าอะไรได้บ้าง เขียนให้ครบ รู้ได้อย่างไรถ้าเรายังจำไม่ได้เราก็มาเขียนตรงนี้ก่อนก็ได้นะคะ range (4) มันมีค่าเป็นอะไรได้บ้าง พอเราเขียน list ตรงนี้แล้ว เราก็เอามาเขียนในคอลัมป์ที่ 1 มีค่าเป็นอะไรได้บ้าง แล้วก็ติ๊กถูกเลย คำว่า "ติ๊กเครื่องหมายถูก" คือ มันทำที่คำสั่งนั้น แล้วนับมันทำงานกี่ครั้ง แล้วก็นับมันมีเครื่องหมายถูกกี่ครั้ง ทำงานกี่ครั้งแล้วเทียบว่าไอ้ตัวนับตัวนี้ที่เรานับได้นี่ เมื่อเทียบกับ n แล้วนี่ มันควรแทนด้วย n อะไร n+1 n-1 หรือ n เฉย ๆ จากนั้นเอากลับขึ้นมาเขียนด้านบนเพื่อบอกว่าแต่ละบรรทัดทำงานกี่ครั้งหรือกี่รอบ ได้แล้วมาหาค่าฟังก์ชัน เอาแต่ละตัวมาบวกกัน แล้วก็หาค่า Big-O เป็นตัวสุดท้าย ลองทำดูสิคะ ไม่ได้เดี๋ยวบอกนะ เดี๋ยวครูเดิน เดี๋ยวครูฝากอย่างนี้นะ เอกสารที่ครูให้ไปมีอยู่ 3 แผ่น มีอยู่ 3 ตัวอย่าง 3 แผ่น มีอยู่ 3 ตัวอย่าง มีอยู่ 3 แผ่น ครูฝากไปอ่านนะ ครูฝากไปอ่าน แล้วก็ทำความเข้าใจอีกครั้งหนึ่งนะคะ ด้วยกันนะคะ เดี๋ยวเรามาดูด้วยกันอีก 1 ข้อ เมื่อกี้ คือเราสามารถนับจำนวนรอบได้นะ เราสามารถรู้ว่าค่า i นี่ มีค่าเป็นอะไรได้บ้างและรู้ว่า loop for จะทำงานกี่รอบ อันนี้ทุกคนทำได้นะคะ แต่จะสับสนกับการแปลงให้เป็นค่า n นะเดี๋ยวค่อย ๆ ดูนะคะ อาจจะสับสนเรื่องของการแปลงให้เป็นค่า n พอเราแปลงให้เป็นค่า n เสร็จแล้ว เราย้อนกลับขึ้นไปดูตัวโค้ดอีกครั้งหนึ่งและเขียนนะคะ บอกว่าบรรทัดแรกทำงานกี่ครั้ง บรรทัดที่ 2 ทำงานกี่ครั้ง และบรรทัดที่ 3ทำงานกี่ครั้ง แล้วจึงเอาจำนวนครั้งเหล่านั้นมาบวกกันตรงข้ามฟังก์ชันตรงนี้นะคะ ตัวเลขตรงนี้มาจากไหน มาจากจำนวนครั้งของการทำงานในแต่ละคำสั่ง เห็นไหม บรรทัดแรกทำงาน 1 ครั้ง บรรทัดที่ 2 เราดูจากตรงนี้ก็ได้เห็นไหมคะ เงื่อนไข i เหมือนกัน ทำงาน n ครั้ง แล้วตรงtotal ก็ n ครั้ง ก็เลยเอาทั้ง 3 บรรทัดมาบวกกัน โอเค คราวนี้มาดูโจทย์นี้พร้อมกัน บนกระดาน ครูมี 3 บรรทัดเหมือนกัน ครูมี 3 บรรทัดก็คือโค้ดน่ะมีอยู่ 3 บรรทัดนะคะ คล้าย ๆ ของเดิมเลยนะ แต่สังเกตเห็นไหมคะ ว่าตรง range ครูเปลี่ยนไป ครูใช้ range (n + 1)นะคะ (n + 1) เช่น ครูกำหนดให้ n = 3 เพราะฉะนั้น range ตรงนี้มันคือ 3 + 1 เป็น range 4 ใช่ไหมคะ range ()ค่าที่เป็นไปได้มี อันนี้ตามที่เราเข้าใจนะคะ จะรวมต้นจาก 0 (1)0, 1, 2, 3 เป็นลิสต์ข้อมูลนะคะ มีอยู่ทั้งหมด 4 ตัว เราต้องทำงานกี่รอบ 4 รอบ ใช่ไหมคะ เขามีข้อมูลอยู่ 4 ตัว จะต้องทำงานทั้งหมด 4 รอบ i เป็น 0 เห็นไหมคะ ตามที่เราเขียนด้านบนนี้เลย 0 , 1, 2, 3 i จะมีค่าที่เป็นไปได้อยู่ 4 ค่าด้วยกัน คือ 0, 1 2, 3 จากนั้นเราหาจำนวนรอบใช่ไหมคะ อันนี้คือค่าที่เป็นไปได้ ตรงนี้เราก็ติ๊กถูกหมดเลย เพราะฉะนั้น จำนวนที่ทำคือ 4 ครั้ง บรรทัด Total คำสั่ง Total นี่จะทำงาน 4 ครั้ง คำสั่ง for i in range ก็ทำอยู่ 4 ครั้ง แล้วเมื่อแทนด้วย n ใด ๆ เห็นไหมคะ n ใด ๆ n เดิมเราเป็น 3 ทำอย่างไรจะเป็น 4 ได้ ก็ต้องบวกอะไรคะ + 1 ใช่หรือเปล่า 3 + 1 เท่ากับข้างบนเลย ตรงนี้นะคะ ก็คือ 3 + 1 มันเลยเท่ากับ 4 เพราะฉะนั้น ตรงนี้กลายเป็น n + 1 นะคะ เพราะเมื่อแทน n ด้วย 3 3 + 1 เท่ากับ 4 มันเท่ากับตัวข้างบนเลย เพราะฉะนั้น เราจึงบอกได้นะคะ ว่าคำสั่งแต่ละคำสั่งในโค้ด 3 บรรทัดนี้่ จะทำงานกี่รอบ แต่ละคำสั่งในโค้ด 3 บรรทัดนี่จะทำงานกี่รอบ บรรทัดที่ 1 ทำงาน 1 รอบ เขียนไว้ก่อน มันอยู่นอกลูปทำงาน 1 รอบแน่นอน บรรทัดที่ 2 นี่มันทำงาน n + 1 ครั้ง เราก็เขียนไว้ข้างหลังก่อน ถูกไหมคะ บรรทัดที่ 3 ทำงานกี่ครั้ง นี่ไง n + 1 ครั้ง เมื่อเราหาค่า n ตรงนี้ได้แล้ว ย้อนกลับขึ้นไปเขียนตรงหลังคำสั่งแต่ละคำสั่งด้วย ว่าอันนี้คือทำงาน n + 1 ครั้งอันนี้คือทำงาน n + 1 ครั้ง เราลองแทนค่า n ด้วย 3 เห็นหรือเปล่า ตรงนี้ก็ทำงาน 4 ครั้ง ตรงกันเลยมันก็จะตรงกับข้อนี้ คือ ทำงาน 4 ครั้ง เสร็จแล้วครูจะหาค่า f (n)ก็เอาแต่ละบรรทัดมาเขียนไหม 1 + n + 1 นะคะ ครูก็กระจายค่าออกมา 1 + n + 1 + n +1 + nจะได้เท่ากับ 1n + 1n ก็กลายเป็น 2n นะคะ 1 + 1 +1 ก็กลายเป็น 3 หาค่า Big-O เลือก n n ที่มากที่สุด ก็คือตัวนี้ ก็ได้เป็น O (n) นะคะ เราเลือกค่า n ที่มากที่สุด ก็คือ ฯ ตัวสุดท้ายก่อนเลิกนะ เดี๋ยวช่วยครูทำหน่อย ก่อนเลิก ครูมีโจทย์นะ ครูมีโจทย์นะ range ให้ n = 3 ช่วยครูหน่อยคะ หาว่าค่า i ที่เป็นไปได้ จะมีค่าอะไรที่เป็นอะไรได้บ้าง 3 - 1 เป็นอะไรได้บ้างคะ 2 เพราะค่าที่เป็นไปได้คือค่าอะไรได้บ้างคะ เริ่มต้นที่ 0 เพราะว่าไม่มีอะไรนี่ ครูไม่ได้บอกว่าเริ่มต้นที่เท่าไรถูกหรือเปล่า ถ้าครูไม่ได้กำหนดก็ต้องเริ่มต้นที่ 0 แล้วก็ 1 มี 2 ไหมไม่มีใช่ไหมคะ range (2) ค่าเป็น 0 กับ 1 ทำงานกี่รอบ 2 รอบถูกหรือเปล่าทำงาน 2 รอบ ตอนนี้ทุกคนทำงาน 2 รอบ ทุกคนรู้ว่าทำงาน 2 รอบ ติ๊กถูกไปก่อนใช่ไหมคะ ค่าที่ได้คือ 0 กับ 1 ค่า i ที่เป็นไปได้ คือ 0 กับ 1 ทำงาน 2 รอบn ต้องลบเท่าไรคะ ถึงจะเป็น 2 ตอนนี้ n เป็น 3 3 ลบอะไรจึงจะเป็น 2 3 - 1 = 2 เพราะฉะนั้น แทน 3 ก็คือ n ถูกหรือเปล่า ก็เลยกลายเป็น n - 1 โอเค n - 1 มาจากไหน เดิม n=3 ถูกหรือเปล่า ทำอย่างไรให้ n=2 n - 1 มันก็เลยจะเป็นเท่ากับ 2 เพราะฉะนั้น บรรทัดที่ 1 ทำงาน 1 ครั้ง บรรทัดที่ 2 ทำงาน n-1 ครั้ง บรรทัดที่ 3 ก็ n - 1 เอาตัวเลขมาบวกกัน 1 + n-1 + n-1 เท่ากับเท่าไร ครูกระจายก่อน 1 + n -1 + n - 1 = 2 (n) ตัวนี้ตัดได้ถูกไหม 1 -1 เพราะฉะนั้น Big-O คืออะไรคะ O (n) มีใครงงไหม เริ่มงงตรงไหนไหมคะ อย่างนี้นะ เดี๋ยว กลับไปทวนอีกครั้งหนึ่งนะคะ เดี๋ยวพรุ่งนี้ครูจะฝากแบบฝึกหัด ครูจะพรินต์แบบนี้มาให้ ให้ลองทำอีกนะ สัก 2 ข้อนะคะ คนละ 1 แผ่นหน้าหลังเดี๋ยวครูจะไปฝากไว้ที่ DSS นะคะ พรุ่งนี้เช้า เสร็จแล้ว เสร็จแล้วฝากไปอ่าน Sheet นี้ดีกว่า คืนนี้ไปนั่งอ่านชีทที่ครูให้หน่อยนะ ไม่เข้าใจถามพี่เขานะคะ พรุ่งนี้หลังจากที่อ่านมาแล้วนี่ ไม่เข้าใจประเด็นตรงไหน ไม่เข้าใจบรรทัดไหน ให้วงนะ ให้วงมาเลย เดี๋ยวให้พี่อุ๋ยเขาอธิบายให้นะคะ ให้วงตรงที่เราไม่เข้าใจนะคะ เสร็จแล้วนี่เราทำแบบฝึกหัดนะคะ เดี๋ยวครูให้โจทย์ 2 โจทย์เดี๋ยวครูทำกระดาษแบบฝึกหัดแบบนี้มาให้ แล้วก็ลองทำดูนะคะ ว่าถ้าครูกำหนดค่า n มาให้แบบนี้จะทำงาน มีค่า i ที่เป็นไปได้ มีค่าอะไรบ้าง แล้วทำงานกี่รอบ เอาเริ่มต้นทำงานกี่รอบให้ได้ก่อนแล้วกันให้ได้ก่อนแล้วกันนะคะ ครูว่าน่าจะได้แล้วล่ะ เพียงแต่ว่าอาจจะมาลงตาราง อาจจะสับสนนิดหน่อยนะ ต้องลงทำแบบฝึกหัดนะคะ มันน่าจะเข้าใจมากขึ้น เดี๋ยวครูเช็กชื่อหน่อยอุ๋ย โอเค ศิริลักษณ์อ๋อ อดิศร มาค่ะ นพกิต พงพร จันทการไหน กัญญาณัฐ ติดโควิด ธัญลักษณ์ ค่ะ วริษา ภัทรลดา อ๋อ เทพอักษรค่ะ ภากรณ์ เป็นเสี่ยงค่ะ โอเค โอเคค่ะ เดี๋ยวเจอกันสัปดาห์หน้านะ ค่ะ ค่ะ สวัสดีค่ะ เรียบร้อยแล้วค่ะ ขอบคุณค่ะ ล่าม [สิ้นสุดการถอดความ]