4.3 คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดไว้ (goto statements)
คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดไว้
ส่วนมากเราไม่นิยมใช้กันเพราะทำให้การตรวจสอบการทำงานของโปรแกรมทำได้ยาก
ขึ้น เนื่องจากการใช้คำสั่ง goto และ label
ทำให้การทำงานของโปรแกรมมีลักษณะกระโดดไปทำงานตามจุดที่กำหนดไว้
ทำให้การทำงานของโปรแกรมไม่ได้ทำงานจากด้านบนลงมาด้านล่างอาจเกิดความสับสน
ในการทำงานของโปรแกรมได้
4.3.1 คำสั่ง goto และ label
goto เป็นคำสั่งที่สั่งให้ไปทำงาน ณ จุดที่เรากำหนด โดยจะต้องตั้งเป็นชื่อ label ไว้
goto เป็นคำสั่งที่สั่งให้ไปทำงาน ณ จุดที่เรากำหนด โดยจะต้องตั้งเป็นชื่อ label ไว้
รูปแบบการใช้คำสั่ง goto และ label
goto labelname;
และ
labelname:
labelname คือ ชื่อ label ที่ตั้งขึ้นเพื่อให้โปรแกรมทำงาน
หมายเหตุ
ควรหลีกเลี่ยงการใช้คำสั่ง goto และ label เพราะจะทำให้โปรแกรมย้ายไปทำงานในตำแหน่งต่าง ๆ ทำให้เกิดความสับสนในการตรวจสอบการทำงานของโปรแกรมได้
เพื่อความเข้าใจการใช้คำสั่ง goto และ label มากยิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างต่อไปนี้ควรหลีกเลี่ยงการใช้คำสั่ง goto และ label เพราะจะทำให้โปรแกรมย้ายไปทำงานในตำแหน่งต่าง ๆ ทำให้เกิดความสับสนในการตรวจสอบการทำงานของโปรแกรมได้
โปรแกรมตัวอย่างที่ 4.19 แสดงการใช้คำสั่ง goto และ label เพื่อกำหนดให้โปรแกรมทำงานตามชื่อ label ที่กำหนด
/* gotolabe.c */ |
||||
ผลลัพธ์ที่ได้จากโปรแกรม
คำอธิบายโปรแกรม
จากโปรแกรมตัวอย่างที่ 4.19 สามารถอธิบายการทำงานของโปรแกรมที่สำคัญ ๆ ได้ดังนี้
บรรทัดที่ 8 และ 14 คำสั่ง loop : และ quit : คือ การกำหนดชื่อ label ชื่อว่า loop และ quit ตามลำดับ
บรรทัดที่ 11 คำ สั่ง goto loop; เพื่อกำหนดให้โปรแกรมไปทำงานยัง label ที่ชื่อว่า loop ในกรณีที่คำสั่ง if (i < 7) ในบรรทัดที่ 10 เป็นจริง แต่ถ้าเป็นเท็จ จะไปทำคำสั่งบรรทัดที่ 12 และ 13
บรรทัดที่ 12 และ 13 ใน กรณีที่คำสั่ง if บรรทัดที่ 10 เป็นเท็จจะมาทำงานที่คำสั่งบรรทัดที่ 13 คือ goto quit; เป็นการกำหนดให้โปรแกรมไปทำงานยัง label ที่ชื่อว่า quit
บรรทัดที่ 14 คำ สั่ง quit : printf (“ \n Thank You ! “); คือ label ที่มีชื่อ quit ซึ่ง label นี้จะพิมพ์คำว่า Thank You ! แสดงที่จอภาพ
บรรทัดที่ 15 และ 16 ภาย หลังจากทำงานข้างต้นที่กล่าวมาแล้ว โปรแกรมจะพิมพ์ข้อความให้กดคีย์ใด ๆ เพื่อกลับสู่โปรแกรม สุดท้ายจะหยุดรอรับค่าใด ๆ จากคีย์บอร์ด เช่น ถ้ากด enter ก็จะกลับสู่โปรแกรม ตามลำดับ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น