หลักการเขียนโปรแกรมใน Scratch ตอนที่ 5

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

การคำนวณตัวเลขทั่วไป ก็มีการบวก (+) ลบ (-) คูณ (*) หาร (/) นอกจากนั้นยังมี การสุ่มค่า การใช้ฟังก์ชันคณิตศาสตร์อีกมากมาย

ส่วนการจัดการข้อมูลตัวอักษรนั้น สามารถรวมสองคำให้เป็นคำเดียวกันได้ (join) หรือดึงอักษรใดอักษรหนึ่งมาจากคำได้ (letter of ) นอกจากนั้นยังนับจำนวนอักษรทั้งหมดในคำได้ (length of)

สำหรับตรรกะที่ใช้ในเงื่อนไข หาได้จากการเปรียบเทียบตัวเลข เช่น การเปรียบเทียบ มากกว่า (>) น้อยกว่า (<) หรือ เท่ากับ (=) ซึ่งจะคืนค่าเป็น จริงหรือเท็จ เมื่อมีหลายเงื่อนไข ก็ยังสามารถประมวลผลระหว่างเงื่อนไขได้จาก ตรรกะและ (and) ตรรกะหรือ (or) ตรรกะไม่ (not)

สิ่งสำคัญอย่างหนึ่งในการคำนวณที่กล่าวมา คือลำดับการคำนวณ ตัวอย่างเช่น ถ้าต้องการคำนวณ 3 * 5 -4 /2 ในโปรแกรมภาษาอื่น จะคำนวณตามกฎลำดับการคำนวณของภาษานั้นๆ เพื่อลดความสับสน ใน Scratch จะทำการคำนวณได้ที่ละคู่ เหมือนการใส่วงเล็บ คนเขียนโปรแกรมต้องรู้ว่า ต้องการคำนวณอย่างไร เพราะจะได้ผลต่างกัน เช่น ((3*5)-(4/2)) = 13 หรือ ((3 * (5 – 4)) /2) = 1.5 เป็นต้น

มาดูตัวอย่าง GardenSecret ในสคริปต์ของดอกไม้ 1 ซึ่งจะเห็นบล็อกคำนวณสีเขียวอ่อน อยู่หลายบล็อก เช่น บล็อกเงื่อนไข (flower = 1) ในบล็อกถ้า (if)

การเล่นเอฟเฟคสี ความสว่าง ขนาดของดอกไม้นี้ ต่างใช้การคำนวณเพื่อสร้างความหลากหลาย เช่น สีเปลี่ยนโดยนำเอาตำแหน่ง x ของเมาส์ มาหารด้วย 5 ค่าความสว่าง เกิดจากการสุ่ม ส่วนการเปลี่ยนขนาด นำเอาตำแหน่ง y ของเมาส์ บวกด้วย 220 แล้วหารด้วย 3 สุดท้ายบวกกับค่าสุ่ม สังเกตุการใช้บล็อกซ้อนในบล็อก เสมือนการใส่วงเล็บ นั้นคือ (((mouse y + 220) / 3) + random)

ในบล็อกทำซ้ำ (repeat) หาจำนวนครั้ง ในการหมุนให้ได้ 1 รอบ ด้วยการคำนวณ (360 / 15)

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s