วันพุธที่ 9 กรกฎาคม พ.ศ. 2557

4.3 คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดไว้ (goto statements)

4.3 คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดไว้ (goto  statements)
            คำสั่งที่สั่งให้ไปทำงานตามจุดที่กำหนดไว้  ส่วนมากเราไม่นิยมใช้กันเพราะทำให้การตรวจสอบการทำงานของโปรแกรมทำได้ยาก ขึ้น  เนื่องจากการใช้คำสั่ง  goto  และ  label  ทำให้การทำงานของโปรแกรมมีลักษณะกระโดดไปทำงานตามจุดที่กำหนดไว้  ทำให้การทำงานของโปรแกรมไม่ได้ทำงานจากด้านบนลงมาด้านล่างอาจเกิดความสับสน ในการทำงานของโปรแกรมได้
            4.3.1 คำสั่ง  goto  และ  label
                        goto  เป็นคำสั่งที่สั่งให้ไปทำงาน ณ  จุดที่เรากำหนด  โดยจะต้องตั้งเป็นชื่อ  label  ไว้
            รูปแบบการใช้คำสั่ง  goto  และ   label
goto  labelname;
และ
labelname:
   โดยที่
            labelname  คือ  ชื่อ  label  ที่ตั้งขึ้นเพื่อให้โปรแกรมทำงาน
หมายเหตุ 
            ควรหลีกเลี่ยงการใช้คำสั่ง  goto  และ  label  เพราะจะทำให้โปรแกรมย้ายไปทำงานในตำแหน่งต่าง ๆ ทำให้เกิดความสับสนในการตรวจสอบการทำงานของโปรแกรมได้
            เพื่อความเข้าใจการใช้คำสั่ง  goto  และ  label  มากยิ่งขึ้นควรศึกษาโปรแกรมตัวอย่างต่อไปนี้
โปรแกรมตัวอย่างที่  4.19  แสดงการใช้คำสั่ง  goto  และ  label  เพื่อกำหนดให้โปรแกรมทำงานตามชื่อ  label  ที่กำหนด


 

 
/*        gotolabe.c            */
#include<stdio.h>                                                                         /*  บรรทัดที่  1  */
#include<conio.h>                                                                        /*  บรรทัดที่  2  */
void main(void)                                                                               /*  บรรทัดที่  3  */
{                                                                                                         /*  บรรทัดที่  4  */
      int i, j, k;                                                                               /*  บรรทัดที่  5  */
      j = i = 2 ;                                                                             /*  บรรทัดที่  6  */
      clrscr( );                                                                              /*  บรรทัดที่  7  */
      loop:  k = i*j;                                                                      /*  บรรทัดที่  8  */
            printf("%d\t %d\t %d\n", j, i++, k);                   /*  บรรทัดที่  9  */
            if (i<7)                                                                  /*  บรรทัดที่  10  */
                  goto loop;                                             /*  บรรทัดที่  11  */
            else                                                                      /*  บรรทัดที่  12  */
                  goto quit;                                               /*  บรรทัดที่  13  */
      quit:  printf("\nThank You !");                                           /*  บรรทัดที่  14  */
      printf("\n\nPress any key back to program...");            /*  บรรทัดที่  15  */
      getch();                                                                               /*  บรรทัดที่  16  */
} /* end main */                                                                               /*  บรรทัดที่  17  */
 
 

ผลลัพธ์ที่ได้จากโปรแกรม

แผนผังลำดับงาน: จอภาพ: 2	2	4  2       	3	6  2	4	8  2	5	10  2	6	12    Thank You !    Press any key back to program…       

 คำอธิบายโปรแกรม
            จากโปรแกรมตัวอย่างที่  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  ก็จะกลับสู่โปรแกรม  ตามลำดับ      

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

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