การเขียนโปรแกรม scratch ม. 1

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


              ในชีวิตประจำวันอาจพบกับการทำงานหรือปัญหาที่ต้องมีการทำงานด้วยขั้นตอนเดิมซ้ำกัน หลายครั้ง เช่นเดียวกับการเขียนโปรแกรมใน Scratch ก็มีคำสั่ง repeat ที่ช่วยกำหนดการทำงานซ้ำ เพื่อช่วยให้เขียนโปรแกรมกระชับและมีประสิทธิภาพมากขึ้น 


2.1 รู้จักโปรแกรม Scratch




หลายคนคงเคยได้ยินเทคโนโลยีรถยนต์ไร้คนขับ (driverless car technology) นักเรียนคิดว่าเหตุใดรถยนต์จึงสามารถเคลื่อนที่ไปถึงปลายทางได้อย่างถูกต้องโดยไม่มีคนขับ การเขียนโปรแกรมมรส่วนในการควบคุมการทำงานของรถยนต์อย่างไร

ทบทวนความรู้ก่อนเรียน

เขียนเครื่องหมาย / หน้าข้อความที่ถูกต้อง
_____การวิเคราะห์และกำหนดรายละเอียดของปัฐหาต้องดำเนินการก่อนวางแผนการแก้ปัญหา
_____การออกแบบวิธีการแก้ปัญหาโดยใช้รหัสลำลองหรือผังงาน ทำให้นำไปปฏิบัติได้ง่าย
_____การดำเนินการแก้ปัญหาเป็นการนำวิธีแก้ปัญหาที่ออกแบบไว้มาดำเนินการแก้ปัญหาหรือพัฒนาโปรแกรมเพื่อแก้ปัญหา

ปัจจุบันมีภาษาโปรแกรมจำนวนมาก Scratch เป็นภาษาโปรแกรมที่ง่ายต่อต่อการเรียนรู้การเขียนโปรแกรมมีโครงสร้างคำสั่งที่ไม่ซับซ้อน มีบล็อกคำสั่งให้เลือกใช้งานได้สะดวก และสามารถนำไปใช้สร้างงานที่น่าสนใจได้

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

โปรแกรม Scratch เป็นโปรแกรมโอเพนซอร์ส (open source software) พัฒนาโดยนักวิจัยที่ห้องปฏิบัติการสื่อ (MIT Media Lab) สถาบันเทคโนโลยีแมสซาซูเซตส์ ประเทศสหรัฐอเมริกา Scratch ออกแบบมาให้ใช้กับเด็กอายุ 8-16 ปี และเป็นทางเลือกที่ดีในการเขียนโปรแกรมสำหรับผู้เริ่มต้น ปัจจุบัน Scratch พัฒนาถึงเวอร์ชัน 2.0 ผู้ใช้สามารถเขียนโปรแกรมออนไลน์ หรือดาวน์โปลดโปรแกรมมาใช้ที่เครื่องคอมพิวเตอร์แบบออฟไลน์ นอกจากนี้ภายในเว็บไซต์ยังมีข้อมูลความรู้เกี่ยวกับคำสั่งและตัวอย่างของโปรแกรม อีกทั้งยังมีแหล่งชุมชนออนไลน์ให้ได้ศึกษาและเรียนรู้การทำงานร่วมกัน โดยสามารถเผยแพร่ผลงานของตน และสามารถนำโปรแกรมของผู้อื่นที่อัปโหลดไว้มาปรับแก้ได้อีกด้วย

         นักเรียนจะเขียนโปรแกรมโดยใช้ Scratch เพื่อสร้างผลงานอะไรได้บ้าง โดยศึกษารายละเอียดและทดสอบการใช้งานจากตัวอย่างโปรแกรม ได้ที่ //scratch.mit.edu/

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

รูปหน้าต่างโปรแกรม Scratch

เริ่มต้นกับโปรแกรม Scratch

ในบทนี้จะแนะนำการใช้งานโปรแกรม Scratch แบบออฟไลน์ที่ต้องติดตั้งไว้ที่เครื่องคอมพิวเตอร์หากนักเรียนยังไม่มีโปรแกรม สามารถทำได้โดยเข้าไปที่เว็บไซต์ //scratch.mit.edu/ แล้วเลือก Offline Editor ซึ่งจะอยู่ในส่วน Support ด้านล่างของเว็บเพจ ดังรูป

รูป Offline Editor สำหรับ Scratch 2.0

หลังจากนั้นจะปรากฎหน้าต่างให้ดาวน์โหลดดังรูป

รูปหน้าต่างดาวน์โหลด Scratch 2.0

ขั้นตอนการติดตั้งโปรแกรมให้ปฏิบัติตามขั้นตอนที่ 1 และขั้นตอนที่ 2 ตามลำดับ

  ขั้นตอนที่ 1 ติดตั้งโปรแกรม Adobe AIR โดยคลิก ดาวน์โหลด เลือกให้เหมาะสมกับระบบปฏิบัติการที่ใช้ ซึ่งจัได้ไฟล์ AdobeAIRInstaller.exe หลังจากนั้นให้ดับเบิลคลิกไฟล์เพื่อติดตั้งโปรแกรม

  ขั้นตอนที่ 2 ติดตั้งโปรแกรม Scratch โดยคลิก ดาวน์โหลด เลือกให้เหมาะสมกับระบบปฏิบัติการที่ใช้ ซึ่งจะได้ไฟล์ Scratch-456.0.4.exe หลังจากนั้นให้ดับเบิลคลิกไฟล์เพื่อติดตั้งโปรแกรม (ชื่อไฟล์โปรแกรม Scratch อาจแตกต่างกัน เนื่องจาก Scratch จะถูกปรับปรุงให้ทันสมัยอยู่เสมอ)

  สำหรับส่วนที่ 3 Support Materials เป็นส่วนของเอกสารให้ความรู้ และตัวอย่างโปรแกรม

         นักเรียนสามารถเขียนโปรแกรม Scratch แบบออนไลน์ได้โดยไม่ต้องติดตั้งโปรแกรม Scratch ที่เครื่องคอมพิวเตอร์ที่ใช้เชื่อมต่ออินเตอร์เน็ตโดยการเขียนโปรแกรมให้เข้าไปที่ //scratch.mit.edu/ แล้วคลิกเลือก Create ที่แถบบนหน้าต่างโปรแกรม

สำรวจส่วนประกอบหลักของหน้าต่างโปรแกรม Scratch

หน้าต่างโปรแกรม Scratch ที่ปรากฎจะมีลักษณะคล้ายโปรแกรมอื่นที่มีเมนูให้ใช้งาน และพื้นที่ในการทำงาน ซึ่งมีส่วนประกอบหลักในการทำงาน 3 ส่วน คือ เวที ตัวละคร และสคริปต์ ดังรูป

1. เวที (stage) เป็นพื้นที่สำหรับแสดงผลลัพธ์การทำงาน เมื่อต้องการรันโปรแกรม ให้คลิกปุ่มธงเขียว    และถ้าต้องการยกเลิกให้คลิกปุ่มหยุด

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

  ที่มุมล่างซ้ายของหน้าต่างโปรแกรม

         หากต้องการใส่ภาพพื้นหลังที่โปรแกรม Scratch จัดเตรียมไว้ให้นักเรียนจะมีวิธีการอย่างไร

2. ตัวละคร (sprite) ในโปรแกรม Scratch สามารถกำหนดให้มีตัวละครได้หลายตัวละคร แต่ละตัวจะมีข้อมูลส่วนตัวที่แตกต่างกัน เช่น ชื่อ ชุดตัวละคร ทิศทางการเคลื่อนที่ พิกัดของตำแหน่งโดยชุดตัสละครจะหมายถึง เครื่องแต่งกายและท่าทาง

การเปลี่ยนชื่อตัวละคร
         การเปลี่ยนชื่อตัวละครทำได้โดย คลิก ที่มุมบนซ้ายของตัวละครแล้วพิมพ์ชื่อใหม่แทนชื่อเดิม

3. สคริปต์ (script) เป็นพื้นที่ที่ใช้สำหรับเขียนโปรแกรม ดังรูป ซึ่งประกอบด้วย

3.1 บล็อกคำสั่งแต่ละบล็อกถูกจัดอยู่ภายในกลุ่มที่ทำหน้าที่ที่เกี่ยวข้องกัน โดยมีทั้งหมด 10 กลุ่ม และถ้าคลิกที่กลุ่มบล็อกใด ก็จะปรากฎบล็อกคำสั่งภายในกลุ่มนั้น

         นักเรียนคิดว่ากลุ่มบล็อกแต่ละกลุ่มประกอบด้วยบล็อกคำสั่งที่ทำงานแตกต่างกันอย่างไร

3.2 พื้นที่เขียนโปรแกรม ผู้ใช้สามารถลากบล็อกคำสั่งที่ต้องการมาวางเรียงต่อกันในพื้นที่เขียนโปรแกรม

รูปส่วนสคริปต์

สร้างโปรแกรม Scratch ให้ตัวละครแมวเดิน มีขั้นตอนดังนี้
1) เปิดโปรแกรม Scratch จะปรากฎตัวละคร Sprite1 ที่เป็นรูปแมว
2) คลิกแท็บ Costumes จะปรากฎชุดตัวละคร 2 ชุด คือ costume1 และ costume2 ให้สังเกตว่าชุดตัวละครมีลักษณะท่าทางการก้าวเดินของแมวที่แตกต่างกัน ดังรูป

3) คลิกแท็บ Script แล้วเขียนโปรแกรม โดยลากบล็อกคำสั่งวางในพื้นที่เขียนโปรแกรมดังนี้

4) รันโปรแกรม โดยคลิกปุ่ม  สังเกตผลลัพธ์ที่ได้จะเห็นว่าแมวมีลักษณะคล้ายการเดิน 1 ก้าวซึ่งเป็นผลมาจากคำสั่ง move 10 steps หมายถึง สั่งให้ตัวละครเคลื่อนที่ไป 10 หน่วย (การเคลื่อนที่ 1 หน่วย จะเท่ากับการขยับไป 1 จุดบนหน้าจอ) และคำสั่ง next costume หมายถึงเปลี่ยนเป็นชุดตัวละครในลำดับถัดไป

5) ปรับสคริปต์ในข้อ 3) โดยเพิ่มบล็อกคำสั่ง forever วางให้ครอบคำสั่ง move 10 steps และ next costume

     >>>>>>>      

6) คลิกปุ่มธงเขียว แล้วสังเกตผลลัพธ์ที่ได้จะเห็นว่าแมวเดินชนขอบเวทีซ้ำอย่างไม่สิ้นสุด

         ถ้าคลิกที่ตัวละคร แล้วปรากฎข้อมูลดังรูป

หากเขียนสคริปต์ให้ตัวละครเคลื่อนที่ เมื่อรันโปรแกรมแล้ว แมวจะเคลื่อนที่ไปทิศทางใด เพราะเหตุใด

จากตัวอย่างที่ 1 ให้นักเรียนทดลองโปรแกรมแล้วตอบคำถามต่อไปน

1. ทำไมจึงมีการเริ่มต้นเขียนโปรแกรมด้วยบล็อก 

  และ ถ้าไม่มีบล็อกคำสั่งนี้โปรแกรมจะทำงานได้หรือไม่
2. บล็อกคำสั่ง  forever ทำหน้าที่อะไร
3. ถ้าชุดตัวละครเริ่มต้นด้วย costume1 เมื่อพบบล็อกคำสั่ง next costume ชุดตัวละครจะเปลี่ยนเป็นชุดใด และเมื่อวนรอบมาพบคำสั่ง next costume อีกครั้ง ชุดตัวละครจะเปลี่ยนเป็นชุดใด
4. ถ้าต้องการให้ตัวละครกลับมาอยู่ที่ตำแหน่งกลางเวทีทุกครั้งเมื่อมีการคลิกธงเขียว จะใช้คำสั่งใดในกลุ่มบล็อก Motion และวางที่ตำแหน่งใด
5. หากนำบล็อกคำสั่ง  
วางไว้หลังบล็อกคำสั่ง next costume  บรรทัดที่ 4 แล้วคลิกธงเขียว สังเกตผลลัพธ์ที่ได้จะเป็นอย่างไร
6. หากนำบล็อกคำสั่ง  
ว่างๆต่อท้ายคำสั่งในข้อ 5 แล้วทดลองเลือกคำสั่ง don’t rotate, left -right  และ all around แล้วคลิกธงเขียว ผลลัพธ์ที่ได้แตกต่างกันหรือไม่ อย่างไร

Sing a Song

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

         2. บล็อกคำสั่งที่ปรากฎในโปรแกรมทำหน้าที่อะไรบ้าง
         3. ตัวเลขใน 

คือโน้ตอะไรและทราบได้อย่างไร
         4. นักเรียนช่วยกันเขียนโปรแกรมเพลงที่ชอบโดยแบ่งกันเขียนคนละหนึ่งท่อน แล้วนำมาประกอบกันเป็นเพลง
         5. นำเสนอเพลงให้เพื่อกลุ่มอื่นฟัง

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

2.1 บล็อกคำสั่ง forever  

   เป็นคำสั่งที่กำหนดการทำงานแบบวนซ้ำไม่รู้จบ ตัวอย่างเช่น

2.2 บล็อกคำสั่ง repeat   

  เป็นคำสั่งที่กำหนดการทำงานแบบวนซ้พตามจำนวนรอบที่กำหนด ตัวอย่างเช่น

แนวคิดในการวาดรูปสี่เหลี่ยม คือ ต้องวาดเส้นตรงแล้วต้องเปลี่ยนทิศทางการวาดเป็นมุม 90 องศา ซึ่งถ้าสังเกตจะเห็นว่า ส่วนนี้มีการทำซ้ำ 4 รอบ แต่ก่อนการสั่งวาดรูปจะต้องมีการล้างหน้าจอภาพให้ว่างก่อนแล้วจึงวางปากกา และกำหนดจุดเริ่มต้นของการวาด จากแนวคิดเขียนรหัสลำลองได้ดังนี้
1. ล้างจอภาพ
2. วางปากกา
3. กำหนดตำแหน่งเริ่มวาดที่พิกัด (0,0)
4. ทำงานต่อไปนี้ 4 รอบ
4.1 ลากเส้นตรง 100 หน่วย
4.2 หมุนตามเข็มนาฬิกา 90 องศา

โปรแกรมมีดังนี้

ผลลัพธ์ที่ได้คือ

         นักเรียนคิดว่าคำสั่งต่อไปนี้ทำงานเหมือนในตัวอย่างที่ 2 หรือไม่ ข้อดีและข้อเสียแต่ละแบบเป็นอย่างไร

จากตัวอย่างที่ 2 อธิบายได้ว่า
1. บรรทัดที่ 1 กำหนดจุดเริ่มต้น เมื่อผู้ใช้คลิกธงเขียว
2. บรรทัดที่ 2 ล้างหน้าจอภาพ
3. บรรทัดที่ 3 วางปากกา
4. บรรทัดที่ 4 กำหนดตำแหน่งเริ่มต้นให้ตัวละคร อยู่ที่กลางจอภาพซึ่งคือตำแหน่ง 0,0
5. กำหนดให้ทำคำสั่งภายในบล็อกคำสั่ง repeat ซ้ำจำนวน 4 รอบ คือ คำสั่งบรรทัดที่ 6 เคลื่อนที่ไปตามทิศทางของตัวละคร เป็นจำนวน 100 หน่วย และบรรทัดที่ 7 หมุนตามเข็มนาฬิกา 90 องศาซึ่งจะทำให้ได้รูปสี่เหลี่ยม 1 รูป

ให้นักเรียนเติมตัวเลขในโปรแกรมให้สมบูรณ์ แล้วเขียนโปรแกรมเพื่อวาดภาพต่อไปนี้

         นักเรียนสนุกกับการเขียนโปรแกรมกับ Anna และ Elsa มาแล้ว อยากทราบหรือไม่ว่า ภารกิจที่  ได้ผลลัพธ์เป็นรูปใด ลองหาคำตอบด้วยตัวเองที่เว็บไซต์  //studio.code.org/s/frozen/stage/1/puzzle/5

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

ทำงานต่อไปนี้ 2 รอบ
ทำงานต่อไปนี้จำนวน 4 รอบ
ลากเส้นตรง 100 หน่วย
หมุนตามเข็มนาฬิกา 90 องศา
หมุนตามเข็มนาฬิกา 15 องศา

โปรแกรมมีดังนี้

ผลลัพธ์ที่ได้คือ


จากตัวอย่างที่ 3 อธิบายได้ดังนี้

1. บรรทัดที่ 5 กำหนดให้มีการทำงานในบรรทัดที่ 6-9 ซ้ำจำนวน 2 รอบ
2. บรรทัดที่ 6 กำหนดให้การทำงานในบรรทัดที่ 7 และ 8 ซ้ำจำนวน 4 รอบ ซึ่งจะได้รูปสี่เหลี่ยม 1รูป
3. บรรทัดที่ 9 สั่งให้ตัวละครหมุนตามเข็มนาฬิกา 15 องศา แล้วจะวนกลับไปทำงานในบรรทัดที่ 6-9 อีก 1 รอบ
4. เมื่อจบการทำงานจึงได้สี่เหลี่ยม 2 รูป

ตัวแปร (variable) เป็นชื่อที่กำหนดขึ้นเพื่อใช้เก็บข้อมูลและเรียกใช้ในการทำงานต่าง ใน Scratch สามารถกำหนดการใช้งานตัวแปรได้เช่นเดียวกับภาษาโปรแกรมอื่น โดยการสร้างตัวแปรทำได้โดยคลิกบล็อกคำสั่ง

ที่อยู่ในกลุ่มบล็อก Data ซึ่งจะปรากฏหน้าต่าง New Variable ดังรูปการตั้งชื่อตัวแปรควรใช้ชื่อที่มีความหมายสอดคล้องกับข้อมูล เช่น name ใช้สำหรับเก็บชื่อ score ใช้สำหรับเก็บคะแนน และ price ใช้สำหรับเก็บราคา และการกำหนดขอบเขตการใช้งานตัวแปร สามารถกำหนดได้ 2 แบบ ดังนี้

- For all sprites กำหนดให้ทุกตัวละครสามารถใช้งานตัวแปรนี้ได้

- For this sprite only กำหนดให้ใช้งานตัวแปรนี้ได้เฉพาะกับตัวละครที่สร้างตัวแปรนี้เท่านั้น

รูปหน้าต่าง New Variable

ถ้าตัวแปรเสร็จแล้วจะมีบล็อกคำสั่งปรากฏขึ้นมาอีก 5 บล็อก ในที่นี้จะยกตัวอย่างเมื่อมีการสร้างตัวแปร count ดังตาราง บล็อกคำสั่งที่เกี่ยวกับตัวแปร count  ดังตาราง 1

ตาราง 1 บล็อกคำสั่งที่เกี่ยวกับตัวแปร

บล็อกคำอธิบาย

  แสดงค่าตัวแปรบนเวที
  ไม่แสดงค่าตัวแปรบนเวที

  กำหนดค่าเริ่มให้กับตัวแปร count เป็น -5

    กำหนดค่าเริ่มให้กับตัวแปร count เป็น 8

เปลี่ยนค่าตัวแปร count เพิ่มขึ้นครั้งละ 1

เปลี่ยนค่าตัวแปร count ลดลงครั้งละ 3

แสดงตัวแปร count และค่าของตัวแปรบนเวทีไม่แสดงตัวแปร count และไม่แสดงค่าของตัวแปรบนเวที

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

ซึ่งค่าข้อมูลที่รับจากผู้ใช้จะถูกเก็บไว้ในตัวแปร
   เสมอ

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

นักเรียนลองพิจารณาตัวอย่างต่อไปนี้


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

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

รูปข้อมูล

จากโปรแกรมแชรืกับฉัน 2 ในตัวอย่าง 4 ให้นักเรียนปฏิบัติดังนี้

1.ทดลองคลิกขวาที่เครื่องหมาย / ในบรรทัดที่ 6 แล้วเลือกเครื่องหมาย +,- และ * ตามลำดับแล้วรันโปรแกรม ทดลองเติมข้อมุล ค่าอาหารทั้งหมด และจำนวนผู้รับประทานอาหาร สังเกตผลลัพธ์ที่ได้จากการเปลี่ยนเครื่องหมายดังกล่าวว่าเป็นอย่างไร เพราะเหตุใด

1
2
3
4
5
6
7

2.ให้นำบล็อกในบรรทัดที่ 3 ออกแล้วคลิก 

 หลังจากนั้นเติมข้อมูลอาหารทั้งหมดและจำนวนผู้รับประทานอาหาร เป็น 2,000 และ 10 ตามลำดับ ผลลัพธ์ที่แสดงเป็นเท่าใด นักเรียนคิดว่าเพราะเหตุใดจึงเป็นเช่นนั้น


1
2
3
4
5
6
7

จากตัวอย่างที่ 5 สามารถอธิบายได้ดังตารางต่อไปนี้

บรรทัดที่ 2 นำค่า 2 ไปเก็บไว้ในตัวแปร x เพราะฉะนั้นตัวแปร x จะเก็บค่า 2บรรทัดที่ 3 นำค่า 10 ไปเก็บไว้ในตัวแปร y เพราะฉะนั้นตัวแปร y จะเก็บค่า 10บรรทัดที่ 4 นำค่า 20 ไปเก็บไว้ในตัวแปร z เพราะฉะนั้นตัวแปร z จะเก็บค่า 20บรรทัดที่ 5 นำค่า 20 ที่อยู่ในตัวแปร z หารด้วย 4 แล้วเก็บไว้ในตัวแปร x เพราะฉะนั้นตัวแปร x จะเปลี่ยนไปเก็บค่า 5 ส่วนตัวแปร z ก็จะมีค่าเหมือนเดิมบรรทัดที่ 6 นำค่าที่อยู่ในตัวแปร x ซึ่งก็คือ 5 บวกกับ 10 แล้วนำไปเก็บไว้ในตัวแปร z ซึ่งทำให้ตัวแปร z เก็บค่า 15 ส่วนค่าอยู่ในตัวแปร x ก็จะมีค่าเหมือนเดิน คือ 5บรรทัดที่ 7 นำค่าที่อยู่ในตัวแปร z ลบด้วยค่าที่เก็บในตัวแปร y แล้วนำกลับไปเก็บไว้ในตัวแปร z ซึ่งทำให้ตัวแปร z เก็บค่า 5  ส่วนตัวแปร y ยังมีค่าเหมือนเดิม คือ 10

จะเห็นว่าค่าสุดท้ายของตัวแปร x,y และ z  คือ 5,10 และ 5 ตามลำดับ

1.ให้นักเรียนออกแบบแนวคิดในการเขียนโปรแกรมจากโจทย์ด้านล่าง โดยพิจารณาการรับข้อมูลจากผู้ใช้ว่าจะต้องใช้ตัวแปรกี่ตัว มีอะไรบ้าง และมีวิธีการตรวจสอบผลลัพธ์อย่างไร

โจทย์มีดังนี้
1.โรงภาพยนต์แห่งหนึ่ง สามารถกำหนดราคาของตั๋วได้เองเดือนนี้ เป็นช่วงเทสกาลภาพยนตร์ ราคาตั๋วลดลง 20% ให้นักเรียนคำนวณเงินค่าตั๋วสุทธิ
2. นักเรียนเปิดกระปุกออมสินพบเงินที่เป็นเหรียญจำนวนหนึ่บาท สองบาท ห้าบาท และสิบบาทให็นักเรียนคำนวณเงินทั้งหมด  โดยรับข้อมูลจำนวนเหรียญแต่ละราคา
3.นักเรียนซื้อหนังสือ ได้ลดรารา 10% คำนวณเงินที่ต้องจ่ายสุทธิ

2.เขียนโปรแกรม Scratch จากแนวคิดในข้อ 1

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

โปรแกรมนี้จะระบุจำนวนรอบในการทำงาน 3 รอบ โดยแต่ละรอบจะรับข้อมูลค่าทั้งหมดจำนวนผู้รับประทานอาหาร และคำนวณค่าอาหารที่ผู้รับประทานอาหารแต่ละคนต้องจ่าย


1
2
3
4
5
6
7
8

จากตัวอย่างที่ 6 จะเห็นว่าบล็อกคำสั่งที่เพิ่มมาจากตัวอย่างที่ 4 คือคำสั่ง repeat (3)ในบรรทัดที่ 2 ซึ่งเป็นการกำหนดให้มีการทำงานภายในบล็อกคำสั่ง repeat มี 3 รอบ เมื่อรันโปรแกรมจะพบว่าโปรแกรมจะให้ผู้ใช้ป้อนค่าอาหารทั้งหมด และจำนวนผู้รับประทานอาหาร แล้วโปรแกรมจะคำนวณค่าอาหารที่แต่ละคนต้องจ่าย ซึ่งจะทำเช่นนี้ 3 รอบ

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

ให้นักเรียนตอบคำถามและปฏิบัติตามคำสั่งต่อไปนี้

1.ถ้าต้องการรับจำนวนรอบตามที่ผู้ใช้กำหนด นักเรียนมีแนวคิดในการปรับโปรแกรมจากตัวอย่างที่ 6 อย่างไร
2.จากแนวคิดข้อ 1 นักเรียนจะเพิ่มตัวแปรใหม่อีก 1 ตัว เพื่อรับค่าจำนวนรอบใช่หรือไม่ จะตั้งชื่อตัวเเปรว่า อะไร
3.ถ้าข้อ 2ตอบว่า ใช่ เมื่อนักเรียนเพอ่มตัวแปรใหม่แล้วนักเรียนจะเปลี่ยนแปลงค่าในบล็อกคำสั่ง repeat หรือไม่อย่างไร
4.ให้เขียนรหัสลำลองหรือผังงานจากแนวคิดข้อ 1- 3

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


1
2
3
4
5
6
7
8
9
10

11

จากตัวอย่างที่ 7 จะเห็นว่าโปรแกรมต่างจากตัวอย่างที่ 4 ในบรรทัดที่ 2- 4 และบรรทัดสุดท้าย ดังนี้
1.บรรทัดที่ 2 รับข้อมูลจำนวนรอบที่ต้องการผู้ฝช้
2.บรรทัดที่ 3 นำข้อมูลที่รับจากผู้ใช้เก็บไว้ในตัวเรา
3.บรรทัดที่ 4 กำหนดรอบการทeงานจากค่าที่รับมาจากผู้ใช้ซึ่งเก็บไว้ในตัวแปร i   แล้ว
4.บรรทัดที่ 11 ตัวละครจะแสดงข้อความว่า " โปรแกรมทำงานเสร็จแล้วจ้า "   โดยจะแสดงก็ต่อเมื่อมีการทำงานครบรอบตามจำนวนที่ผู้ใช้กำหนด

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

ตาราง 2 ตัวอย่างดำเนินการทางคณิตศาสตร์และตัวดำเนินการเปรียบเทียบ

ตัวดำเนินการความหมายตัวอย่าง
การใช้งานผลลัพธ์

การบวก

การลบ

การคูณ

การหาร

12

8

20

5

ตัวดำเนินการความหมายตัวอย่าง
การใช้งานผลลัพธ์

น้อยกว่า

เท่ากับ

มากกว่า

เท็จ

เท็จ

จริง

ใน Scratch มีบล็อกคำสั่งสำหรับการทำงานแบบมีทางเลือก (Selection) จะใช้ในกรณีที่ต้องการให้โปรแกรมมีการตัดสินใจเลือกทำงาน อย่างใดอย่างหนึ่งตามเงื่อนไขที่กำหนด ซึ่งระบุไว้ใน   บล็อกคำสั่งสำหรับการทำงานแบบมีทางเลือกมีดังนี้

1.บล็อกคำสั่ง if 

จะใช้ในการทำงานแบบมีทางเลือกเพื่อควบคุมทิศทาง การทำงานโดยถ้าเงื่อนไขเป็นจริง จะทำคำสั่งภายในบล็อกคำสั่ง  if แต่ถ้าเงื่อนไขเป็นเท็จ จะข้ามไปทำคำสั่งถัดจากบล็อกคำสั่ง if ตัวอย่างการทำงานของบล็อกคำสั่ง if มีดังนี้

ถ้าตัวแปร count มีค่ามากกว่า 5 จะแสดงข้อความ "มากกว่า"

2.บล็อกคำสั่ง if-else  

จะใช้ในการทำงานแบบมีทางเลือก เพื่อควบคุมทิศทางการทำงาน โดยถ้า เงื่อนไขเป็นจริงจะทำคำสั่งภายในบล็อก if แต่ถ้าเงื่อนไขเป็นเท็จ จะทำคำสั่งภายในบล็อก else ตัวอย่างการทำงานของบล็อกคำสั่ง if-else มีดังนี้

ถ้าตัวแปร count มีค่ามากกว่า 5 จะแสดงข้อความ "มากกว่า" แต่ถ้าไม่ใช่ จะแสดงข้อความว่า "ไม่มากกว่า"

นอกจากนี้เรายังใช้บล็อกคำสั่ง if-else ว้อนกันได้ ตัวอย่างเช่น

    

ถ้าตัวแปร count มีค่ามากกว่า 5 โปรแกรมจะทำงานในบรรทัดที่ 2 โดยแสดงข้อความว่า "มากกว่า" แต่ถ้าไม่ใช่ โปรแกรมจะไปทำงานบรรทัดที่ 4 โดยตรวจสอบเงื่อนไขของ if- else ที่ซ้อนอยู่ ว่า count มีค่าเท่ากับ 5 หรือไม่ ถ้าใช่ จะทำงานในบรรทัดที่ 5 แสดงข้อความว่า "เท่ากัน" แต่ถ้าไม่ใช่ จะทำงานในบรรทัดที่ 7 แสดงข้อความว่า "น้อยกว่า"

โปรแกรมนี้จะรับอุณหภูมิเป็นองศาสเซลเซียส หากอุณหภูมิสูงว่า 30 องศาจะแสดงข้อความว่า "ร้อน" ถ้าอุณหภูมิต่ำกว่านั้นจะแสดงข้อความว่า "กำลังดี"

1
2
3
4
5
6
7

ตัวอย่างที่ 8 อธิบายดังนี้
1.บรรทัดที่ 2 โปรแกรมจะรับข้อมูลจากผู้ใช้
2.บรรทัดที่ 3 เก็บข้อมูลที่รับมาจากผู้ใช้ไว้ในตัวแปร temp_c
3.บรรทัดที่ 4 ตรวจสอบเงื่อนไขทางเลือกว่า ถ้า อุณหภูมิที่รับมาจากผู้ใช้ (temp_c) มากกว่า 30 องศา ให้แสดงข้อความว่า "ร้อน" จากคำสั่งในบรรทัดที่ 5 แต่ถ้าไม่ใช่ให้แสดงข้อความว่า "กำลังดี" ในบรรทัดที่ 7

บล็อก  บล็อก join อยู่ในกลุ่มบล็อก Operators ใช้สำหรับเชื่อมข้อความเข้าด้วยกัน ซึ่งสามารถเชื่อมระหว่าง ข้อความกับข้อความ หรือข้อความกับตัวแปรก็ได้ การแสดงผลข้อความจะใช้งานร่วมกับบล็อก say หรือ think  เช่น ให้นักเรียนปรับโปรแกรมจากตัวอย่างที่ 8 โดยตรวจสอบเงื่อนไขเพิ่ม คือ ถ้าอุณหภูมิต่ำกว่า 15 องศาเซลเซียสให้แสดงข้อความว่า "หนาว"

1.บล็อกคำสั่ง repeat until  

 เป็นคำสั่งที่ใช้ในการทำงานซ้ำแบบมีเงื่อนไข (conditional loop) โดยการวนซ้ำภายในบล็อกคำสั่ง repeat until จะวนซ้ำจนกว่าเงื่อนไขจะเป็นจริงแล้วจบการทำงานบล็อกคำสั่ง ตัวอย่างเช่น

จากตัวอย่าง โปรแกรมจะตรวจสอบว่า ตัวชี้เมาส์ ชี้ไปที่ตัวละครหรือไม่ ถ้าไม่ใช่ จะแสดงข้อความ "Hello!" ไปเรื่อย ๆ แต่ถ้าผู้ใช้เลื่อนตัวชี้เมาส์ไปสัมผัสตัวละคร ตัวละครจะหยุนแสดงข้อความ "Hello" แล้วจบการทำงานในบล็อกคำสั่ง repeat until

2. บล็อกคำสั่ง wait until 

  ใช้ในกรณีที่ต้องการให้หยุดรอ จนกระทั่งการตรวจสอบเงื่อนไขเป็นจริงจึงจะทำคำสั่งถัดไป สามารถนำมาใช้ร่วมกับคำสัง forever ในการวนซ้ำเพื่อตรวจสอบได้
ตัวอย่างเช่น

วนซ้ำรอจนกระทั้ง ผู้ใช้เลื่อนตัวชีเมาส์ไปสัมผัสที่ตัวละคร จึงจะแสดงข้อความ "Hello!" แต่ถ้าเลื่อนตัวชี้เมาส์ออกจากตัวละคร ก็จะไม่เเสดงข้อความ "Hello!" แต่ก็ยังคงตรวจสอบเงื่อนไขต่อไป

การสัมผัส การตรวจสอบเงื่อนไขใน Scratch สามารถใช้บล็อกคำสั่งใมนกลุ่มบล็อก Sensing สำหรับตรวจสอบการสัมผัสกันระหว่างตัวละคร ตัวชี้เมาส์ และสีได้ เช่น

       ตรวจสอบการสัมผัสตัวละครกับตัวชี้เมาส์ ขอบจอภาพหรือกับตัวละครอื่น

                      ตรวจสอบการสัมผัสตัวละครกับสีที่กำหนด

              ตรวจสอบการสัมผัสระหว่างสีที่กำหนด

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

1
2
3
4

5
6
7
8
9
10
11
12

13

จากตัวอย่างที่ 9  จะเห็นว่าคำสั่งที่แตกต่างจากตัวอย่างที่ 7 คือบล็อกคำสั่งในบรรทัดที่ 4, 5 และ 12

1.บรรทัดที่ 4 กำหนดค่าที่เก็บในตัวแปร count คือ 1
2.บรรทัดที่ 5 ตรวจสอบเงื่อนไข repeat until ( count > i )   ว่าเป็นจริงหรือไม่ โดย

ถ้าเป็นจริง (count มากกว่า i )คำสั่งภายใน repeat until จะไม่ทำงาน โดยโปรแกรมจะข้ามไปทำคำสั่งถัดไป ในที่นี้คือคำสั่งในบรรทัดที่ 13
ถ้าเป็นเท็จ (count น้อยกว่าหรือเท่ากับ i ) โปรแกรมจะเข้าไปทำคำสั่งภายใน repeat until บรรทัดที่ 6 -12 คือ รับข้อมูลค่าอาหารทั้งหมด จำนวนผู้รับประทานอาหาร คำนวณ และเเสดงค่าอาหารที่ผู้รับประทานอาหารแต่ละคนต้องจ่าย

3.บรรทัดที่ 12 บล็อกคำสั่ง change count by 1 ซึ่งหมายถึง ค่าที่เก็บในตัวแปร count จะเพิ่มขึ้นอีก 1 โดยในการทำงานแต่ละรอบ ค่า count จะเปลี่ยนแปลงไป

ถ้ารันโปรแกรมแล้วผู้ใช้ป้อนจำนวนที่ต้องการเป็น 3 จะมีการเปลี่ยนแปลงค่าในตัวแปร i , count และผลลัพธ์ของเงื่อนไข count > i เป็นดังนี้

ตัวแปร/เงื่อนไขรอบที่1รอบที่ 2รอบที่ 3รอบที่ 4count1234i3333count > iเท็จเท็จเท็จจริง

สำหรับรอบที่ 4 เมื่อตรวจสอบ repeat until (count > i ) แล้วพบว่าเงื่อนไขเป็นจริง จึงหยุดการทำงานภายในบล็อกคำสั่ง repeat until แล้วข้ามไปทำงานในบรรทัดที่ 13 เพื่อแสดงข้อความว่า "โปรแกรมทำงานแสร็จแล้ว"

1.ให้นักเรียนปรับโปรแกรมที่ 9 โดยให้ผู้ใช้เลือกได้ว่า ถ้าต้องการคำนวณในรอบต่อไปให้ป้อน y และถ้าต้องการออกจากโปรแกรมให้ป้อนค่าอื่น

2. อธิบายความแตกต่างระหว่างบล็อกคำสั่ง repeat , repeat until และ wait unit


โปรแกรม Scratch เป็นโปรแกรมเชิงกราฟิกที่ใช้งานง่าย สามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ ทำงานได้โดยใช้บล็อกคำสั่งวางต่อกันเป็นลำดับ การเขียนโปรแกรมที่เกี่ยวกับการคำนวณต่างๆ อาจจำเป็นต้องมีการตรวจสอบเงื่อนไขการทำงาน หรือการกำหนดให้มีการบวชซ้ำ ซึ่ง Scratch ก็มีบล็อกคำสั่งต่างๆ ให้ใช้งานที่ครอบคลุมทั้งการทำงานแบบวนซ้ำ และมีทางเลือก รวมถึงมีตัวดำเนินการต่างๆ ให้เลือกใช้ตามความต้องการ ไม่ว่าจะเป็นตัวดำเนินการทางคณิตศาสตร์หรือตัวดำเนินการเปรียบเทียบ โดยถ้าต้องการทำงานแบบไม่รู้จบสามารถกำหนดได้โดยใช้บล็อกคำสั่ง forever หรือถ้าต้องการกำหนดจำนวนรอบในการทำงานจะใช้บล็อกคำสั่ง repeat นอกจากนั้นยังมีบล็อกคำสั่งสำหรับการทำงานที่ต้องการตรวจสอบเงื่อนไขเพื่อเลือกทำงานอย่างใดอย่างหนึ่ง คือคำสั่ง if , if else และบล็อกคำสั่งที่ใช้สำหรับงานที่ต้อง มีการวนรอบและตรวจสอบไปพร้อมกันซึ่งหากเงื่อนไขเป็นเท็จจึงจะทำงานตามที่กำหนด นั่นคือคำสั่ง repeat until แต่ถ้าต้องการให้มีการวนรอบการทำงานไปจนกว่าจะพบว่าเงื่อนไขเป็นจริง จะใช้บล็อกคำสั่ง wait until ในการตรวจสอบการทำงานได้

Toplist

โพสต์ล่าสุด

แท็ก

flow chart แสดงขั้นตอนการปฏิบัติงาน lmyour แปลภาษา กาพย์เห่ชมเครื่องคาวหวาน กาพย์เห่เรือ การเขียน flowchart โปรแกรม ตัวรับสัญญาณ wifi โน๊ตบุ๊คหาย ตัวอย่าง flowchart ขั้นตอนการทํางาน ผู้แต่งกาพย์เห่ชมไม้ ภูมิปัญญาหมายถึง มีสัญญาณ wifi แต่เชื่อมต่อไม่ได้ เชื่อมต่อแล้ว ไม่มีการเข้าถึงอินเทอร์เน็ต แปลภาษาอังกฤษเป็นไทย pantip แปลภาษาไทย ไทยแปลอังกฤษ /roblox promo code redeem 3 พระจอม มีที่ไหนบ้าง AKI PLUS รีวิว APC UPS APC UPS คือ Adobe Audition Adobe Bridge Anapril 5 mg Aqua City Odaiba Arcade Stick BMW F10 jerk Bahasa Thailand Benz C63 ราคา Bootstrap 4 Bootstrap 4 คือ Bootstrap 5 Brackets Brother Scanner Brother iPrint&Scan Brother utilities Burnt HD C63s AMG CSS เว้น ช่องว่าง CUPPA COFFEE สุราษฎร์ธานี Cathy Doll หาซื้อได้ที่ไหน Clock Humidity HTC-1 ColdFusion Constitutional isomer Cuppa Cottage เจ้าของ Cuppa Cottage เมนู Cuppa Cottage เวียงสระ DMC DRx จ่ายปันผลยังไง Detroit Metal City Div class คือ Drastic Vita