สวัสดีค่ะ ยินดีต้อนรับเข้าสู่เว็บไซต์ hongkrunan.in.th แหล่งการเรียนรู้ออนไลน์วิชาวิทยาการคำนวณ
สวัสดีค่ะ ยินดีต้อนรับเข้าสู่เว็บไซต์ hongkrunan.in.th แหล่งการเรียนรู้ออนไลน์วิชาวิทยาการคำนวณ
หน่วยการเรียนรู้ที่ 4
การเขียนโปรแกรมด้วย Scratch
จุดประสงค์การเรียนรู้
1.นักเรียนสามารถออกแบบและเขียนโปรแกรมที่ทำงานแบบวนซ้ำได้
2.นักเรียนสามารถออกแบบและเขียนโปรแกรมที่มีการใช้งานตัวแปรได้
3.นักเรียนสามารถออกแบบและเขียนโปรแกรมที่ทำงานแบบมีทางเลือกได้
4.นักเรียนสามารถเขียนโปรแกรมเพื่อแก้ปัญหาทางคณิตศาสตร์หรือวิทยาศาสตร์ได้
โปรแกรม Scratch เป็นโปรแกรมโอเพนซอร์ส (open source software) พัฒนาโดยนักวิจัยที่ห้องปฏิบัติการสื่อ (MIT Media Lab) สถาบันเทคโนโลยีแมสซาซูเซตส์ ประเทศสหรัฐอเมริกา
Scratch ออกแบบมาให้ใช้กับเด็กอายุ 8-16 ปี และเป็นทางเลือกที่ดีในการเขียนโปรแกรมสำหรับผู้เริ่มต้น ปัจจุบัน Scratch พัฒนาถึงเวอร์ชัน 3.27.0 ผู้ใช้สามารถเขียนโปรแกรมออนไลน์ หรือดาวน์โปลดโปรแกรมมาใช้ที่เครื่องคอมพิวเตอร์แบบออฟไลน์ นอกจากนี้ภายในเว็บไซต์ยังมีข้อมูลความรู้เกี่ยวกับคำสั่งและตัวอย่างของโปรแกรม อีกทั้งยังมีแหล่งชุมชนออนไลน์ให้ได้ศึกษาและเรียนรู้การทำงานร่วมกัน โดยสามารถเผยแพร่ผลงานของตน และสามารถนำโปรแกรมของผู้อื่นที่อัปโหลดไว้มาปรับแก้ได้อีกด้วย
เนื่องจากโปรแกรม Scratch เป็นโปรแกรมภาษาเชิงกราฟิกจึงทำให้ใช้งานง่าย สามารถสร้างสคริปต์ หรือโปรแกรมที่ประกอบด้วยบล็อกคำสั่งต่างๆมาวางต่อกันเป็นลำดับ โดยไม่ต้องกังวลกับการพิมพ์คำสั่งผิดพลาด หน้าต่างโปรแกรม Scratch ดังรูป
การเข้าใช้งาน Scratch มี 2 วิธี
1.การเข้าใช้งานแบบออนไลน์ (Online)
สามารถทำได้โดยเข้าไปที่เว็บไซต์ http://scratch.mit.edu/
2. การเข้าใช้งานแบบออฟไลน์ (Offline)
กลุ่มบล็อกเครื่องมือ
การทำงานแบบวนซ้ำ
ในการเขียนโปรแกรมมีหลายกรณีที่ต้องมีการทำงานซ้ำๆกัน ซึ่งทำให้ต้องเขียนคำสั่งชุดเดียวกันซ้ำกันหลายครั้ง เพื่อให้การทำงานมีประสิทธิภาพ Scratch มีคำสั่งที่ใช้ในการทำงานแบบวนซ้ำซึ่งอยู่ในกลุ่มบล็อก Control ดังนี้
บล็อกคำสั่ง Forever เป็นคำสั่งที่กำหนดการทำงานแบบวนซ้ำไม่รู้จบ ตัวอย่างเช่น
เคลื่อนที่ไปข้างหน้า 100 หน่วย แล้วหมุนตามเข็มนาฬิกา 90 องศา โดยทำซ้ำ 2 คำสั่งแบบไม่รู้จบ
บล็อกคำสั่ง repeat เป็นคำสั่งที่กำหนดการทำงานแบบวนซ้ำตามจำนวนรอบที่กำหนด ตัวอย่างเช่น เคลื่อนที่ไปข้างหน้า 100 หน่วย แล้วหมุนตามเข็มนาฬิกา 90 องศาจนครบ 10 รอบ
ตัวอย่าง การวาดรูปสี่เหลี่ยม
แนวคิดในการวาดรูปสี่เหลี่ยม คือ ต้องวาดเส้นตรงแล้วต้องเปลี่ยนทิศทางการวาดเป็นมุม 90 องศา ซึ่งถ้าสังเกตจะเห็นว่า ส่วนนี้มีการทำซ้ำ 4 รอบ แต่ก่อนการสั่งวาดรูปจะต้องมีการล้างหน้าจอภาพให้ว่างก่อนแล้วจึงวางปากกา และกำหนดจุดเริ่มต้นของการวาด จากแนวคิดเขียนรหัสลำลองได้ดังนี้
1. ล้างจอภาพ
2. วางปากกา
3. กำหนดตำแหน่งเริ่มวาดที่พิกัด (0,0)
4. ทำงานต่อไปนี้ 4 รอบ
4.1 ลากเส้นตรง 100 หน่วย
4.2 หมุนตามเข็มนาฬิกา 90 องศา
จากตัวอย่างอธิบายได้ว่า
1.บรรทัดที่ 1 กำหนดจุดเริ่มต้น
2.บรรทัดที่ 2 ล้างหน้าจอภาพ
3.บรรทัดที่ 3 วางปากกา
4.บรรทัดที่ 4 กำหนดตำแหน่งเริ่มต้นให้ตัวละคร อยู่ที่กลางจอภาพซึ่งคือตำแหน่ง (0,0)
5.กำหนดให้คำสั่งภายในบล็อกคำสั่ง repeat ซ้ำจำนวน 4 รอบ คือคำสั่งในบรรทัดที่ 6 เคลื่อนที่ไปตามทิศทางของตัวละคร เป็นจำนวน 100 หน่วย และบรรทัดที่ 7 หมุนตามเข็มนาฬิกา 90 องศาซึ่งจะทำให้ได้รูปสี่เหลี่ยม 1 รูป
ตัวแปร (variable) เป็นชื่อที่กำหนดขึ้นเพื่อใช้เก็บข้อมูลและเรียกใช้ในการทำงานต่างๆ ใน Scratch สามารถกำหนดการใช้งานตัวแปรได้เช่นเดียวกับภาษาโปรแกรมอื่น
โดยการสร้างตัวแปรทำได้โดยคลิกบล็อกคำสั่ง Make a Variable ที่อยู่ในกลุ่มบล็อก variable
การตั้งชื่อตัวแปรควรใช้ชื่อที่มีความหมายสอดคล้องกับข้อมูล เช่น name ใช้สำหรับเก็บชื่อ score ใช้สำหรับเก็บคะแนน และ price ใช้สำหรับเก็บราคา และการกำหนดขอบเขตการใช้งานตัวแปร สามารถกำหนดได้ 2 แบบ ดังนี้
- For all sprites กำหนดให้ทุกตัวละครสามารถใช้งานตัวแปรนี้ได้
- For this sprite only กำหนดให้ใช้งานตัวแปรนี้ได้เฉพาะกับตัวละครที่สร้างตัวแปรนี้เท่านั้น
ถ้าสร้างตัวแปรเสร็จแล้ว จะมีบล็อกคำสั่งปรากฏขึ้นมาอีก 5 บล็อก ในที่นี้จะยกตัวอย่างเมื่อมีการสร้างตัวแปร count ดังตาราง
บล็อกคำสั่งที่เกี่ยวกับตัวแปร
ตัวแปรสามารถเก็บข้อมูลได้เพียงค่าเดียว ณ ขณะใดขณะหนึ่ง แต่สามารถเปลี่ยนแปลงได้ ผู้เขียนโปรแกรมสามารถกำหนดค่าตัวแปรจากตัวแปรอื่น หรือระบุค่าโดยตรง โดยใช้บล็อกคำสั่ง set my variable to...
หรือกำหนดจากกการรับข้อมูลจากผู้ใช้ โดยใช้บล็อกคำสั่ง ask...and wait
ซึ่งค่าข้อมูลที่รับจากผู้ใช้จะถูกเก็บไว้ในตัวแปร answer เสมอ
หากต้องการรับข้อมูลจากผู้ใช้หลายค่า ผู้เขียนโปรแกรมต้องนำค่าในตัวแปร answer ไปเก็บไว้ในตัวแปรอื่นก่อน แล้วจึงรับข้อมูลอื่นจากผู้ใช้ต่อไป
ในโปรแกรม Scratch นอกจากจะมีตัวดำเนินการที่ใช้ในการคำนวณทางคณิตศาสตร์ซึ่งอยู่ในกลุ่มบล็อก Operators แล้ว ยังมีตัวดำเนินการเปรียบเทียบตามเงื่อนไขที่ระบุ โดยผลลัพธ์ที่ได้จะมีค่าเป็นจริงหรือเท็จเท่านั้น
ตารางแสดงตัวอย่างตัวดำเนินการทางคณิตศาสตร์และตัวดำเนินการเปรียบเทียบ
การทำงานแบบมีทางเลือก
ใน Scratch มีบล็อกคำสั่งสำหรับการทำงานแบบมีทางเลือก (Selection) จะใช้ในกรณีที่ต้องการให้โปรแกรมมีการตัดสินใจเลือกทำงาน อย่างใดอย่างหนึ่งตามเงื่อนไขที่กำหนด บล็อกคำสั่งสำหรับการทำงานแบบมีทางเลือกมีดังนี้
บล็อกคำสั่ง if จะใช้ในการทำงานแบบมีทางเลือกเพื่อควบคุมทิศทางการทำงานโดยถ้าเงื่อนไขเป็นจริง จะทำคำสั่งภายในบล็อกคำสั่ง if แต่ถ้าเงื่อนไขเป็นเท็จ จะข้ามไปทำคำสั่งถัดจากบล็อกคำสั่ง if ตัวอย่างการทำงานของบล็อกคำสั่ง if มีดังนี้
บล็อกคำสั่ง if-else จะใช้ในการทำงานแบบมีทางเลือก เพื่อควบคุมทิศทางการทำงาน โดยถ้า เงื่อนไขเป็นจริงจะทำคำสั่งภายในบล็อก if แต่ถ้าเงื่อนไขเป็นเท็จ จะทำคำสั่งภายในบล็อก else ตัวอย่างการทำงานของบล็อกคำสั่ง if-else มีดังนี้
การทำงานแบบวนซ้ำแบบมีเงื่อนไข
1.บล็อกคำสั่ง repeat until เป็นคำสั่งที่ใช้ในการทำงานซ้ำแบบมีเงื่อนไข (conditional loop) โดยการวนซ้ำภายในบล็อกคำสั่ง repeat until จะวนซ้ำจนกว่าเงื่อนไขจะเป็นจริงแล้วจบการทำงานบล็อกคำสั่ง ตัวอย่างเช่น
2. บล็อกคำสั่ง wait until ใช้ในกรณีที่ต้องการให้หยุดรอ จนกระทั่งการตรวจสอบเงื่อนไขเป็นจริงจึงจะทำคำสั่งถัดไป สามารถนำมาใช้ร่วมกับคำสัง forever ในการวนซ้ำเพื่อตรวจสอบได้ ตัวอย่างเช่น
โปรแกรม Scratch เป็นโปรแกรมเชิงกราฟิกที่ใช้งานง่าย สามารถเขียนโปรแกรมเพื่อสั่งให้คอมพิวเตอร์ ทำงานได้โดยใช้บล็อกคำสั่งวางต่อกันเป็นลำดับ การเขียนโปรแกรมที่เกี่ยวกับการคำนวณต่างๆ อาจจำเป็นต้องมีการตรวจสอบเงื่อนไขการทำงาน หรือการกำหนดให้มีการบวชซ้ำ ซึ่ง Scratchก็มีบล็อกคำสั่งต่างๆ ให้ใช้งานที่ครอบคลุมทั้งการทำงานแบบวนซ้ำ และมีทางเลือก
รวมถึงมีตัวดำเนินการต่างๆ ให้เลือกใช้ตามความต้องการ ไม่ว่าจะเป็นตัวดำเนินการทางคณิตศาสตร์หรือตัวดำเนินการเปรียบเทียบ โดยถ้าต้องการทำงานแบบไม่รู้จบสามารถกำหนดได้โดยใช้บล็อกคำสั่ง forever หรือถ้าต้องการกำหนดจำนวนรอบในการทำงานจะใช้บล็อกคำสั่ง repeat
นอกจากนั้นยังมีบล็อกคำสั่งสำหรับการทำงานที่ต้องการตรวจสอบเงื่อนไขเพื่อเลือกทำงานอย่างใดอย่างหนึ่ง คือคำสั่ง if , if else และบล็อกคำสั่งที่ใช้สำหรับงานที่ต้อง มีการวนรอบและตรวจสอบไปพร้อมกันซึ่งหากเงื่อนไขเป็นเท็จจึงจะทำงานตามที่กำหนด นั่นคือคำสั่ง repeat until แต่ถ้าต้องการให้มีการวนรอบการทำงานไปจนกว่าจะพบว่าเงื่อนไขเป็นจริง จะใช้บล็อกคำสั่ง wait until ในการตรวจสอบการทำงานได้