Tag Archives: วิทย์ม.ต้น

วิทย์ม.ต้น: เขียนโปรแกรม Python หาด้านสามเหลี่ยมมุมฉากที่เป็นจำนวนเต็ม (เช่น 3-4-5), หัดใช้ range()

สัปดาห์ที่แล้วเด็กม. 2-3 ได้การบ้านไปให้พยายามหาเลขจำนวนเต็ม a, b, c ที่สามารถเป็นด้านของสามเหลี่ยมมุมฉากได้ และ a < b < c ซึ่งแปลว่า a2 + b2 = c2 โดยเราจะดูถึง c มีขนาดไม่เกิน 1,000

เด็กๆหลายคนก็พยายามทำและสำเร็จ วันนี้ผมจึงแสดงขบวนการที่ผมเขียนแต่ละขั้นตอนว่าผมทำอย่างไร ให้เห็นว่าผมเขียนทีละนิดและตรวจสอบว่าแต่ละขั้นตอนทำงานอย่างที่ผมคิดหรือเปล่า เพิ่มการทำงานไปทีละน้อยๆจนทำงานครบอย่างที่ต้องการ ไม่ใช่เขียนโปรแกรมไปทีละเยอะๆแล้วผลที่ได้ผิดแต่งงไม่รู้ว่าผิดตรงไหน เป็นตัวอย่างให้เด็กๆไปทดลองทำตามครับ

โค้ดม. 2-3 ของวันนี้อยู่ใน Jupyter Notebook อันนี้ครับ

จริงๆแล้วปัญหานี้เรียกว่า Pythagorean Triple และมีวิธีหาที่ดีกว่านี้ครับ แต่คณิตศาสตร์ที่เกี่ยวข้องซับซ้อนเกินความเข้าใจของเด็กๆ จึงใช้วิธีที่เด็กเข้าใจให้คอมพิวเตอร์ทำงานลองคำนวณและตรวจสอบให้ ส่วนวิธีที่ดีกว่านี้สามารถอ่านได้ที่ Pythagorean triple และ Tree of primitive Pythagorean triples นะครับ

สำหรับเด็กม. 1 ผมสอนให้รู้จักการทำงานซ้ำๆโดยใช้ for x in range(…) และให้รู้จักสร้างฟังก์ชั่นง่ายๆไปคำนวณสิ่งต่างๆในวิชาอื่นๆดูครับ แล้วให้ใช้ความรู้นี้คำนวณดูอัตราการเติบโตที่เปอร์เซ็นต์ต่างๆว่าต่างกันมากแค่ไหนครับ

โค้ดม. 1 ของวันนี้อยู่ใน Jupyter Notebook อันนี้ครับ

วิทย์ม.ต้น: เด็กๆหาทางวัดปริมาณอากาศที่ร่างกายใช้ตอนออกกำลังกาย

วันนี้ผมแนะนำเด็กใหม่มัธยมต้นให้รู้จักหนังสือ  The Art of Thinking Clearly ซึ่งเขียนโดยคุณ Rolf Dobelli โดยเราจะอ่านเรื่องเกี่ยวกับ Cognitive Biases (การทำงานของสมองพวกเราที่อาจทำให้เราเข้าใจความจริงรอบๆคลาดเคลื่อนไป) โดยเด็กๆจะอ่านกันสัปดาห์ละบทเป็นการบ้านเพื่อเข้าใจเนื้อหาและฝึกหัดการใช้ภาษาอังกฤษไปด้วย (เด็กรุ่นที่แล้วเคยรู้จักกันไปที่ https://witpoko.com/?p=5805 ครับ)

จากนั้นเด็กๆก็พยายามออกแบบการทดลองเพื่อหาว่าเมื่อเราออกกำลังกาย เราต้องหายใจมากกว่าปกติมากแค่ไหน เด็กๆคุยและตกลงกันว่าขั้นตอนการทดลองจะเป็นอย่างไร ในที่สุดก็ตกลงกันว่าจะวัดปริมาณอากาศที่ใช้หายใจและชีพจรตอนร่างกายปกติและหลังจากพึ่งออกกำลังกายครับ เด็กๆใช้วิธีเป่าลมหายใจออกแทนที่น้ำในขวดแบบสัปดาห์ที่แล้ว การออกกำลังกายของเด็กๆก็มีหลายประเภทคือกระโดดตบ 30 วินาที วิ่งซอยเท้า 5 นาที และวิ่ง 100 เมตรครับ

ผลที่ได้หลากหลายเป็นช่วงกว้างมาก แต่ค่าเฉลี่ยคือเวลาออกกำลังกายเหนื่อยๆจะใช้อากาศมากกว่าตอนอยู่เฉยๆ 3 เท่า และหัวใจเต็นเร็วขึ้นเกือบ 2 เท่า ข้อมูลที่วัดมาอยู่ในลิงก์นี้ครับ

ผมให้เด็กๆพิจารณาความไม่แน่นอนต่างๆที่อาจทำให้คำตอบเราผิดพลาด และให้คิดว่าตรงไหนที่เราจะพยายามปรับปรุงได้บ้าง การบ้านสำหรับครั้งหน้าคือหาทางตอบคำถามนี้ด้วยการทดลองที่ต่างออกไปเพื่อดูว่าได้คำตอบประมาณเดียวกันไหมครับ

ภาพบรรยากาศกิจกรรมอยู่ที่อัลบั้มนี้ครับ

วิทย์ม.ต้น: แนะนำและทบทวน Python เทอมใหม่

วันนี้เราเรียน Python กันต่อครับ เด็กใหม่ที่ไม่เคยเรียนมาก่อนได้รู้วิธีไปโหลด Python มาจากเว็บ Anaconda และได้หัดเปิด Jupyter Notebook ที่ติดตั้งมาใน Anaconda แล้วใช้ Python เป็นเครื่องคิดเลข เด็กๆตื่นเต้นมากเมื่อใช้ math.gcd(a, b) เพื่อหาห.ร.ม.ของเลข a และ b

แนะนำลิงก์หัดใช้ Jupyter Notebook ครับ

เด็กๆหัดใช้ใช้ Python เป็นเครื่องคิดเลข

สำหรับเด็กที่เคยเรียนในปีที่แล้วผมสอนว่าของทุกอย่างมันจะยากครั้งแรกๆ ให้ฝึกหัดต่อเนื่องแล้วจะง่ายขึ้นเรื่อยๆและเราจะเก่งขึ้นเรื่อยๆ ความยากและอุปสรรคเป็นเรื่องปกติ ให้ฝึกวิชาไปเรื่อยๆ และได้แนะนำลิงก์ทบทวนดังนี้ครับ:

ลิงก์แนะนำภาษา Python เบื้องต้น เป็นภาษาไทย

เว็บ Real Python สำหรับหัวข้อน่าสนใจหลายๆอันที่ควรเข้าไปเรียนรู้ครับ

ผมลองเขียนโปรแกรมสดๆให้เด็กๆดูว่าขบวนการเขียนทีละนิดและตรวจสอบแต่ละขั้นเป็นอย่างไร เวลาจำอะไรไม่ได้ให้ค้นหาบนเว็บอย่างไร และให้ทบทวนการใช้ list และลองสร้างฟังก์ชั่นแปลงเลขฐานสิบเป็นเลขฐานสอง (ซึ่งจริงๆใน Python ก็คำนวณให้ได้อยู่แล้วแต่ทำเป็นแบบฝึกหัดเพื่อเรียนรู้ครับ)

การอ้างอิงบางส่วนของ list (เรียกว่า list slicing)

ใช้ join เพื่อต่อสมาชิกใน list มาเป็นก้อน string เดียวกัน
แปลงเลขฐานสิบเป็นฐานสองเป็นตัวอย่างการเขียนโปรแกรม จริงๆ Python มี bin(x) อยู่แล้ว