สมมติว่าคุณอยากจัดทำรายการหนังสือสำหรับอ่านสักชุดหนึ่ง: เล่มไหนอ่านจบแล้ว เล่มไหนยังไม่ได้เริ่ม จะบันทึกความคืบหน้าอย่างไร และจะกลับมาใช้ต่อในครั้งหน้าอย่างไร
เมื่อจัดการกับหนังสือเพียงเล่มเดียว โค้ดไม่กี่บรรทัดดูเหมือนจะเพียงพอ แต่พอเพิ่มเป็นสิบเล่ม ก็ต้องเก็บหลายระเบียน เมื่อต้องการกรองเอาเฉพาะรายการที่ยังไม่ได้อ่าน ก็ต้องระบุกฎเกณฑ์ในการตัดสิน และเมื่อปิดโปรแกรมไปแล้ว จึงได้รู้ว่าการแก้ไขเมื่อครู่ไม่ได้ถูกบันทึกไว้
ความต้องการเพียงเล็กน้อยนี้ได้นำปัญหาหลักหลายประการของการเขียนโปรแกรมมาให้เห็นตรงหน้าแล้ว AI001 《Python 编程入门》 ของ EvoClass ได้จัดบทเรียนสิบครั้งโดยอิงจากความสามารถพื้นฐานเหล่านี้ ไล่จากไวยากรณ์และโฟลว์ควบคุม ค่อย ๆ ก้าวเข้าสู่ลิสต์ ฟังก์ชัน ดิกชันนารี มอดูล และการอ่านเขียนไฟล์
โปรแกรมรู้ได้อย่างไรว่าขั้นตอนต่อไปควรทำอะไร
เมื่อคนเรามองดูรายการหนึ่ง ๆ มักจะตัดสินใจได้เองตามธรรมชาติว่าควรจัดการกับรายการใดก่อน แต่โปรแกรมกลับต้องการเงื่อนไขและขั้นตอนที่ชัดเจน
ใน Lesson 2: โฟลว์ควบคุมและตรรกะ บทเรียนเริ่มจากการทำงานตามลำดับ ไปสู่การตัดสินใจตามเงื่อนไข นิพจน์บูลีน และการเลือกหลายทาง พร้อมทั้งเน้นย้ำบล็อกโค้ดที่กำหนดขอบเขตด้วยการย่อหน้า
ย้อนกลับมาที่รายการอ่านหนังสือ เราอาจเริ่มต้นด้วยการถามเพียงคำถามเดียวว่า สถานะของระเบียนหนึ่งนั้นเป็น "ยังไม่ได้อ่าน" หรือไม่ แล้วตัดสินใจจากคำตอบว่าจะเก็บไว้หรือข้ามไป จากนั้นจึงนำกฎเดียวกันไปใช้กับระเบียนอื่น ๆ
สิ่งที่ควรฝึกในขั้นนี้คือการเปลี่ยนข้อกำหนดที่คลุมเครือให้เป็นการตัดสินที่ชัดเจน ตัวอย่างเช่น "ห้ารายการที่มีประโยชน์" ยังกว้างเกินไป ในขณะที่ "เก็บเฉพาะรายการที่มีสถานะเป็นยังไม่ได้อ่าน" สามารถแปลงเป็นกฎที่ตรวจสอบได้แล้ว
เมื่อข้อมูลมีมากขึ้น ควรคิดก่อนว่าจะจัดเก็บอย่างไร
เมื่อรายการไม่ได้มีเพียงรายการเดียวอีกต่อไป วิธีจัดระเบียบข้อมูลก็เริ่มส่งผลต่อวิธีเขียนโปรแกรม
Lesson 3: การใช้ลิสต์ พูดถึงคอลเลกชันแบบมีลำดับ ดัชนี การสไลซ์ และการเพิ่มหรือลบสมาชิก ชื่อหนังสือหลายเล่มสามารถใส่ไว้ในลิสต์ได้ แล้วใช้ลูปประมวลผลทีละรายการ
แต่หนังสือหนึ่งเล่มอาจมีผู้แต่ง สถานะการอ่าน และวันที่บันทึกด้วย ในตอนนี้หากอาศัยเพียงตำแหน่งเพื่อจำว่า "รายการที่สองคืออะไร" ก็จะสร้างภาระให้กับการแก้ไขในภายหลังได้ง่าย Lesson 8: การใช้ดิกชันนารี จึงแนะนำคีย์และค่า เพื่อให้ฟิลด์ต่าง ๆ มีชื่อที่ชัดเจน
การวางดิกชันนารีหนึ่งรายการไว้ในแต่ละสมาชิกของลิสต์ เป็นวิธีจัดระเบียบวิธีหนึ่งที่แบบฝึกหัดนี้สามารถลองทำได้ ทั้งนี้เป็นเพียงข้อเสนอเพื่อการเรียนรู้ โดยมีเป้าหมายเพื่อให้เข้าใจว่า การเลือกโครงสร้างข้อมูลทำให้บางการดำเนินการตรงไปตรงมามากขึ้น และยังส่งผลต่อวิธีที่ผู้อื่นเข้าใจโปรแกรม這段นี้อีกด้วย
ทำงานเดิมซ้ำ ๆ จะลดการคัดลอกได้อย่างไร
หากการแสดงผลบนหน้าจอ การส่งออกรายการ และการนับจำนวน ต่างก็คัดลอกกฎการกรองไปใช้ซ้ำ การแก้ไขเงื่อนไขก็ต้องตรวจสอบหลายจุดพร้อมกัน
Lesson 5: การใช้ฟังก์ชันเพื่อใช้โค้ดซ้ำ กล่าวถึงการนิยามฟังก์ชัน พารามิเตอร์ การเรียกใช้ และค่าที่คืนกลับ พร้อมทั้งหารือว่าจะจัดกลุ่มการดำเนินการที่เกี่ยวข้องให้เป็นหน่วยที่นำกลับมาใช้ซ้ำได้อย่างไร
การกรองในรายการอ่านหนังสือจึงกลายเป็นแบบฝึกหัดได้: รับชุดระเบียนเข้ามา แล้วคืนผลลัพธ์ที่ตรงตามเงื่อนไข ส่วนจุดที่เรียกใช้มีหน้าที่แสดงหรือบันทึก โดยการกรองเองยังคงมีหน้าที่ชัดเจน
เมื่อชื่อฟังก์ชัน อินพุต และเอาต์พุตชัดเจนแล้ว การตรวจสอบก็จะเจาะจงมากขึ้น เช่น เมื่อไม่มีระเบียนเลยจะคืนอะไร หากหนังสือทุกเล่มอ่านจบแล้วจะเป็นอย่างไร คำถามเรื่องขอบเขตเหล่านี้มักช่วยให้เข้าใจโปรแกรมได้ดีกว่าการที่โค้ดช่วงหนึ่งรันผ่านสักครั้ง
เมื่อปิดโปรแกรมแล้ว ผลลัพธ์จะคงอยู่ได้อย่างไร
ข้อมูลที่เก็บไว้ในตัวแปรขณะโปรแกรมทำงาน จะไม่กลายเป็นระเบียนที่ยังคงอยู่เมื่อเปิดโปรแกรมครั้งถัดไปโดยอัตโนมัติ
Lesson 9: การรับเข้าและส่งออกไฟล์ พาการเรียนรู้ไปนอกตัวโปรแกรม: การอ่านและเขียนข้อความ การจัดการทรัพยากรไฟล์ และการสัมผัสรูปแบบข้อมูลที่พบบ่อยอย่าง CSV และ JSON
รายการอ่านหนังสือสามารถพัฒนาต่อไปตามเส้นทางนี้ได้: เริ่มจากการอ่านข้อมูลจากไฟล์ แล้วประมวลผลระเบียน และสุดท้ายเขียนผลลัพธ์ที่ต้องการเก็บไว้ออกไป ขณะเขียนยังต้องแยกแยะระหว่างการเขียนทับและการต่อท้าย เพื่อไม่ให้การรันครั้งถัดไปเปลี่ยนแปลงข้อมูลที่ตั้งใจจะเก็บไว้เดิม
รายการชุดนี้เป็นแนวคิดการสอนที่เชื่อมโยงองค์ความรู้เข้าด้วยกัน ไม่ใช่โปรเจกต์ฉบับสมบูรณ์ที่หลักสูตรจัดเตรียมไว้แล้ว และไม่ใช่การทดสอบซอฟต์แวร์จริงที่บทความนี้ทำเสร็จแล้ว คุณค่าของมันอยู่ที่การทำให้แนวคิดใหม่แต่ละอย่างตอบสนองต่อความต้องการที่เป็นรูปธรรมหนึ่งอย่าง แทนที่จะมองจุดไวยากรณ์เป็นรายการที่แยกจากกัน
ใน หน้าเว็บคอร์ส AI001 คุณสามารถเรียนจากพื้นฐานไปทีละขั้น หรือจะนำภารกิจเล็ก ๆ ของตัวเองกลับไปยังบทที่เกี่ยวข้องก็ได้ สุดท้ายแล้ว โค้ดไม่กี่บรรทัดที่รันได้นั้นอาจกลายเป็นเครื่องมือที่คุณเข้าใจเอง แก้ไขได้ และนำกลับมาใช้ต่อได้ในครั้งหน้า
บทความนี้เรียบเรียงจากสารบัญหลักสูตรและสื่อการสอนปัจจุบันของ EvoClass โดยลิงก์บทเรียนชี้ไปยังสื่อภาษาอังกฤษ รายการอ่านหนังสือเป็นข้อเสนอเพื่อการเรียนรู้ บทความนี้ไม่ได้รันการทดลองในหลักสูตร หรือรับประกันว่าเมื่อเรียนจบหลักสูตรแล้วจะสามารถส่งมอบซอฟต์แวร์สำหรับใช้งานจริงได้ เงื่อนไขการเข้าถึงฉบับสมบูรณ์และการใช้ฟังก์ชันการเขียนโปรแกรมเป็นไปตามที่ระบุไว้ในหน้าเว็บ