Category Archives: science

วิทย์ม.ต้น: รู้จัก Recursion,ใช้ Scratch คำนวณห.ร.ม., ตัวเลขเป็นจำนวนเฉพาะหรือไม่

วันนี้เด็กๆม.ต้นได้เรียนรู้เรื่อง Scratch  เพิ่มเติม ให้รู้จักการแปลงขบวนการคิดไปเป็นโปรแกรมครับ

เด็กม.3 ทำความรู้จักการหาห.ร.ม. (GCD, Greatest Common Divisor) โดยใช้วิธีของยูคลิด (Euclid’s algorithm)  ที่อาศัยว่าถ้าจำนวนเต็มบวก a, b มีตัวหารร่วมมาก d  ผลต่าง  a-b  หรือ b-a ก็หารด้วย d ลงตัวเช่นกัน เราจึงสามารถเปลี่ยนปัญหาการหา ห.ร.ม. ของ a และ b เป็นปัญหาที่เล็กลงคือหา ห.ร.ม. ของ a และ a-b ถ้า a มากกว่า b หรือหา ห.ร.ม. ของ a และ b-a ถ้า b มากกว่า a

จาก https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid's_algorithm
จาก https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid’s_algorithm

การลบหลายๆครั้งตามวิธีด้านบนก็เหมือนกันหารแล้วดูว่าเหลือเศษเท่าไร เราจึงเขียนได้อีกแบบโดยอาศัยวิธี a mod b ที่หาเศษจากการหาร a/b

จาก https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid's_algorithm
จาก https://en.wikipedia.org/wiki/Greatest_common_divisor#Using_Euclid’s_algorithm

ตัว a mod b นี้สามารถให้ Scratch คำนวณให้ได้ (เช่น 19/5 = 3 เศษ 4 ดังนั้น 19 mod 5 ก็คือ 4) ผมจึงให้เด็กๆคิดว่าจะบอกให้ Scratch คำนวณห.ร.ม. ให้เราอย่างไร

19 mod 5 = 4
19 mod 5 = 4

เด็กๆได้รู้จัก Custom Block ใน Scratch ซึ่งทำหน้าที่เหมือนฟังก์ชั่นในภาษาโปรแกรมอื่นๆ และได้เห็นว่า Custom Block เรียกตัวเองได้ ก็คือได้รู้จัก Recursive function นั่นเอง

หน้าตาการหาห.ร.ม.แบบเรียกตัวเอง (recursion) จะออกมามีหน้าตาประมาณนี้ครับ:

หาห.ร.ม.แบบเรียกตัวเอง (recursive function)
หาห.ร.ม.แบบเรียกตัวเอง (recursive function)

นอกจากเขียนการหาห.ร.ม.แบบเรียกตัวเองแล้ว เรายังสามารถเขียนแบบให้เป็น loop หรือการวนซ้ำๆจนพบคำตอบแบบนี้ด้วยครับ การวนซ้ำๆจะเรียกว่าแบบ iterative ครับ:

การหาห.ร.ม.แบบวนซ้ำๆ (iterative)
การหาห.ร.ม.แบบวนซ้ำๆ (iterative)

สำหรับเด็กม.1-2 ผมแนะนำว่า  Operators ต่างๆของ Scratch ทำอะไรบ้าง หน้าตา Operators ก็เช่นพวกนี้ครับ:

ตัวอย่าง Operator ใน Scratch
ตัวอย่าง Operator ใน Scratch

จากนั้นผมให้เด็กๆสอนให้  Scratch บอกว่าตัวเลขจำนวนเต็มบวกที่เราป้อนเข้าไปเป็นจำนวนเฉพาะหรือไม่ ให้เด็กๆสังเกตว่าถ้าได้ตัวเลขมาหนึ่งตัว เราก็ลองไล่หาตัวเลขที่น้อยกว่ามันไปลองหารดูว่าลงตัวหรือไม่ เด็กๆได้สังเกตว่าเราควรตรวจดูก่อนว่าเลขคือ  1 หรือ 2 หรือไม่ ถ้าเป็น 1 ก็ไม่เป็นจำนวนเฉพาะ ถ้าเป็น 2 ก็เป็นจำนวนเฉพาะ สำหรับเลข N ที่มากกว่า 2 เราก็เอา 2, 3, 4, …, ไม่เกิน N ไปลองหาร N ดูว่ามีตัวไหนหารลงตัวไหม ถ้ามีเราก็บอกได้ว่า N ไม่ใช่จำนวนเฉพาะ ถ้าไม่มีตัวไหนหารลงตัวเลยเราก็รู้ว่า N  เป็นจำนวนเฉพาะ  นอกจากนี้เด็กๆยังได้เห็นว่าจริงๆเราหาตัวหารที่ไม่มากกว่ารูทที่ 2 ของ N ก็พอ เพราะถ้ามีตัวหารที่มากกว่ารูทที่ 2 ของ N เราก็จะต้องเจอตัวหารอีกตัวที่น้อยกว่ารูทที่ 2 ของ N ไปก่อนแล้วแน่นอน

เด็กๆไปนั่งหัดเขียนกันประมาณ 1 ชั่วโมงครับ ก็ได้โปรแกรมกันทุกคน ใครทำได้ก่อนก็ไปให้คำปรึกษาคนที่ยังติดอยู่ ผมบอกว่าไม่ให้บอกกันแต่ให้ถามๆและชี้ๆส่วนที่อาจเป็นบั๊กจนทุกคนเข้าใจและทำได้เองกันหมด หลายๆคนตื่นเต้นมากที่คอมพิวเตอร์ตอบคำถามว่าเลขไหนเป็นจำนวนเฉพาะอย่างรวดเร็วเพราะวิธีที่เด็กๆทำด้วยมือมันทำได้ช้าและใช้กับเลขน้อยๆเท่านั้น เด็กๆได้ทดลองตรวจสอบเลขใหญ่ๆเช่น 15,485,863 และ 32,452,843  (เลขจำนวนเฉพาะตัวที่ล้านและสองล้านตามลำดับ) และพบว่ามันเป็นจำนวนเฉพาะ

หน้าตาโปรแกรมจะเป็นทำนองนี้ครับ:

 

ตัวเลขเป็นจำนวนเฉพาะไหม?
ตัวเลขเป็นจำนวนเฉพาะไหม?

สร้างของเล่นจากแรงลอยตัว (Cartesian Diver) กิจกรรมแรงลอยตัวอนุบาล

อังคารที่ผ่านมาผมไปทำกิจกรรมวิทย์กับเด็กๆมาครับ เด็กประถมได้หัดเป็นนักวิทยาศาสตร์โดยพยายามอธิบายมายากลและหัดประดิษฐ์ของเล่นนักดำน้ำ (Cartesian Diver) เด็กอนุบาลสามได้หัดสังเกตการลอยตัวของลูกปิงปอง ลูกแก้ว ขวดโหลเปิดและปิด และเล่นเกมใส่ลูกแก้วบนแพที่ทำจากฟอยล์อลูมิเนียมว่าต้องใช้กี่ลูกถึงจะทำให้แพจม

(อัลบั้มบรรยากาศกิจกรรมต่างๆอยู่ที่นี่นะครับ กิจกรรมประถมคราวที่แล้วเรื่อง “แรงลอยตัว (ต่อ) ท่อกระดาษจอมพลัง” ครับ รวมทุกกิจกรรมอยู่ที่นี่นะครับ)

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

อีกอันคือหนีออกจากรถที่ถูกบดทับ:

กิจกรรมนี้ฝีกเด็กๆให้คิดแบบวิทยาศาสตร์ครับ มีการสังเกต การตั้งสมมุติฐานเพื่ออธิบายสิ่งที่สังเกตมา การตรวจสอบสมมุติฐานกับข้อมูลที่สังเกตมา การตั้งสมมุติฐานใหม่เมื่อสมมุติฐานเดิมขัดกับข้อมูล นอกจากนี้เราพยายามให้เด็กๆมีความกล้าคิดและออกความเห็นครับ

หลังจากเด็กๆได้เรียนรู้เกี่ยวกับเรื่องแรงลอยตัวในสัปดาห์ที่ผ่านๆมา วันนี้เราหัดประดิษฐ์ของเล่นจากแรงลอยตัวที่เรียกว่า  “นักดำน้ำ” หรือ Cartesian Diver กันครับ 

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

วิธีทำเป็นดังนี้ครับ:

ผมเคยทำแบบอื่นๆดังในคลิปเหล่านี้ด้วยครับ:

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

จากนั้นก็เอาฟอยล์อลูมิเนียมแผ่เป็นแผ่นบนน้ำแล้วให้เด็กเดาว่าถ้าเอาลูกแก้ววางลงไปจะจมไหม เด็กๆตื่นเต้นที่วางลูกแก้วลงไปได้ 20-30 ลูกก่อนที่แผ่นฟอยล์จะเอียงแล้วน้ำเข้าทำให้จมครับ

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

วิทย์ม.ต้น: Cosmos Ep. 11 เรื่องเกี่ยวกับเผ่าพันธุ์เรา

วันนี้เด็กๆม.ต้นที่กลุ่มบ้านเรียนปฐมธรรมได้ดูรายการ Cosmos: A Spacetime Odyssey ตอนที่ 11 กันครับ วันนี้ตอน The Immortals หรือสิ่งอมตะ กล่าวถึงการส่งผ่านข้อมูลทางการเขียน ข้อมูลในพันธุกรรมของเรา ไอเดียเกี่ยวกับการกำเนิดสิ่งมีชีวิต ไอเดียเกี่ยวกับการแพร่กระจายของสิ่งมีชีวิตระหว่างดาวเคราะห์ และระหว่างระบบสุริยะ และความหวังที่ว่ามนุษยชาติจะสามารถใช้ปัญญาแก้ปัญหาต่างๆในอนาคตและแพร่กระจายไปตามดวงดาวต่างๆครับ

ประวัติการเริ่มต้นภาษาเขียนของมนุษย์ โดยชาวซูเมอร์ (Sumerian) มีซับอังกฤษนะครับ การเริ่มเขียนมีขึ้นมาเพื่อใช้บันทึกบัญชีต่างๆและค่อยๆพัฒนาจนสามารถใช้เขียนเรื่องราว บทกวี และไอเดียต่างๆครับ ถ้าเด็กๆอยากรู้เรื่องกวีคนแรกที่เรารู้ชื่อลองอ่านเพิ่มเติมได้ที่ Enheduanna นะครับ  

ดูเรื่อง มหากาพย์กิลกาเมช (Epic of Gilgamesh) ซึ่งเป็นงานวรรณกรรมเก่าแก่ที่สุดที่เหลืออยู่เพราะเขียนไว้บนแผ่นดินเผาอายุกว่าสี่พันปีครับ เรื่องราวต่างๆในมหากาพย์นี้ถูกเอาไปเขียนไปเล่าอีกในอารยธรรมสมัยต่อๆมาเช่นเรื่องน้ำท่วมโลกและเรือโนอาห์ เรื่องฮีโร่เฮอร์คิวลีสผจญภัย ฯลฯ

เรื่องเกี่ยวกับ DNA ที่เหมือนหนังสือที่เขียนด้วยตัวหนังสือที่เป็นสารเคมี 4 แบบ (A, C, G, T) ตัวหนังสือสามตัวเป็นคำ แต่ละคำจะถูก RNA อ่านแล้วหากรดอมิโนมาต่อๆกันจนเป็นโปรตีน โปรตีนเหมือนหุ่นยนต์หรือเครื่องจักรเล็กๆที่ทำงานนู่นนี่ในเซลล์ครับ

ความหวังว่าเราจะสามารถเปลี่ยนแปลง DNA เพื่อปรับปรุงชีวิตมนุษย์ครับ:

ไอเดียว่าชีวิตเกิดขึ้นมาได้อย่างไรครับ:

ไอเดียที่ว่าชีวิตสามารถกระจายระหว่างดาวเคราะห์โดยไปกับอุกกาบาตหรือดาวหาง:

TED talk ที่ชี้ให้เห็นว่าเผ่าพันธุ์เราสามารถใช้ปัญญาแก้ปัญหาเพื่อจะไม่ต้องสูญพันธุ์ครับ อันนี้เป็น TED talk ที่ผมชอบที่สุดอันหนึ่ง อยากให้ทุกคนได้ดู:

 

หนังสือล่าสุดของ David Deutsch ที่ผมชอบมากๆคือ The Beginning of Infinity ที่มองว่าวิธีคิดแบบวิทยาศาสตร์สามารถทำให้เผ่าพันธุ์มนุษย์พัฒนาต่อไปได้ไม่สิ้นสุด แนะนำให้หามาอ่านด้วยครับ