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 ตามลำดับ
นักเรียนสามารถเขียนโปรแกรม 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. ทำไมจึงมีการเริ่มต้นเขียนโปรแกรมด้วยบล็อก
2. บล็อกคำสั่ง forever ทำหน้าที่อะไร
3. ถ้าชุดตัวละครเริ่มต้นด้วย costume1 เมื่อพบบล็อกคำสั่ง next costume ชุดตัวละครจะเปลี่ยนเป็นชุดใด และเมื่อวนรอบมาพบคำสั่ง next costume อีกครั้ง ชุดตัวละครจะเปลี่ยนเป็นชุดใด
4. ถ้าต้องการให้ตัวละครกลับมาอยู่ที่ตำแหน่งกลางเวทีทุกครั้งเมื่อมีการคลิกธงเขียว จะใช้คำสั่งใดในกลุ่มบล็อก Motion และวางที่ตำแหน่งใด
5. หากนำบล็อกคำสั่ง
6. หากนำบล็อกคำสั่ง
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 สามารถกำหนดการใช้งานตัวแปรได้เช่นเดียวกับภาษาโปรแกรมอื่น โดยการสร้างตัวแปรทำได้โดยคลิกบล็อกคำสั่ง
- For all sprites กำหนดให้ทุกตัวละครสามารถใช้งานตัวแปรนี้ได้
- For this sprite only กำหนดให้ใช้งานตัวแปรนี้ได้เฉพาะกับตัวละครที่สร้างตัวแปรนี้เท่านั้น
รูปหน้าต่าง New Variable
ถ้าตัวแปรเสร็จแล้วจะมีบล็อกคำสั่งปรากฏขึ้นมาอีก 5 บล็อก ในที่นี้จะยกตัวอย่างเมื่อมีการสร้างตัวแปร count ดังตาราง บล็อกคำสั่งที่เกี่ยวกับตัวแปร count ดังตาราง 1
ตาราง 1 บล็อกคำสั่งที่เกี่ยวกับตัวแปร
บล็อกคำอธิบาย แสดงค่าตัวแปรบนเวที
ไม่แสดงค่าตัวแปรบนเวที
เปลี่ยนค่าตัวแปร count เพิ่มขึ้นครั้งละ 1
ตัวแปรสามารถเก็บข้อมูลได้เพียงค่าเดียว ณ ขณะใดขณะหนึ่ง แต่สามารถเปลี่ยนแปลงได้ผู้เขียนโปรแกรม สามารถกำหนดค่าตัวแปรจากตัวแปรอื่น หรือระบุค่าโดยตรง โดยใช้บล็อกคำสั่ง หรือกำหนดจากกการรับข้อมูลจากผู้ใช้ โดยใช้บล็อกคำสั่ง
หากต้องการรับข้อมูลจากผู้ใช้หลายค่า ผู้เขียนโปรแกรมต้องนำค่าในตัวแปร ไปเก็บไว้ในตัวแปรอื่นก่อน แล้วจึงรับข้อมูลอื่นจากผู้ใช้ต่อไป
นักเรียนลองพิจารณาตัวอย่างต่อไปนี้
ถ้านักเรียนไปรับประทานอาหารฉลองวันปิดเทอมกับเพื่อน และตกลงกันว่าจะจ่ายค่าอาหาร คนละ เท่า ๆกัน นักเรียนแต่ละคนจะต้องจ่ายค่าอาหารคนละเท่าใด
ซึ่งโจทย์นี้นักเรียนได้ลองคิดมาแล้วเบื้องต้น โดยให้นักเรียนเลือกข้อมูลจากรูป ที่คิดว่าเกี่ยวข้อง กับการนำมาคำนวณเพื่อให้ได้จำนวนเงิน ที่นักเรียนแต่ละคนต้องจ่าย
รูปข้อมูล
1.ทดลองคลิกขวาที่เครื่องหมาย / ในบรรทัดที่ 6 แล้วเลือกเครื่องหมาย +,- และ * ตามลำดับแล้วรันโปรแกรม ทดลองเติมข้อมุล ค่าอาหารทั้งหมด และจำนวนผู้รับประทานอาหาร สังเกตผลลัพธ์ที่ได้จากการเปลี่ยนเครื่องหมายดังกล่าวว่าเป็นอย่างไร เพราะเหตุใด
1
2
3
4
5
6
7
2.ให้นำบล็อกในบรรทัดที่ 3 ออกแล้วคลิก
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.โรงภาพยนต์แห่งหนึ่ง สามารถกำหนดราคาของตั๋วได้เองเดือนนี้ เป็นช่วงเทสกาลภาพยนตร์ ราคาตั๋วลดลง 20% ให้นักเรียนคำนวณเงินค่าตั๋วสุทธิ
2. นักเรียนเปิดกระปุกออมสินพบเงินที่เป็นเหรียญจำนวนหนึ่บาท สองบาท ห้าบาท และสิบบาทให็นักเรียนคำนวณเงินทั้งหมด โดยรับข้อมูลจำนวนเหรียญแต่ละราคา
3.นักเรียนซื้อหนังสือ ได้ลดรารา 10% คำนวณเงินที่ต้องจ่ายสุทธิ
หากต้องการให้โปรแกรมใช้กับฉัน 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
ถ้าตัวแปร count มีค่ามากกว่า 5 จะแสดงข้อความ "มากกว่า"
2.บล็อกคำสั่ง if-else
ถ้าตัวแปร count มีค่ามากกว่า 5 จะแสดงข้อความ "มากกว่า" แต่ถ้าไม่ใช่ จะแสดงข้อความว่า "ไม่มากกว่า"
นอกจากนี้เรายังใช้บล็อกคำสั่ง if-else ว้อนกันได้ ตัวอย่างเช่น
ถ้าตัวแปร count มีค่ามากกว่า 5 โปรแกรมจะทำงานในบรรทัดที่ 2 โดยแสดงข้อความว่า "มากกว่า" แต่ถ้าไม่ใช่ โปรแกรมจะไปทำงานบรรทัดที่ 4 โดยตรวจสอบเงื่อนไขของ if- else ที่ซ้อนอยู่ ว่า count มีค่าเท่ากับ 5 หรือไม่ ถ้าใช่ จะทำงานในบรรทัดที่ 5 แสดงข้อความว่า "เท่ากัน" แต่ถ้าไม่ใช่ จะทำงานในบรรทัดที่ 7 แสดงข้อความว่า "น้อยกว่า"
โปรแกรมนี้จะรับอุณหภูมิเป็นองศาสเซลเซียส หากอุณหภูมิสูงว่า 30 องศาจะแสดงข้อความว่า "ร้อน" ถ้าอุณหภูมิต่ำกว่านั้นจะแสดงข้อความว่า "กำลังดี"
12
3
4
5
6
7
ตัวอย่างที่ 8 อธิบายดังนี้
1.บรรทัดที่ 2 โปรแกรมจะรับข้อมูลจากผู้ใช้
2.บรรทัดที่ 3 เก็บข้อมูลที่รับมาจากผู้ใช้ไว้ในตัวแปร temp_c
3.บรรทัดที่ 4 ตรวจสอบเงื่อนไขทางเลือกว่า ถ้า อุณหภูมิที่รับมาจากผู้ใช้ (temp_c) มากกว่า 30 องศา ให้แสดงข้อความว่า "ร้อน" จากคำสั่งในบรรทัดที่ 5 แต่ถ้าไม่ใช่ให้แสดงข้อความว่า "กำลังดี" ในบรรทัดที่ 7
1.บล็อกคำสั่ง repeat until
จากตัวอย่าง โปรแกรมจะตรวจสอบว่า ตัวชี้เมาส์ ชี้ไปที่ตัวละครหรือไม่ ถ้าไม่ใช่ จะแสดงข้อความ "Hello!" ไปเรื่อย ๆ แต่ถ้าผู้ใช้เลื่อนตัวชี้เมาส์ไปสัมผัสตัวละคร ตัวละครจะหยุนแสดงข้อความ "Hello" แล้วจบการทำงานในบล็อกคำสั่ง repeat until
2. บล็อกคำสั่ง wait until
ตัวอย่างเช่น
วนซ้ำรอจนกระทั้ง ผู้ใช้เลื่อนตัวชีเมาส์ไปสัมผัสที่ตัวละคร จึงจะแสดงข้อความ "Hello!" แต่ถ้าเลื่อนตัวชี้เมาส์ออกจากตัวละคร ก็จะไม่เเสดงข้อความ "Hello!" แต่ก็ยังคงตรวจสอบเงื่อนไขต่อไป
การสัมผัส การตรวจสอบเงื่อนไขใน Scratch สามารถใช้บล็อกคำสั่งใมนกลุ่มบล็อก Sensing สำหรับตรวจสอบการสัมผัสกันระหว่างตัวละคร ตัวชี้เมาส์ และสีได้ เช่น
โปรแกรมนี้จะมีการทำงานเหมือนตัวอย่างที่ 7 จะเริ่มต้นด้วยการรับจำนวนรอบในการทำงานที่ผู้ใช้ต้องการ แล้วจึงรับข้อมูลค่าอาหารทั้งหมด จำนวนผู้รับประทานอาหาร และคำนวณค่าอาหาร ที่แต่ละคนต้องจ่าย ดดยจะทำงานตามจำนวนรอบที่ผู้ใช้ป้อนในขณะรันโปรแกรม
12
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 เพื่อแสดงข้อความว่า "โปรแกรมทำงานแสร็จแล้ว"
2. อธิบายความแตกต่างระหว่างบล็อกคำสั่ง repeat , repeat until และ wait unit
โปรแกรม Scratch เป็นโปรแกรมเชิงกราฟิกที่ใช้งานง่าย สามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ ทำงานได้โดยใช้บล็อกคำสั่งวางต่อกันเป็นลำดับ การเขียนโปรแกรมที่เกี่ยวกับการคำนวณต่างๆ อาจจำเป็นต้องมีการตรวจสอบเงื่อนไขการทำงาน หรือการกำหนดให้มีการบวชซ้ำ ซึ่ง Scratch ก็มีบล็อกคำสั่งต่างๆ ให้ใช้งานที่ครอบคลุมทั้งการทำงานแบบวนซ้ำ และมีทางเลือก รวมถึงมีตัวดำเนินการต่างๆ ให้เลือกใช้ตามความต้องการ ไม่ว่าจะเป็นตัวดำเนินการทางคณิตศาสตร์หรือตัวดำเนินการเปรียบเทียบ โดยถ้าต้องการทำงานแบบไม่รู้จบสามารถกำหนดได้โดยใช้บล็อกคำสั่ง forever หรือถ้าต้องการกำหนดจำนวนรอบในการทำงานจะใช้บล็อกคำสั่ง repeat นอกจากนั้นยังมีบล็อกคำสั่งสำหรับการทำงานที่ต้องการตรวจสอบเงื่อนไขเพื่อเลือกทำงานอย่างใดอย่างหนึ่ง คือคำสั่ง if , if else และบล็อกคำสั่งที่ใช้สำหรับงานที่ต้อง มีการวนรอบและตรวจสอบไปพร้อมกันซึ่งหากเงื่อนไขเป็นเท็จจึงจะทำงานตามที่กำหนด นั่นคือคำสั่ง repeat until แต่ถ้าต้องการให้มีการวนรอบการทำงานไปจนกว่าจะพบว่าเงื่อนไขเป็นจริง จะใช้บล็อกคำสั่ง wait until ในการตรวจสอบการทำงานได้