วันเสาร์ที่ 8 กันยายน พ.ศ. 2555

โปรแกรมภาษาโลโก้


โปรแกรมทายตัวเลข

       หัวข้อนี้จะศึกษาเกี่ยวกับเกมทายตัวเลข โดยมีตัวอย่างการเล่นดังนี้


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

        ในการสร้างโปรแกรมควรสร้างแผนภูมิแสดงลำดับการทำงานของกระบวนความย่อยต่าง ๆ ที่เรียกว่า ต้นไม้กระบวนความ (procedure tree) เพื่อช่วยให้สามารถมองเห็นภาพรวมของโปรแกรม สามารถจัดแบ่งกระบวนความออกเป็นส่วน ๆ แสดงความเกี่ยวข้องกันระหว่างกระบวนความ ทำให้ง่ายต่อการพัฒนาโปรแกรม ในการสร้างกระบวนความ GuessNumber จะเรียกใช้กระบวนความ Instructions กระบวนความ ChooseNumber และกระบวนความ GetGuess โดยกระบวนความ GetGuess จะเรียกใช้กระบวนความ CheckGuess และกระบวนความ CheckGuess จะเรียกใช้กระบวนความ GetGuess อีกครั้ง นั่นคือ กระบวนความ CheckGuess และกระบวนความ GetGuess จะเรียกใช้ซึ่งกันและกัน จนกระทั่งมีการทายตัวเลขนั้นได้ถูกต้อง

ในกระบวนความ GuessNumber มีคำสั่งใหม่เพิ่มเติม ดังนี้
ClearText เป็นคำสั่งสำหรับลบจอภาพของหน้าต่างบังคับการ โดยจะเลื่อนเคอร์เซอร์ไปมุมบนซ้ายRandom n เป็นคำสั่งสำหรับสุ่มตัวเลขระหว่าง 0 ถึง n-1 เมื่อ n เป็นข้อมูลรับเข้า เช่น Random 5 จะทำการสุ่มเลข 0 ถึง 4
ReadList เป็นคำสั่งรอให้ผู้ใช้พิมพ์รายการ คล้ายกับ ReadWord แต่ต่างกันที่ผลของ ReadList ได้รายการ จึงต้องใช้คำสั่ง First เพื่อให้ได้ตัวเลขตัวแรกที่อยู่ในรายการ


การทำงานของกระบวนความ 

        เราเรียก GuessNumber ว่า กระบวนความใหญ่ (superprocedure) ซึ่งเรียกใช้กระบวนความย่อย (subprocedures) 3 กระบวนความ ตามลำดับดังนี้
 คำสั่งแรกของ Instructions เป็นการลบจอภาพของหน้าต่างบังคับการ และอีกสองบรรทัดต่อมาเป็นข้อความที่บอกกติกาของเกม 
ChooseNumber จะสร้างเลขสุ่มตั้งแต่ 1 ถึง 99 โดยสร้างจาก Random 99 (ค่าเลขสุ่มระหว่าง 0 ถึง 98) จึงต้องบวกด้วย 1
GetGuess จะใช้คำสั่ง Make "Guess First ReadList รับค่าตัวเลขตัวแรกของรายการ เป็นค่าของตัวแปร guess พิมพ์ค่า guess และเรียกกระบวนความย่อย CheckGuess ซึ่งมีข้อมูลรับเข้าตัวแรกเป็นตัวเลขที่ใส่โดยผู้ทาย ข้อมูลรับเข้าตัวที่สองเป็นตัวเลขที่เต่าสุ่มขึ้นมา

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


ไม่มีความคิดเห็น:

แสดงความคิดเห็น