Category Archives: มัธยม

วิทย์ม.ต้น: ฝึกไพธอน, จับเวลาลูกบอลตก

วันนี้เราคุยกันเรื่องพวกนี้ครับ:

1. รุ่นพี่ฝึกไพธอนกันต่อ เขียนโปรแกรมแก้ปัญหาเล็กๆหลายๆอัน มีเฉลยการบ้านจากสัปดาห์ที่แล้ว หน้าตาประมาณนี้ (โปรแกรมเบื้องต้น ไม่มี error handling เพื่อให้เข้าใจง่าย)

#สร้างโปรแกรมให้เราใส่วันที่เข้าไป แล้วคำนวณว่าวันนั้นห่างจากปัจจุบันเป็นเวลาเท่าไร

import datetime

year = int(input('ใส่ปี (ค.ศ.): '))
month = int(input('ใส่เดือน (1-12): '))
day = int(input('ใส่วัน (1-31): '))
date = datetime.date(year, month, day)
today = date.today()

time_difference = today - date
days_diff= time_difference.days

print('จำนวนวันระหว่าง ' + str(date) + ' ' + 'และ ' + str(today) +  ' คือ ' + str(days_diff) + ' วัน')

#ใช้ f-string (https://realpython.com/python-f-strings/ 
#หรือ https://careerkarma.com/blog/python-f-string/) เพื่อสามารถจัดรูปแบบได้ง่ายและตรงใจมากขึ้น

print(f"จำนวนวันระหว่าง {date} และ {today} คือ {days_diff:,} วัน")

แนะนำให้เด็กๆไปค้นคว้าและหัดใช้เรื่อง f-string ดังในบรรทัดสุดท้ายในโปรแกรมข้างบน หาอ่านได้ที่ https://careerkarma.com/blog/python-f-string/ หรือ https://realpython.com/python-f-strings/

เด็กๆรู้จักไปค้นคว้าเรื่องโมดูล datetime ผมแนะนำให้ไปดูตัวอย่างเพิ่มเติมที่ https://www.programiz.com/python-programming/datetime และ https://pymotw.com/3/datetime/

2. รุ่นพี่มีการบ้านไปเขียนโปรแกรมข้อนี้:

โปรแกรมเศษส่วน

เขียนโปรแกรมรับ เศษและส่วน ตัวที่ 1 และตัวที่ 2
หาค่า +, -, *, / ของเศษส่วน 1 และ 2

(hints: หาเรื่องเกี่ยวกับ fractions ใน Python)

3. ให้โจทย์รุ่นน้องดังนี้:

หาเวลาการตกถึงพื้นของวัตถุจากความสูงต่างๆ วาดกราฟความสูง vs. เวลา

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

สเปรดชีตอยู่ที่นี่ครับ

ไฟล์วิดีโอต่างๆที่ถ่ายวันนี้โหลดได้ที่นี่เผื่อใครต้องการใช้ Tracker จับตำแหน่งการตกนะครับ

ผมชี้ให้เด็กๆเห็นว่าเมื่อความสูงเพิ่มขึ้นสองเท่า เวลาไม่ได้เพิ่มเป็นสองเท่าตาม แต่จะเพิ่มแค่ประมาณ √2 เท่า (สแควรูทสอง เท่ากับประมาณ 1.4 เท่า) ถ้าจะให้เวลาเพิ่มเป็นสองเท่า ความสูงต้องเพิ่มเป็นสี่เท่า หรือสรุปได้ว่าเวลาแปรผันตรงกับสแควรูทของความสูงนั่นเอง

บรรยากาศกิจกรรมวันนี้ครับ:

กิจกรรมวิทย์ม.1 วันนี้ เด็กๆหาเวลาการตกถึงพื้นของวัตถุจากความสูงต่างๆ แล้ววาดกราฟความสูง vs. เวลา

Posted by Pongskorn Saipetch on Thursday, December 3, 2020


วิทย์ม.ต้น: ประดิษฐ์และสังเกตโฮโมโพลาร์มอเตอร์แบบต่างๆ

วันนี้ในกิจกรรมวิทย์ม.ต้น เราดูคลิป The Human Era ของ Kurzgesagt และผมเล่าเรื่องความหวังของผมที่เผ่าพันธุ์มนุษย์จะไม่ทำอะไรโง่ๆแล้วสูญพันธุ์:

อยากให้เด็กๆดูอีกสองคลิปนี้ด้วยครับ แต่ไม่ได้เปิดในชั้นเรียน:

จากนั้นเด็กๆก็ดัดลวดทองแดงทำโฮโมโพลาร์มอเตอร์แบบต่างๆ สังเกตว่าแบบไหนหมุนเร็ว หมุนช้า หมุนนาน แบบไหนอาจประดับบ้านได้ บรรยากาศและคลิปวิดีโอมีดังนี้ครับ:

วันนี้กิจกรรมวิทย์ม.ต้น เราดูคลิป The Human Era ของ Kurzgesagt…

Posted by Pongskorn Saipetch on Tuesday, December 1, 2020

วิดีโอจากกิจกรรมวิทย์ม.ต้นวันนี้ครับ (วันนี้กิจกรรมวิทย์ม.ต้น เราดูคลิป The Human Era ของ Kurzgesagt…

Posted by Pongskorn Saipetch on Tuesday, December 1, 2020

วิธีทำโฮโมโพลาร์มอเตอร์เส้นลวดทำอย่างนี้ครับ:

วิทย์ม.ต้น: ฝึกไพธอน, แก้ปัญหาด้วยตัวเองด้วยวิดีโอและ Tracker

วันนี้เราคุยกันเรื่องพวกนี้ครับ:

1. รุ่นพี่ฝึกไพธอนกันต่อ เขียนโปรแกรมแก้ปัญหาเล็กๆหลายๆอัน มีเฉลยการบ้านจากสัปดาห์ที่แล้ว หน้าตาประมาณนี้ (โปรแกรมเบื้องต้น ไม่มี error handling เพื่อให้เข้าใจง่าย)

#เขียนโปรแกรมรับจำนวนตัวเลขที่จะป้อน แล้วรับตัวเลขไปเรื่อยๆเท่ากับจำนวนครั้งนั้น  แล้วโปรแกรมจะคำนวณค่ามากที่สุด น้อยที่สุด (ใช้ for และ list)

count = int(input("ใส่จำนวนตัวเลขที่จะป้อน: "))
numbers = []
for i in range(count):
    x = float(input("ใ่ส่ตัวเลขตัวที่ " + str(i+1) + " จากทั้งหมด " + str(count) + " ตัว: "))
    numbers.append(x)

print("ตัวเลขที่มากที่สุดคือ " + str(max(numbers)))
print("ตัวเลขที่น้อยที่สุดคือ " + str(min(numbers)))
#เขียนโปรแกรมรับจำนวนตัวเลขที่จะป้อน แล้วรับตัวเลขไปเรื่อยๆเท่ากับจำนวนนั้น  แล้วโปรแกรมจะเรียงลำดับตัวเลขเหล่านั้นจากมากไปน้อย
#และน้อยไปมาก (ใช้ for และ list)

count = int(input("ใส่จำนวนตัวเลขที่จะป้อน: "))
numbers = []
for i in range(count):
    x = float(input("ใ่ส่ตัวเลขตัวที่ " + str(i+1) + " จากทั้งหมด " + str(count) + " ตัว: "))
    numbers.append(x)


print("ตัวเลขที่ใส่เข้ามาคือ " + str(numbers))
print("ตัวเลขเรียงจากน้อยไปมากคือ " + str(sorted(numbers)))
print("ตัวเลขเรียงจากมากไปน้อยคือ " + str(sorted(numbers, reverse=True) ))

2. รุ่นพี่มีการบ้านไปเขียนโปรแกรมสองข้อนี้:

–หาจำนวนวันที่เราเกิดมา โดยใช้ฟังก์ชั่นเกี่ยวกับวันเวลาของไพธอน
–สร้างโปรแกรมให้เราใส่วันที่เข้าไป แล้วคำนวณว่าวันนั้นห่างจากปัจจุบันเป็นเวลาเท่าไร

3. รุ่นน้องผมให้แก้ปัญหาสองข้อโดยผมไม่บอกว่าต้องทำอย่างไร ให้เด็กๆร่วมกันคิดและทำเอง ข้อแรกคือให้หาความเร็วว่ามอเตอร์โฮโมโพลาร์เหล่านี้หมุนเร็วแค่ไหน:

คลิปโฮโมโพลาร์มอเตอร์เส้นลวดที่เล่นกันครับ (เมื่อวานเด็กๆม.ต้นเรียนรู้เรื่อง Lorentz force (แรงลอเรนซ์),…

Posted by Pongskorn Saipetch on Wednesday, November 25, 2020

เด็กๆหาวิธีโหลดวิดีโอจากเฟซบุ๊ค เอาวิดีโอใส่โปรแกรม Tracker แล้วดูว่าการหมุนแต่ละรอบต้องใช้ภาพกี่เฟรม เมื่อเทียบกับจำนวนเฟรมต่อวินาทีของวิดีโอก็สามารถคำนวณความเร็วการหมุนได้ เด็กบางคนใช้ Tracker จับตำแหน่งวัตถุแล้วพล็อตกราฟด้วย

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

4. บรรยากาศเป็นดังนี้ครับ:

วันนี้ผมให้เด็กๆหาทางแก้ปัญหาเองโดยผมไม่บอกว่าต้องทำอะไรบ้าง…

Posted by Pongskorn Saipetch on Thursday, November 26, 2020