การจดั การเรยี นรโู้ ค้ดด้ิง (Coding)
ช้นั ประถมศกึ ษาตอนปลาย
ด้วยโปรแกรม Scratch
สถาบนั ส่งเสริมการสอนวทิ ยาศาสตรแ์ ละเทคโนโลยี
ตอนท่ี 3
ตัวชวี้ ดั
ป. 4 ขอ้ 2 ออกแบบและเขยี นโปรแกรมอยา่ งงา่ ย โดยใชซ้ อฟต์แวรห์ รือส่ือ และตรวจหาข้อผดิ พลาด
และแก้ไข
ป. 5 ข้อ 2 ออกแบบและเขยี นโปรแกรมท่มี ีการใช้เหตุผลเชงิ ตรรกะอยา่ งง่าย ตรวจหาข้อผิดพลาด
และแกไ้ ข
ป. 6 ข้อ 2 ออกแบบและเขียนโปรแกรมอย่างง่ายเพือ่ แก้ปญั หาในชวี ติ ประจาวนั ตรวจหาข้อผิดพลาด
ของโปรแกรมและแก้ไข
Scratch
• พัฒนาโดยนักวิจัยท่ีมหาวทิ ยาลยั MIT
• เขียนโปรแกรมโดยใช้บลอ็ กคาสงั่ (Block-based programming)
• มีตัวละครและเวทีที่ผู้ใชส้ ามารถออกแบบผลลพั ธ์ไดด้ ้วยตนเอง
• สามารถแลกเปลี่ยนความคิดเห็นในการใช้งานผา่ นชุมชนทีม่ ผี ู้ใช้ทั่วโลก
Scratch
https://scratch.mit.edu
กลุ่ม เร่มิ โปรแกรม
บล็อกคาสั่ง บลอ็ กคาสั่ง
พ้นื ท่สี าหรบั เขยี นโปรแกรม ปมุ่ หยดุ
พ้นื ท่แี สดงผล
/เวที
ข้อมูลเวที
ขอ้ มูลตวั ละคร
12 4
36
5
7
8
บทท่ี 3 เดินตามเสน้ เล่นตามสครปิ ต์
เบรกท่ี 1 การออกแบบและเขียนโปรแกรม
เบรกที่ 2 การเขียนโปรแกรมโดยใช้ตัวแปร
1. การออกแบบ
และเขียนโปรแกรม
จดุ ประสงค์
1. ออกแบบและเขยี นโปรแกรม
2. เขียนโปรแกรมแบบมีเงอื่ นไข
3. ตรวจสอบและแกไ้ ขข้อผิดพลาดของโปรแกรม
นาเขา้ สบู่ ทเรยี น
• นักเรียนเคยเขียนโปรแกรมทมี่ กี ารตรวจสอบเงื่อนไขหรอื ไม่ ถ้าเคยโปรแกรมท่เี ขยี นน้นั มกี าร
ตรวจสอบเง่อื นไขอะไรบา้ ง
โปรแกรม ผลลพั ธ์
นาเขา้ สบู่ ทเรยี น
• จากสครปิ ตด์ ้านล่าง ตวั ละครจะเปลี่ยนชดุ ตวั ละครเป็น drum-a เม่อื ใด
วเิ คราะหป์ ัญหา
พบหุ่นยนตเ์ ดนิ ตามเสน้ เพราะอะไรหนุ่ ยนต์
อยากเขียนโปรแกรมให้ จึงเดินตามเสน้ ได้
หนุ่ ยนตเ์ ดนิ ตามเสน้
สมมตุ ใิ หก้ อ้ ย
เป็นหนุ่ ยนต์
เสน้ เชอื ก
แทนเสน้ ทางเดนิ
ของหนุ่ ยนต์
วเิ คราะหป์ ัญหา
หมเนุดซนิ า้ตยรงไหปหมมุนุนซซา้ ยา้ ย เดนิ ตรงไป
ขขาาซซา้ ้ายยแแตตะะเเชชอื อื กก
ขาซา้ ย
ขาขวา
ภาพจาก www.freepik.com
ออกแบบขน้ั ตอนการทางานโดยเขยี นผงั งาน (Flowchart)
เร่ิมต้น
เดินตรงไป 2 หนว่ ย
ลอ้ ซ้ายแตะสีดา จรงิ
เท็จ หมุนล้อไปทางซ้าย 10 องศา
ลอ้ ขวาแตะสดี า จรงิ
เทจ็ หมนุ ล้อไปทางขวา 10 องศา
เทจ็ เดนิ ครบ 1 รอบ
จรงิ
จบ
ออกแบบแผนผงั การเดนิ และหุ่นยนต์
ลอ้ ซ้าย
ลอ้ ขวา
ดาวน์โหลดแผนผงั การเดนิ : oho.ipst.ac.th/im/6301
ดาวน์โหลดตวั ละครหุน่ ยนต์ : oho.ipst.ac.th/im/6302
เขยี นโปรแกรมใหต้ ัวละครเคล่อื นที่
กล่มุ บลอ็ ก ใช้สาหรบั ใหต้ ัวละครเคล่ือนท่ี
Motion ตามค่าที่กาหนด
ระบุค่าทตี่ อ้ งการ
ใช้สาหรับใหต้ ัวละครหมุนขวา
ตามค่าที่กาหนด
ระบุค่าทตี่ อ้ งการ
เขยี นโปรแกรมตรวจสอบการสมั ผสั สี
กลมุ่ บลอ็ ก กลมุ่ บลอ็ ก
Control Sensing
ใชต้ รวจสอบการสัมผัสระหว่างสี
วธิ กี ารดดู สี
1 คลิกสีท่ตี อ้ งการเปลย่ี น
2 คลิกหลอดดดู สี 3 เลอื กสที ีต่ อ้ งการ
จาก Flowchart สู่ Scratch
ทดสอบโปรแกรม ผลลพั ธ์
โปรแกรม
ข้อผิดพลาดทอ่ี าจเกดิ ข้นึ ของโปรแกรม
● หุน่ ยนตไ์ มส่ ามารถเดนิ ตามเส้น หรือเดนิ หลดุ เสน้
○ ตรวจสอบการสัมผัสสี
○ ความเรว็ ในการเดนิ
○ องศาในการหมุน
2. การเขียนโปรแกรม
โดยใชต้ วั แปร
จุดประสงค์
1. เขยี นโปรแกรมโดยใชต้ ัวแปร
2. ตรวจสอบและแก้ไขขอ้ ผดิ พลาดของโปรแกรม
นาเขา้ สบู่ ทเรยี น
• คาสง่ั มไี ว้สาหรบั ทาอะไร
และคาสัง่ นี้ใชค้ กู่ ับบลอ็ กคาสั่งใด
ใชใ้ นการรับขอ้ มูลและรอคาตอบจากผใู้ ช้ ซ่งึ ใชค่ กู่ บั บล็อกคาส่งั answer
• บลอ็ กคาส่ัง มีหน้าที่อะไร
เก็บคาตอบของผู้ใช้
นาเขา้ สบู่ ทเรยี น ผลลพั ธ์
โปรแกรม
เขยี นโปรแกรมนบั จานวนรอบ
เพม่ิ แท่นชาร์จนบั จานวนรอบ เพอื่ ใหห้ ุน่ ยนตพ์ กั ชาร์จแบตเตอรี
เมือ่ เดนิ ครบจานวนรอบที่เรากาหนด
ตัวละครแทน่ ชาร์จ
ตอ้ งเขียนสครปิ ตใ์ หต้ ัวละครแทน่ ชาร์จเพอ่ื นบั จานวนรอบอย่างไร ?????
เขยี นโปรแกรมนบั จานวนรอบ
ต้องเขยี นสครปิ ตใ์ ห้ตวั ละครแทน่ ชารจ์ เพอ่ื นับจานวนรอบอยา่ งไร ?????
การทางานของแท่นชาร์จ ส่ิงทต่ี อ้ งรู้
1. กาหนดตัวแปร count=0 • ตัวแปร (Variable) คืออะไร
2. ถา้ แทน่ ชารจ์ สัมผสั ตวั ละครหุ่นยนต์ • วิธีสร้างตัวแปรใน Scratch
• คาส่ังตรวจสอบการสัมผัส
- เปล่ยี นคา่ ตวั แปร count ทลี ะ 1
3. ทาซ้าขอ้ 2 เร่ือย ๆ ไม่สน้ิ สดุ
ตวั แปร (Variable)
ตัวแปร คือ ชื่อทก่ี าหนดขึน้ มาเพ่ือเกบ็ ขอ้ มลู บางอย่าง สามารถเปลย่ี นค่าข้อมลู น้ีเป็นคา่ อ่ืนได้ตาม
ตอ้ งการ
การนับจานวนสามารถใชบ้ ล็อกคาสั่งทอ่ี ยู่ในกลมุ่ บล็อก Variables (ตัวแปร) ดงั น้ี
• บลอ็ กคาสง่ั ใชส้ าหรบั กาหนดคา่ ให้กับตัวแปร
• บลอ็ กคาสั่ง ใชส้ าหรบั เปลี่ยนคา่ ตวั แปรให้เพม่ิ ขึน้ หรือลดลงจากเดมิ
ตามจานวนทก่ี าหนด
วธิ ีสรา้ งตวั แปร (Variable)
2 คลกิ ที่ป่มุ Make a Variable
กลุ่มบลอ็ ก 3 ต้งั ชื่อตัวแปรและคลกิ ป่มุ OK
Variables
set….to…. เป็นบล็อกคาสงั่ ทีใ่ ชส้ าหรับ
1 คลิกทก่ี ลมุ่ บล็อก Variables กาหนดค่าใหก้ ับตวั แปร
change….by….ใชเ้ ปล่ยี นค่าตวั แปรตาม
ค่าทกี่ าหนด
บล็อกคาสัง่ ตรวจสอบการสมั ผสั
กลุม่ บลอ็ ก ใชต้ รวจสอบการสมั ผสั
Sensing • ตวั ชเ้ี มาส์
• เส้นขอบ
• ตวั ละคร
สร้างตวั ละครแทน่ ชารจ์ และเขยี นสครปิ ต์
ตัวละครแทน่ ชารจ์ การทางาน สครปิ ตท์ ต่ี วั ละครแทน่ ชารจ์
1. กาหนดตัวแปร count=0
2. ถ้าแท่นชาร์จสัมผสั ตวั ละครหุ่นยนต์
- เปลี่ยนคา่ ตัวแปร count ทลี ะ 1
3. ทาซ้าข้อ 2 เร่ือย ๆ ไมส่ นิ้ สุด
ทดสอบโปรแกรม ผลลพั ธ์
สครปิ ตท์ ตี่ วั ละครแท่นชารจ์
แกไ้ ขขอ้ ผดิ พลาด
สคริปต์ที่ตัวละครแท่นชารจ์ แก้ไขโปรแกรมอยา่ งไรดี ????
ถ้าตัวละครแท่นชารจ์ สมั ผสั กับตวั ละครหุ่นยนต์ (Sprite1) ให้ตัวละครแท่นชาร์จหยดุ นับ
โปรแกรมจะเพ่มิ คา่ ตัวแปร count ทลี ะ 1 จนกว่าจะไมส่ ัมผัสกบั ตัวละครหุ่นยนต์
ระหวา่ งนน้ั ยังมกี ารสมั ผสั อยู่ ทาให้มีการนบั คา่ เพ่ิมข้นึ ไปเร่อื ย ๆ
จนกวา่ ตวั ละครตัวละครห่นุ ยนตจ์ ะเดนิ ผ่านไป โดยใช้บลอ็ กคาสง่ั wait until
บล็อกคาสัง่ wait until
กลุม่ บล็อก ใสเ่ ง่ือนไขที่ตอ้ งการ
Control
ใช้สาหรบั กาหนดใหโ้ ปรแกรมหยุดรอจนกระท่ังเงื่อนไข
เปน็ ไปตามท่ีกาหนด แลว้ จึงทางานต่อ
รอจนกระท่งั ไม่สัมผสั กับตัวละครหุ่นยนต์
ใชต้ รวจสอบการสัมผสั
• ตวั ชเ้ี มาส์
• เส้นขอบ
• ตวั ละคร
บลอ็ กคาสง่ั Not
ใช้เปล่ยี นเง่ือนไขที่นามาต่อด้านหลงั
ใหเ้ ป็นเงอ่ื นไขทต่ี รงขา้ มกนั
ไมส่ มั ผัสกับตัวละครหนุ่ ยนต์
กลุม่ บล็อก รอจนกระทั่งไม่สมั ผสั กับตัวละครหุ่นยนต์
Operator
แกไ้ ขสครปิ ตท์ ต่ี วั ละครแทน่ ชารจ์
กอ่ นแกไ้ ข สคริปตท์ ตี่ วั ละครแทน่ ชาร์จ หลงั แกไ้ ข
แทรกคาสง่ั ตรงน้ี
หลงั จากแทน่ ชาร์จเปลี่ยนคา่ count เป็น 1 แลว้
ก็ใหโ้ ปรแกรมหยดุ รอจนกระท่งั ไม่สมั ผสั กับตัวละครหนุ่ ยนต์
จงึ ไปวนรอบเพ่ือตรวจสอบอกี ครัง้
ทดสอบโปรแกรม ผลลพั ธ์
สครปิ ตท์ ตี่ วั ละครแท่นชารจ์
ปรับปรงุ โปรแกรมเพ่มิ
• กาหนดจานวนรอบในการเดินเพือ่ หยดุ ชารจ์ แบตเตอรี
สมมตุ ิกาหนดให้เดนิ 10 รอบ ครบแล้วหยุดการทางาน
• ตอ้ งเขยี นสคริปตใ์ นการตรวจสอบจานวนรอบอย่างไร ?????
กล่มุ บลอ็ ก
ถา้ จานวนรอบ (count) เทา่ กับ 10 ให้หยุดการทางาน Operator
บลอ็ กคาสงั่ เทา่ กับ (=) อย่ใู นกลมุ่ บล็อก
Operators ใช้เปรยี บเทียบคา่ 2 ค่า
ปรบั ปรงุ โปรแกรมเพ่มิ กล่มุ บลอ็ ก
Control
• กาหนดจานวนรอบในการเดนิ เพ่ือหยุดชารจ์ แบตเตอรี
สมมตุ กิ าหนดให้เดิน 10 รอบ ครบแลว้ หยุดการทางาน
• ต้องเขยี นสคริปตใ์ นการตรวจสอบจานวนรอบอยา่ งไร ?????
ถ้าจานวนรอบ (count) เท่ากับ 10 ให้หยดุ การทางาน
บลอ็ กคาาส่ัง stop all
อยใู่ นกลุ่มบลอ็ ก Control
ใช้หยดุ การทางานทั้งหมดของโปรแกรม
ปรบั ปรงุ โปรแกรมเพ่มิ
ถ้าจานวนรอบ (count) เท่ากบั 10 ให้หยุดการทางาน
นาสครปิ ต์ไปไวต้ รงไหน ????
สครปิ ต์ทง้ั หมดของโปรแกรมหนุ่ ยนตเ์ ดนิ ตามเสน้
สคริปต์ตวั ละครห่นุ ยนต์ (Sprite1) สครปิ ต์ตัวละครแท่นชาร์จ
ทดสอบโปรแกรม
ตัวอยา่ งกจิ กรรม (แบบฝึกหดั ทา้ ยบท)
ให้นักเรียนพิจารณาโปรแกรมต่อไปน้ี แล้วบอกตัวเลข/ขอ้ ความสดุ ท้ายที่ตวั ละครแมวพดู
1.
ตัวอยา่ งกจิ กรรม (แบบฝึกหดั ทา้ ยบท)
ให้นักเรียนพิจารณาโปรแกรมต่อไปน้ี แล้วบอกตัวเลข/ขอ้ ความสดุ ท้ายที่ตวั ละครแมวพดู
2.
ตัวอยา่ งกจิ กรรม (แบบฝึกหดั ทา้ ยบท)
ให้นักเรยี นพจิ ารณาโปรแกรมต่อไปนี้ แลว้ บอกตวั เลข/ขอ้ ความสุดท้ายทต่ี ัวละครแมวพดู
3.
ตัวอยา่ งกิจกรรม ดีบกั นักโปรแกรม (แบบฝึกทกั ษะ)
คาชี้แจง ให้นกั เรียนพิจารณากตกิ าหรือการทางานของโปรแกรมที่กาหนดให้ แล้วหาขอ้ ผดิ พลาดของ
โปรแกรมเพ่ือให้ได้ผลลัพธต์ ามท่ีตอ้ งการ
โปรแกรมนับเวลาถอยหลงั มีการทางานดงั น้ี
1) ใหต้ ัวละครนับถอยหลงั เร่มิ จาก 10 และลดลงทลี ะ 1 จนถงึ 0
2) ตัวละครพูดค่าตวั เลขท่นี บั ในขณะนัน้ ครง้ั ละ 1 วนิ าที
3) หลังจากพดู ว่า “0” ใหต้ ัวละครพดู ว่า “หมดเวลา” จากน้นั มีเสียง “meaw” และหยดุ
การทาางาน
ตวั อยา่ งกจิ กรรม ดบี ัก นักโปรแกรม (แบบฝึกทกั ษะ)
โปรแกรม ผลลพั ธ์ที่ได้ ผลลัพธ์ทต่ี อ้ งการ
แกไ้ ขโปรแกรมอยา่ งไรดี
ตวั อยา่ งกิจกรรม ดีบกั นักโปรแกรม (แบบฝึกทกั ษะ)
เฉลย
1. เปล่ยี นค่าเวลาท่ีบลอ็ กคาส่งั say count for 2 seconds
เปน็ say count for 1 seconds
2. สลบั คาสั่งระหวา่ ง change count by -1 กบั คาสั่ง
say count for 1 seconds
เพ่ือใหต้ ัวละครแสดงค่าตัวเลขกอ่ นแล้วจึงลดค่าลงทลี ะ 1
สามารถดาวนโ์ หลดไฟล์เฉลยไดท้ ี่ oho.ipst.ac.th/im/6351-1
ตัวอยา่ งกจิ กรรม ดีบกั นกั โปรแกรม (แบบฝึกทกั ษะ)
เฉลย
เปลี่ยนเง่ือนไขจาก count<0 เป็น count=0
และนาบลอ็ กคาสั่ง change count by -1 มาไว้ใตบ้ ล็อก if
สามารถดาวน์โหลดไฟลเ์ ฉลยไดท้ ี่ oho.ipst.ac.th/im/6351-2
สรุป
● การวางแผนและออกแบบงานก่อนลงมอื เขยี นโปรแกรมจะช่วยให้เกิดความเขา้ ใจใน
เปา้ หมายการทางานไดช้ ัดเจนข้นึ
● บล็อกคาสั่ง color… is touching…? อยใู่ นกลุ่มบล็อก Sensing ใชต้ รวจสอบการสมั ผัส
ระหว่างสี