การเขียนคำสั่งควบคุมแบบวนซ้ำ ppt
Post on 19-May-2015
175 Views
Preview:
TRANSCRIPT
บทท�� 4 การเขี�ยนคำ าสั่��งคำวบคำ�มแบบวนซ้ำ �า
ภาษา C ม�คำ าสั่��งท��ใช้�คำวบคำ�มการท างานขีองโปรแกรมดั�งน��
คำ าสั่��งวนลู#ปหร%อท างานซ้ำ �า ๆ เป'นลู#ป (loop
statement)
คำ าสั่��งวนลู#ปหร%อท างานซ้ำ �า ๆ เป'นลู#ป (loop statement) คำ��สั่��งวนลู�ปเป�นคำ��สั่��งที่��สั่�ม�รถคำวบคำ�มโปรแกรมให้�ที่��ง�นเป�นจำ��นวนรอบต�มที่��เร�ก��ห้นดไว� ห้ร#อที่��ง�นจำนกว$�เง#�อนไขที่��ก��ห้นดไว�เป�นเที่&จำ จำ'งจำะออกจำ�กคำ��สั่��งวนลู�ปได� 1.คำ าสั่��ง for for เป�นคำ��สั่��งที่��สั่� �งให้�โปแกรมม�ก�รที่��ง�นซ้ำ�*� ๆ วนลู�ปจำนกว$�เง#�อนไขที่��ก��ห้นดไว�เป�นเที่&จำ จำ'งออกจำ�กคำ��สั่��ง for ไปที่��คำ��สั่��งถ�ดไป คำวรใช้�คำ��สั่��ง for ในกรณี�ที่��ที่ร�บจำ��นวนรอบของก�รที่��ง�น ร#ปแบบการใช้�คำ าสั่��ง for โดยที่�� for (expression1; expression2; expression3) expression1 คำ#อ น/พจำน1ที่��ใช้�ก��ห้นดคำ$�เร/�มต�นให้�ก�บต�วแปรที่��จำะใช้� statement; วนลู�ปห้ร#อ expression2 คำ#อ น/พจำน1ที่��ใช้�ที่ดสั่อบเง#�อนไข ซ้ำ'�งจำะม�คำ$�จำร/งห้ร#อ for (expression1; expression2; expression3) เที่&จำอย$�งใดอย$�งห้น'�งเที่$�น�*น{ expression3 คำ#อ น/พจำน1ที่��ใช้�เพ/�มห้ร#อลูดคำ$�ต�วแปรที่��จำะใช้�วนลู�ปstatement(s); tatement(s) คำ#อ คำ��สั่��งต$�ง ๆ ถ��ม�ม�กกว$� 1 คำ��สั่��ง จำะต�องเข�ยนอย�$} ภ�ยในเคำร#�องห้ม�ย {….}
ลู�กษณะการท างานขีองคำ าสั่��ง for สั่�ม�รถเข�ยนเป�นแผนผ�งได�ด�งน�*
ร#ปท�� 4.1 ผ�งง�นแสั่ดงลู�กษณีะก�รที่��ง�นของคำ��สั่��ง for
โปรแกรมตั�วอย+าง แสั่ดงก�รใช้�คำ��สั่��ง for เพ#�อวนแสั่ดงต�วเลูข 1 ถ'ง 10 ออกแสั่ดงที่��จำอภ�พ /* for1.c */#include<stdio.h> /* บรรที่�ดที่�� 1 */#include<conio.h> /* บรรที่�ดที่�� 2 */void main(void)
/* บรรที่�ดที่�� 3 */{ /* บรรที่�ดที่�� 4 */ int num; /* บรรที่�ดที่�� 5 */ clrscr( ); /* บรรที่�ดที่�� 6 */ for (num=1; num<=10; num++) /* บรรที่�ดที่�� 7 */ printf( "%3d\n", num); /* end for */ /* บรรที่�ดที่�� 8 */ printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 9 */ getch(); /* บรรที่�ดที่�� 10 */} /* บรรที่�ดที่�� 11 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�งสั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*
บรรท�ดัท�� 7 คำ��สั่��ง for (num = 1; num <=10; num++) จำะเร/�มที่��ง�นโดยก�รก��ห้นดคำ$�เร/�มต�นต�วแปร num เป�น 1 จำ�กน�*นที่ดสั่อบเง#�อนไข num <= 10 จำร/งห้ร#อเที่&จำ ถ��เป�นจำร/งจำะที่��ง�นต�มคำ��สั่��งบรรที่�ดที่�� 8 ถ��เป�นเที่&จำออกจำ�ก for ไปที่��คำ��สั่��งบรรที่�ดที่�� 9บรรท�ดัท�� 8 ฟั8งก1ช้�น printf( ) เพ#�อพ/มพ1คำ$�ของต�วแปร num ในแต$ลูะรอบของก�รที่��ง�น แลูะข'*นบรรที่�ดให้ม$ด�วย ออกแสั่ดงที่��จำอภ�พบรรท�ดัท�� 9 ฟั8งก1ช้�น printf( ) แสั่ดงข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรมบรรท�ดัท�� 10 ห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม
2.คำ าสั่��ง while while เป�นคำ��สั่��งที่��ม�ก�รที่��ง�นซ้ำ�*� ๆ เป�นลู�ป แลูะม�ลู�กษณีะก�รที่��ง�นของคำ��สั่��งคำลู��ยก�บคำ��สั่��ง for แตกต$�งก�นตรงที่�� ก�รใช้� while ไม$ต�องที่ร�บจำ��นวนรอบของก�รที่��ง�นที่��แน$นอน แต$ต�องม�เง#�อนไขที่��เป�นเที่&จำจำ'งจำะออกจำ�กคำ��สั่��ง while ได�ร#ปแบบการใช้�คำ าสั่��ง whilewhile (expression) statement; ห้ร#อwhile (expression){statement(s);} โดยที่�� expression คำ#อ น/พจำน1ที่��ใช้�ที่ดสั่อบเง#�อนไข ถ��น/พจำน1น�*ให้�ผลูลู�พธิ1เป�นจำร/งจำะที่��ต�มคำ��สั่��งที่��อย�$ภ�ยในคำ��สั่��ง while จำนกว$�เง#�อนไขเป�นเที่&จำจำ'งออกจำ�กคำ��สั่��ง while ได�
ลู�กษณะการท างานขีองคำ าสั่��ง while สั่�ม�รถเข�ยนเป�นแผนผ�งได�ด�งน�*
โปรแกรมตั�วอย+าง แสั่ดงก�รใช้�คำ��สั่��ง while เพ#�อวนคำ��นวณีคำ$�สั่ะสั่มต�วเลูข 1 ถ'ง 10 แลูะห้�คำ$�เฉลู��ย แลู�วแสั่ดงผลูออกจำอภ�พ /* while1.c */#include<stdio.h> /* บรรที่�ดที่�� 1 */#include<conio.h> /* บรรที่�ดที่�� 2 */void main(void) /* บรรที่�ดที่�� 3 */{ /* บรรที่�ดที่�� 4 */ int n=1; /* บรรที่�ดที่�� 5 */ float sum =0 , avg; /* บรรที่�ดที่�� 6 */ clrscr( ); /* บรรที่�ดที่�� 7 */ while ( n < 11 ) /* บรรที่�ดที่�� 8 */ { /* บรรที่�ดที่�� 9 */ sum+=n; /* บรรที่�ดที่�� 10 */ n++; /* บรรที่�ดที่�� 11 */ } /* end while */ /* บรรที่�ดที่�� 12 */ n--; /* บรรที่�ดที่�� 13 */ avg = sum/n; /* บรรที่�ดที่�� 14 */ printf("N = %d, Sum = %.2f\n",n, sum); /* บรรที่�ดที่�� 15 */ printf("Average = %.2f", avg); /* บรรที่�ดที่�� 16 */ printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 17 */ getch(); /* บรรที่�ดที่�� 18 */} /* บรรที่�ดที่�� 19 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�ง สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 8 คำ��สั่��ง while (n < 11) เพ#�อคำวบคำ�มก�รที่��ง�นของโปรแกรมให้�ที่��ง�นซ้ำ�*� ๆ ก�น โดยก�รที่��ง�นของคำ��สั่��ง while จำะตรวจำสั่อบเง#�อนไข n < 11 เป�นจำร/งห้ร#อเที่&จำ ถ��เป�นจำร/งจำะที่��ง�นต�มคำ��สั่��งที่��อย�$ภ�ยใน loop while คำ#อ บรรที่�ดที่�� 10 แลูะ 11 จำ�กน�*นจำะกลู�บม�ตรวจำสั่อบเง#�อนไขให้ม$ ที่��อย$�งน�*ซ้ำ�*� ๆ จำนกว$�ตรวจำสั่อบเง#�อนไข n < 11 เป�นเที่&จำ จำ'งจำะออกจำ�ก loop while แลู�วไปที่��คำ��สั่��งบรรที่�ดที่�� 13 ถ'ง คำ��สั่��งบรรที่�ดที่�� 18บรรท�ดัท�� 10 แลูะ 11 เป�นคำ��สั่��งที่��โปรแกรมจำะที่��ง�นภ�ยห้ลู�งจำ�กตรวจำสั่อบเง#�อนไข while แลู�วเป�นจำร/ง น��นคำ#อ คำ��นวณีคำ$�สั่ะสั่มของต�วแปร sum แลูะ เพ/�มคำ$� n ที่�ลูะ 1 ต�มลู��ด�บบรรท�ดัท�� 13 ถึ4ง 18 เป�นคำ��สั่��งที่��โปรแกรมจำะที่��ง�นภ�ยห้ลู�งจำ�กตรวจำสั่อบเง#�อนไข while แลู�วเป�นเที่&จำ คำ#อ ลูดคำ$�ต�วแปร n ลูง 1 แลู�วคำ��นวณีคำ$�เฉลู��ยเก&บไว�ที่��ต�วแปร avg แลูะพ/มพ1คำ$�ต�วแปร n, sum แลูะ avg แสั่ดงที่��จำอภ�พ พร�อมก�บพ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม สั่�ดที่��ยจำะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม
3.คำ าสั่��ง do while do while เป�นคำ��สั่��งที่��ม�ก�รที่��ง�นซ้ำ�*� ๆ วนลู�ป คำลู��ยก�บคำ��สั่��ง while ม�ก แตกต�งก�นตรงที่��คำ��สั่��ง do while จำะที่ดสั่อบเง#�อนไขห้ลู�งจำ�กที่��ได�ที่��ง�นต�มคำ��สั่��งภ�ยในลู�ปไปแลู�ว 1 รอบ จำ�กน�*นจำ'งคำ$อยย�อนกลู�บม�ที่ดสั่อบเง#�อนไขอ�กคำร�*งห้น'�ง ถ��เง#�อนไขเป�นจำร/งก&จำะที่��ง�นต�มคำ��สั่��งภ�ยในลู�ป แต$ถ��เง#�อนไขเป�นเที่&จำจำะออกจำ�กคำ��สั่��ง do while ที่�นที่�ร#ปแบบการใช้�คำ าสั่��ง do whiledo{statement(s);} while (expression);
*ขี�อคำวรระว�งในการใช้�คำ าสั่��ง do whileคำวรระว�งเง#�อนไขของคำ��สั่��ง do while ต�องพ/จำ�รณี�ให้�ด�ว$�ม�ที่�*งกรณี�ที่��เป�นจำร/งแลูะเที่&จำอย�$ห้ร#อไม$ ถ��ม�อย�$ที่� *ง 2 กรณี� แสั่ดงว$�ใช้�คำ��สั่��งน�*ได�ถ�กต�องต�มไวย�กรณี1ของคำ��สั่��งน�* ถ��ม�เฉพ�ะกรณี�ที่��เง#�อนไขเป�นจำร/งเที่$�น�*นแสั่ดงว$�เก/ดลู�กษณีะก�รที่��ง�นวนลู�ป (looping) ไม$ม�ที่�งออกจำ�กคำ��สั่��งน�* ในที่��นองกลู�บก�นถ��เง#�อนไขเป�นเที่&จำอย$�งเด�ยว จำะที่��คำ��สั่��ง do while เพ�ยงคำร�*งเด�ยว
ลู�กษณะการท างานขีองคำ าสั่��ง do while สั่�ม�รถเข�ยนเป�นแผนผ�งได�ด�งน�*
โปรแกรมตั�วอย+าง แสั่ดงก�รใช้�คำ��สั่��ง do while เพ#�อวนลู�ปแสั่ดง main memu ให้�ผ��ใช้�เลู#อกเมน� ไปเร#�อย ๆ จำนกว$�เลู#อกเมน�ที่�� 5 ถ'งจำะออกจำ�กโปรแกรม /*dowhile1.c */ #include<stdio.h> /* บรรที่�ดที่�� 1 */#include<conio.h>
/* บรรที่�ดที่�� 2 */void main(void) /* บรรที่�ดที่�� 3 */{
/* บรรที่�ดที่�� 4 */char choice;
/* บรรที่�ดที่�� 5 */clrscr();
/* บรรที่�ดที่�� 6 */do {
/* บรรที่�ดที่�� 7 */printf("\n\n******* MAIN MENU *******\n"); /* บรรที่�ดที่�� 8 */printf("*************************\n\n"); /* บรรที่�ดที่�� 9 */printf("1. Create New File\n"); /* บรรที่�ดที่�� 10 */printf("2. Use an Old File\n"); /* บรรที่�ดที่�� 11 */printf("3. Edit data record in File \n"); /* บรรที่�ดที่�� 12 */printf("4. Append data record in File\n"); /* บรรที่�ดที่�� 13 */printf("5. Exit Program\n"); /* บรรที่�ดที่�� 14 */printf("Enter your choice(1,2,3,4,5): "); /* บรรที่�ดที่�� 15 */choice=getche(); /* บรรที่�ดที่�� 16 */}while(choice != '5');
/* บรรที่�ดที่�� 17 */}
/* บรรที่�ดที่�� 18 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�ง สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 7 คำ��สั่��ง do จำะคำวบคำ�มก�รที่��ง�นของโปรแกรม ให้�ที่��ต�มคำ��สั่��งที่��อย�$ภ�ยใน loop do คำ#อคำ��สั่��งภ�ยในเคำร#�องห้ม�ย { } บรรที่�ดที่�� 8 ถ'ง 16 ซ้ำ'�งจำะที่��อย$�งน�อย 1 รอบ ห้ลู�งจำ�กน�*นคำ$อยไปตรวจำสั่อบเง#�อนไข while ในบรรที่�ดที่�� 17 ถ��เป�นจำร/งจำะกลู�บม�ที่��คำ��สั่��งใน loop อ�กคำร�*ง แต$ถ��เป�นเที่&จำก&จำะออกจำ�กโปรแกรม แลูะสั่/*นสั่�ดก�รที่��ง�นบรรท�ดัท�� 17 คำ��สั่��ง while (choice!=‘5‘); จำะตรวจำสั่อบคำ$�ที่��ร �บเข��ม�จำ�กคำ�ย1บอร1ด ซ้ำ'�งจำะเก&บไว�ในต�วแปร choice แลูะคำ$�ที่��ร �บเข��ม�จำะเป�นช้น/ดอ�กขระ ตรวจำสั่อบว$�ไม$เที่$�ก�บ ต�วอ�กขระ 5 จำร/งห้ร#อเที่&จำ (‘5‘ คำว�มห้ม�ยเป�นต�วอ�กขระไม$ใช้$ต�วเลูข ซ้ำ'�งเวลู�ตรวจำสั่อบเง#�อนไข ต�วด��เน/นก�รที่�งคำณี/ตศ�สั่ตร1 ข�อม�ลูที่��จำะตรวจำสั่อบต�องเป�นช้น/ดเด�ยวก�น) ม�เง#�อนไขที่��จำะเป�นเที่&จำอย�$กรณี�เด�ยว คำ#อ เต/ม 5 จำะที่��ให้� ‘5‘ != 5 เป�นเที่&จำ ก&จำะออกจำ�ก loop แลูะจำบก�รที่��ง�น
4.คำ าสั่��ง breakbreak เป�นคำ��สั่��งที่��สั่� �งให้�ออกจำ�กคำ��สั่��ง for ห้ร#อ while ห้ร#อ
do while ห้ร#อคำ��สั่��ง switchโปรแกรมตั�วอย+าง แสั่ดังการใช้�คำ าสั่��ง break คำวบคำ�$ก�บคำ��สั่��ง for /* break.c */ #include<stdio.h>
/* บรรที่�ดที่�� 1 */#include<conio.h>
/* บรรที่�ดที่�� 2 */void main(void)
/* บรรที่�ดที่�� 3 */{
/* บรรที่�ดที่�� 4 */int j;
/* บรรที่�ดที่�� 5 */clrscr();
/* บรรที่�ดที่�� 6 */for (j=1; j<=20; j++) {
/* บรรที่�ดที่�� 7 */printf("%d\t",j);
/* บรรที่�ดที่�� 8 */if (j==10) break; /* break when j==10 */ /* บรรที่�ดที่�� 9 */} /* end for */ /* บรรที่�ดที่�� 10 */printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 11 */getch();
/* บรรที่�ดที่�� 12 */}
/* บรรที่�ดที่�� 13 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�ง สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 7 คำ��สั่��ง for (j = 1; j <=20; j++) ต�องก�รให้�โปรแกรมวนที่��ง�นพ/มพ1คำ$�ของต�วแปร j ต�*งแต$ 1 ถ'ง โดยแต$ลูะคำ$�ให้�ห้$�งก�น 1 tabบรรท�ดัท�� 9 คำ��สั่��ง if (j == 10) break; จำะตรวจำสั่อบคำ$�ต�วแปร j ว$�เที่$�ก�บ 10 ห้ร#อไม$ ถ��เที่$�ก�บ 10 ให้�ห้ย�ดก�รที่��ง�น (break) แลูะออกจำ�ก loop for ด�งน�*นโปรแกรมน�*จำะไม$ได�พ/มพ1ต�วเลูข 1 ถ'ง 20 เพร�ะพบคำ��สั่��ง break แต$จำะพ/มพ1ต�วเลูข 1 ถ'ง 10บรรท�ดัท�� 11 แลูะ 12 เป�นคำ��สั่��งที่��จำะที่��ง�นภ�ยห้ลู�งจำ�กตรวจำสั่อบเง#�อนไข for ในบรรที่�ดที่�� 7 แลู�วได�คำ$�เที่&จำ น��นคำ#อ พ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม แลูะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม
5.คำ าสั่��ง continues continue เป�นคำ��สั่��งที่��สั่� �งให้�กลู�บไปที่��ง�นที่��คำ��สั่��งแรกของลู�ปคำ��สั่��ง for ห้ร#อ while ห้ร#อ do while ที่��ให้�ม�ก�รที่��ง�นในรอบต$อไปโปรแกรมตั�วอย+าง แสั่ดังการใช้�คำ าสั่��ง continue คำวบคำ�$ก�บคำ��สั่��ง for/*continue.c*/#include<stdio.h>
/* บรรที่�ดที่�� 1 */#include<conio.h>
/* บรรที่�ดที่�� 2 */void main(void)
/* บรรที่�ดที่�� 3 */{
/* บรรที่�ดที่�� 4 */int j;
/* บรรที่�ดที่�� 5 */clrscr();
/* บรรที่�ดที่�� 6 */for( j=1; j<=20; j++ ){
/* บรรที่�ดที่�� 7 */printf("%d\t",j);
/* บรรที่�ดที่�� 8 */if (j==5) { j=j+10; continue; }
/* บรรที่�ดที่�� 9 */}
/* บรรที่�ดที่�� 10 */printf("\n\nPress any key back to program...");
/* บรรที่�ดที่�� 11 */getch();
/* บรรที่�ดที่�� 12 */}
/* บรรที่�ดที่�� 13 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�ง สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 7 คำ��สั่��ง for (j=1; j<=20; j++) ต�องก�รให้�โปรแกรมวนที่��ง�นพ/มพ1คำ$�ของต�วแปร j ต�*งแต$ 1 ถ'ง 20 โดยแต$ลูะคำ$�ให้�ห้$�งก�น 1 tabบรรท�ดัท�� 9 คำ��สั่��ง if (j==5) {j=j+10; continue;} จำะตรวจำสั่อบคำ$�ต�วแปร j ว$�เที่$�ก�บ 5 ห้ร#อไม$ ถ��เที่$�ก�บ 5 ให้�เพ/�มคำ$� j ไป 10 แลู�วกลู�บไปที่��ง�น (continue) คำ��สั่��งบรรที่�ดที่�� 7 คำ#อ เพ/�มคำ$� j อ�ก 1 เป�น 16 ด�งน�*นโปรแกรมน�*จำะไม$ได�พ/มพ1ต�วเลูข 1 ถ'ง 20 ที่�กต�ว แต$จำะข��มต�วเลูขช้$วง 6 ถ'ง 15 ไปบรรท�ดัท�� 11 แลูะ 12 เป�นคำ��สั่��งที่��จำะที่��ง�นภ�ยห้ลู�งจำ�กตรวจำสั่อบเง#�อนไข for ในบรรที่�ดที่�� 7 แลู�วได�คำ$�เที่&จำ น��นคำ#อ พ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม แลูะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม
คำ าสั่��งทดัสั่อบเง%�อนไขีเพ%�อการตั�ดัสั่2นใจ (decision statements)
คำ าสั่��งทดัสั่อบเง%�อนไขีเพ%�อการตั�ดัสั่2นใจ (decision statements) คำ��สั่��งที่ดสั่อบเง#�อนไขเพ#�อก�รต�ดสั่/นใจำ เป�นคำ��สั่��งที่��ม�ก�รที่ดสั่อบเง#�อนไขก$อนที่��จำะที่��ง�นต�มคำ��สั่��งที่��ก��ห้นดไว� ซ้ำ'�งได�แก$คำ��สั่��ง if, if else, โคำรงสั่ร��ง else if (ห้ร#อ nested if) แลูะคำ��สั่��ง switch 1. คำ าสั่��ง ifif เป�นคำ��สั่��งที่��สั่� �งให้�ม�ก�รที่ดสั่อบเง#�อนไขก$อนที่��จำะไปที่��ง�นต�มคำ��สั่��งที่��ก��ห้นดไว�ร#ปแบบการใช้�คำ าสั่��ง if
if (expression) statement; ห้ร#อif (expression){statement(s);}โดัยท�� expression คำ%อ น2พจน/เง%�อนไขี ซ้ำ4�งจะม�คำ+าจร2งหร%อเท5จอย+างใดัอย+างหน4�งเท+าน��น ถึ�าเง%�อนไขีเป'นจร2ง จะท างานตัามคำ าสั่��งท��อย#+ใน if จากน��นก5ออกจากคำ าสั่��ง if ไปท าคำ าสั่��งถึ�ดัไป ถึ�าเง%�อนไขีเป'นเท5จจะออกจากคำ าสั่��ง if ท�นท�
ลู�กษณีะก�รที่��ง�นของคำ��สั่��ง if สั่�ม�รถเข�ยนเป�นแผนผ�งได�ด�งน�*
โปรแกรมตั�วอย+างท�� 4.12 แสั่ดงก�รใช้�คำ��สั่� �ง if เพ#�อตรวจำสั่อบคำ$�ที่��ร�บจำ�กคำ�ย1บอร1ด/* if1.C. */#include <stdio.h> /* บรรที่�ดที่�� 1 */#include <conio.h> /* บรรที่�ดที่�� 2 */#include <ctype.h> /* บรรที่�ดที่�� 3 *//*Capitalize Keys read from The Keyboard */ /* บรรที่�ดที่�� 4 */main() /* บรรที่�ดที่�� 5 */{ /* บรรที่�ดที่�� 6 */char any_char; /* บรรที่�ดที่�� 7 */clrscr(); /* บรรที่�ดที่�� 8 */printf("Please type a lowercase letter : "); /* บรรที่�ดที่�� 9 */ scanf("%c", &any_char); /* บรรที่�ดที่�� 10 */ if(any_char >= 'a') /* บรรที่�ดที่�� 11 */ printf("In uppercase: %c \n", toupper(any_char)); /* บรรที่�ดที่�� 12 */ getch(); /* บรรที่�ดที่�� 13 */ return(0); /* บรรที่�ดที่�� 14 */} /* บรรที่�ดที่�� 15 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�งที่�� 4.12 สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 3 #include <ctype.h> ให้�ก�รสั่น�บสั่น�นฟั8งก1ช้�น toupper( ) ในบรรที่�ดที่�� 12 บรรท�ดัท�� 4 เป�นคำ��อธิ/บ�ยโปรแกรมเพ#�อบอกให้�ที่ร�บว$�เป�นโปรแกรมที่��แปลูงต�วอ�กขระที่��ร �บเข��ม�ให้�เป�นต�วพ/มพ1ให้ญ$ บรรท�ดัท�� 9 แลูะ 10 พ/มพ1ข�อคำว�มแนะน��ให้�ผ��ใช้� พ/มพ1ต�วพ/มพ1เลู&ก แลู�วร�บเข��ม�เก&บไว�ในต�วแปร any_char ต�มลู��ด�บบรรท�ดัท�� 11 คำ��สั่��ง if (any_char >= ‘a’) ตรวจำสั่อบอ�กขระที่��เก&บในต�วแปร any_char ที่��ร �บเข��ม�จำ�กคำ�ย1บอร1ด ว$�ม�คำ$�ม�กกว$�ห้ร#อเที่$�ก�บ ‘a‘ น��นคำ#อตรวจำสั่อบว$�เป�นต�วพ/มพ1เลู&กห้ร#อไม$ ถ��ใช้$ให้�ไปที่��ง�นคำ��สั่��งบรรที่�ดที่�� 12บรรท�ดัท�� 12 คำ��สั่��งที่��ให้�ที่��ภ�ยห้ลู�งจำ�กตรวจำสั่อบเง#�อนไข if แลู�วได�คำ$�เป�นจำร/ง คำ#อ เร�ยกใช้�ฟั8งก1ช้�น toupper( ) เพ#�อแปลูงต�วพ/มพ1เลู&กที่��เก&บไว�ในต�วแปร any_char เป�นต�วพ/มพ1ให้ญ$ คำ#อ toupper (any_char); แสั่ดงออกที่��จำอภ�พ แลู�วห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม
คำ าสั่��ง if else if else เป�นคำ��สั่��งที่��สั่� �งให้�ม�ก�รที่ดสั่อบเง#�อนไข โดยม�ก�รต�ดสั่/นใจำแบบ 2 ที่�งเลู#อกร#ปแบบการใช้�คำ าสั่��ง if else
if (expression) { statementA(s);}else { statementB(s);} จำ�กร�ปแบบก�รใช้�คำ��สั่��ง if else ห้ม�ยคำว�มว$� ถ��น/พจำน1เง#�อนไข (expression) ม�คำ$�เป�นจำร/งจำะที่��ต�มคำ��สั่��งช้�ด A (statementA(s);) ถ��ม�คำ$�เป�นเที่&จำจำะที่��ต�มคำ��สั่��งช้�ด B (statementB(s);) เม#�อที่��เสั่ร&จำก&ออกจำ�กคำ��สั่��งน�*
ลู�กษณะการท างานขีองคำ าสั่��ง if else สั่�ม�รถเข�ยนเป�นแผนผ�งได�ด�งน�*
โปรแกรมตั�วอย+างท�� 4.14 แสั่ดงก�รใช้�คำ��สั่��ง if else เพ#�อตรวจำสั่อบคำ$�ที่��ร �บจำ�กคำ�ย1บอร1ด/* if_else1.c */#include <stdio.h> /* บรรที่�ดที่�� 1 */#include <conio.h> /* บรรที่�ดที่�� 2 */#include <ctype.h> /* บรรที่�ดที่�� 3 *//*Capitalize Keys read from The Keyboard */ /* บรรที่�ดที่�� 4 */main() /* บรรที่�ดที่�� 5 */{ /* บรรที่�ดที่�� 6 */ char any_char; /* บรรที่�ดที่�� 7 */ clrscr(); /* บรรที่�ดที่�� 8 */ printf("Please type a lowercase letter : "); /* บรรที่�ดที่�� 9 */ scanf("%c",&any_char); /* บรรที่�ดที่�� 10 */ if(any_char < 'a') /* บรรที่�ดที่�� 11 */ printf("Sorry, I can not capitalize that.\n"); /* บรรที่�ดที่�� 12 */ else /* บรรที่�ดที่�� 13 */ printf("Thank you. In uppercase : %c.",toupper (any_char)); /* บรรที่�ดที่�� 14 */ printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 15 */ getch(); /* บรรที่�ดที่�� 16 */return(0); /* บรรที่�ดที่�� 17 */} /* บรรที่�ดที่�� 18 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม กรณ�ท��เตั2มตั�วอ�กษรพ2มพ/เลู5ก
กรณ�ท��เตั2มตั�วอ�กษรพ2มพ/ใหญ่+
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�งที่�� 4.14 สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 11 แลูะ 12 คำ��สั่��ง if (any_char < ‘a’) ตรวจำสั่อบอ�กขระที่��ร �บเข��ม�ว$�ม�คำ$�น�อยกว$� ‘a’ ห้ร#อไม$ ถ��ใช้$ให้�พ/มพ1ข�อคำว�ม Sorry, I can not capitalize that. น��นคำ#อตรวจำสั่อบต�วอ�กขระที่��ร �บเข��ม�ว$�ใช้$ต�วอ�กขระพ/มพ1ให้ญ$ห้ร#อไม$ แต$ถ��ไม$ใช้$ ให้�ไปที่��คำ��สั่��งบรรที่�ดที่�� 13 บรรท�ดัท�� 13 else คำ#อ เง#�อนไขบรรที่�ดที่�� 11 เป�นเที่&จำ (กรณี�ที่��ต�วอ�กขระเป�นต�วพ/มพ1เลู&ก) ให้�ที่��คำ��สั่��งบรรที่�ดที่�� 14 คำ#อ เปลู��ยนต�วพ/มพ1เลู&กให้�เป�นต�วพ/มพ1ให้ญ$ ด�วยฟั8งก1ช้�น toupper( ) แลูะ แสั่ดงออกจำอภ�พบรรท�ดัท�� 15 แลูะ 16 พ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม แลูะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม ต�มลู��ด�บ
คำ าสั่��งโคำรงสั่ร�าง else if (คำ าสั่��ง nested if) else if เป�นโคำรงสั่ร��งที่��ที่��ให้�เร�สั่�ม�รถใช้�คำ��สั่��ง if else ซ้ำ�อนก�นได�เร#�อย ๆ สั่$วนม�กจำะใช้�ในก�รต�ดสั่/นใจำที่��ม�กกว$� 2 ที่�งเลู#อกข'*นไป บ�งคำร�*งอ�จำเร�ยกโคำรงสั่ร��งน�*ว$� nested if ร#ปแบบการใช้�โคำรงสั่ร�าง nested if หร%อ else ifelse if (expression) { statementA(s);}else if (expression){ statementB(s);}else if (expression){ ขี�อคำวรระว�งในการใช้� nested ifก�รเข�ยนคำ��สั่��ง nested if คำ$อนข��งย�$งย�ก อ�จำเก/ดคำว�มสั่�บสั่นได� คำวรเข�ยนคำ��สั่��ง nested if ให้�เย#*องก�นเพ#�อคำว�มสั่ะดวกในก�รแก�ไขคำ��สั่��งในภ�ยห้ลู�ง
โปรแกรมตั�วอย+างท�� 4.16 แสั่ดงก�รใช้�คำ��สั่��ง nested if เพ#�อตรวจำสั่อบคำะแนนที่��ผ��ใช้�เต/ม แลู�วให้�เกรดต�มเง#�อนไขที่��ก��ห้นดในโปรแกรม/* nestif1.c */#include<stdio.h> /* บรรที่�ดที่�� 1 */#include<conio.h> /* บรรที่�ดที่�� 2 */#include<stdlib.h> /* บรรที่�ดที่�� 3 */void main(void) /* บรรที่�ดที่�� 4 */{ /* บรรที่�ดที่�� 5 */ int score, n, i; /* บรรที่�ดที่�� 6 */ char grade; /* บรรที่�ดที่�� 7 */ char numstr[20]; /* บรรที่�ดที่�� 8 */ clrscr( ); /* บรรที่�ดที่�� 9 */ printf("Enter Number of Students : "); /* บรรที่�ดที่�� 10 */ n = atoi(gets(numstr)); /* บรรที่�ดที่�� 11 */ for ( i=1; i<=n; i++ ){ /* บรรที่�ดที่�� 12 */ printf("\nEnter score of student #%d : ", i); /* บรรที่�ดที่�� 13 */ score = atoi(gets(numstr)); /* บรรที่�ดที่�� 14 */
if ( score >= 80 ) /* บรรที่�ดที่�� 15 */ grade = 'A'; /* บรรที่�ดที่�� 16 */ else if ( score >= 70 ) /* บรรที่�ดที่�� 17 */ grade = 'B'; /* บรรที่�ดที่�� 18 */ else if ( score >= 60 ) /* บรรที่�ดที่�� 19 */ grade = 'C'; /* บรรที่�ดที่�� 20 */ else if ( score >= 50 ) /* บรรที่�ดที่�� 21 */ grade = 'D'; /* บรรที่�ดที่�� 22 */ else grade = 'F'; /* บรรที่�ดที่�� 23 */ printf("Score = %d, Grade of std #%d is %c\n",score,i,grade); /* บรรที่�ดที่�� 24 */} /* end for */ /* บรรที่�ดที่�� 25 */printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 26 */getch(); /* บรรที่�ดที่�� 27 */} /* บรรที่�ดที่�� 28 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�งที่�� 4.16 สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 3 #include <stdlib.h> สั่น�บสั่น�นก�รใช้�ฟั8งก1ช้�น atoi( ) ของคำ��สั่��งบรรที่�ดที่�� 11บรรท�ดัท�� 10 แลูะ 11 ร�บคำ$�ต�วเลูขที่��เป�นจำ��นวนน�กเร�ยน แลู�วที่��คำ��สั่��ง n = atoi(gets(numstr)); คำ#อน��คำ$�ที่��ร �บเข��ม�แปลูงให้�เป�นจำ��นวนเต&มแลู�วเก&บไว�ที่��ต�วแปร nบรรท�ดัท�� 12 คำ��สั่��ง for (i=1; i<=n; i++) เพ#�อคำวบคำ�มก�รที่��ง�นของโปรแกรมให้�วนรอบที่��ง�นต�มจำ��นวนของต�วเลูขที่��เต/มคำ#อ n คำร�*ง ซ้ำ'�งถ��ตรวจำสั่อบเง#�อนไข for แลู�วเป�นจำร/งจำะที่��คำ��สั่��งภ�ยใน loop for คำ#อคำ��สั่��งบรรที่�ดที่�� 13 ถ'ง 24 แต$ถ��ตรวจำสั่อบเง#�อนไข for แลู�วเป�นเที่&จำ จำะไปที่��คำ��สั่��งบรรที่�ดที่�� 26 แลูะ 27บรรท�ดัท�� 13 แลูะ 14 ร�บคำ$�คำะแนนที่��ผ��ใช้�เต/ม แลู�วแปลูงให้�เป�นจำ��นวนเต&มเก&บไว�ที่��ต�วแปร score ต�มลู��ด�บบรรท�ดัท�� 15 คำ��สั่��ง if ( score >= 80 ) ตรวจำสั่อบเง#�อนไขของต�วแปร score ว$�ม�กกว$�ห้ร#อเที่$�ก�บ 80 ห้ร#อไม$ ถ��ใช้$ให้�ก��ห้นดต�วแปร grade เก&บ A แต$ถ��ไม$ใช้$ให้�ไปที่��ง�นคำ��สั่��งบรรที่�ดที่�� 17
บรรท�ดัท�� 17 คำ��สั่��ง else if ( score >= 70 ) ตรวจำสั่อบเง#�อนไขต$ออ�กว$�ต�วแปร score ว$�ม�กกว$�ห้ร#อเที่$�ก�บ 70 ห้ร#อไม$ ถ��ใช้$ให้�ก��ห้นดต�วแปร grade เก&บ B แต$ถ��ไม$ใช้$ให้�ไปที่��ง�นคำ��สั่��งบรรที่�ดที่�� 19บรรท�ดัท�� 19 คำ��สั่��ง else if ( score >= 60 ) ตรวจำสั่อบเง#�อนไขต$ออ�กว$�ต�วแปร score ว$�ม�กกว$�ห้ร#อเที่$�ก�บ 60 ห้ร#อไม$ ถ��ใช้$ให้�ก��ห้นดต�วแปร grade เก&บ C แต$ถ��ไม$ใช้$ให้�ไปที่��ง�นคำ��สั่��งบรรที่�ดที่�� 21บรรท�ดัท�� 21 คำ��สั่��ง else if ( score >= 50 ) ตรวจำสั่อบเง#�อนไขต$ออ�กว$�ต�วแปร score ว$�ม�กกว$�ห้ร#อเที่$�ก�บ 50 ห้ร#อไม$ ถ��ใช้$ให้�ก��ห้นดต�วแปร grade เก&บ D แต$ถ��ไม$ใช้$ให้�ไปที่��ง�นคำ��สั่��งบรรที่�ดที่�� 23บรรท�ดัท�� 23 คำ��สั่��ง else grade = ‘F’; ก��ห้นดต�วแปร grade เก&บ F บรรท�ดัท�� 24 ภ�ยห้ลู�งจำ�กที่��ง�นที่�กเง#�อนไขแลู�วจำะม�ที่��คำ��สั่��งบรรที่�ดที่�� 24 คำ#อ แสั่ดงคำ$�ต�วแปร score ต�วแปร i แลูะต�วแปร grade ที่��ได�แสั่ดงออกจำอภ�พบรรท�ดัท�� 26 แลูะ 27 พ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม สั่�ดที่��ยจำะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม ต�มลู��ด�บ
คำ าสั่��ง switch switch เป�นคำ��สั่��งที่��ใช้�ที่ดสั่อบเง#�อนไขในกรณี�ที่��ม�ที่�งเลู#อกสั่��ห้ร�บต�ดสั่/นใจำม�กกว$� 2 ที่�งข'*นไปเช้$นเด�ยวก�นก�บ nested if โดยม�กน/ยมใช้�คำ��สั่��ง switch แที่นคำ��สั่��ง nested if เพร�ะม�ร�ปแบบก�รใช้�คำ��สั่��งที่��ง$�ยแลูะสั่ะดวกในก�รแก�ไขคำ��สั่��งเม#�อม�ข�อผ/ดพลู�ดเก/ดข'*นร#ปแบบการใช้�คำ าสั่��ง switch
switch (expression) {case expression1:statement(s); break;case expression2:statement(s); break;…..case expressionN:statement(s); break;default:statement(s);}
โดยที่�� expression คำ#อ น/พจำน1 ห้ร#อต�วแปรที่��จำะใช้�เปร�ยบเที่�ยบก�บน/พจำน1 expression1, expression2, …, expressionN ว$�ม�คำ$�ตรงก�บน/พจำน1ใดexpression1, expression2, …, expressionN คำ#อ น/พจำน1 ห้ร#อคำ$�คำงที่��ในเง#�อนไขที่�� 1, 2, 3, …, N ต�มลู��ด�บbreak คำ#อ คำ��สั่��งที่��จำะต�องใสั่$ไว�ในแต$ลูะ case เพ#�อเป�นก�รบอกให้�ออกจำ�กคำ��สั่��ง switch ห้ลู�งจำ�กที่��คำ��สั่��งที่��อย�$ใน case น�*น ๆ แลู�ว ถ��ห้�กไม$ม�คำ��สั่��ง break ใน case ใด เม#�อที่��ง�นจำบ case น�*นแลู�ว จำะที่��ง�นใน case ถ�ดไปจำนกว$�จำะเจำอคำ��สั่��ง break ซ้ำ'�งที่��ให้�เก/ดก�รที่��ง�นผ/ดพลู�ดได�default คำ#อ กรณี�ที่�� expression ไม$ตรงก�บเง#�อนไขใด ๆ เลูย ให้�ที่��ง�นต�มคำ��สั่��งที่��เข�ยนไว�ใน default โดย default น�*ไม$จำ��เป�นต�องใสั่$คำ��สั่��ง break เอ�ไว� เพร�ะ default เป�นกรณี�สั่�ดที่��ยของคำ��สั่��ง switch ขี�อคำวรระว�งในการใช้�คำ าสั่��ง switch 1) ถ��ใช้�คำ��สั่��ง switch ในแต$ลูะกรณี� (case) จำะต�องใสั่$คำ��สั่��ง break เอ�ไว�ด�วยม/ฉะน�*นจำะเก/ดก�รที่��ง�นซ้ำ�*�ใน case ต$อม�จำนกว$�จำะเจำอคำ��สั่��ง break ยกเว�นกรณี� default ไม$ต�องใสั่$คำ��สั่��ง break 2) expression ที่��อย�$ห้ลู�งคำ��สั่��ง switch คำวรใช้�เป�นต�วแปร เพ#�อจำะได�สั่ะดวกในก�รน��ไปเปร�ยบเที่�ยบก�บกรณี�ต$�ง ๆ สั่$วน expression1, expression2, …, expressionN ที่��อย�$ห้ลู�ง case ต$�ง ๆ คำวรใช้�เป�นคำ$�คำงที่��
โปรแกรมตั�วอย+างท�� 4.18 แสั่ดงก�รใช้�คำ��สั่��ง switch เพ#�อตรวจำสั่อบเกรดที่��ผ��ใช้�เต/ม ว$�ตรงก�บกรณี�ใด แลู�วแสั่ดงเกรดที่��เป�นต�วเลูขออกจำอภ�พ/* switch.c */#include<stdio.h> /* บรรที่�ดที่�� 1 */#include<conio.h> /* บรรที่�ดที่�� 2 */#include<stdlib.h> /* บรรที่�ดที่�� 3 */#include<ctype.h> /* บรรที่�ดที่�� 4 */void main(void) /* บรรที่�ดที่�� 5 */{ /* บรรที่�ดที่�� 6 */ int n, i; /* บรรที่�ดที่�� 7 */ float gradepoint; /* บรรที่�ดที่�� 8 */ char grade; /* บรรที่�ดที่�� 9 */ char numstr[20]; /* บรรที่�ดที่�� 10 */ clrscr( ); /* บรรที่�ดที่�� 11 */ printf("Enter Number of Students : "); /* บรรที่�ดที่�� 12 */ n = atoi(gets(numstr)) ; /* บรรที่�ดที่�� 13 */ for ( i=1; i<=n; i++ ) { /* บรรที่�ดที่�� 14 */ printf("\nEnter grade of student #%d: ", i); /* บรรที่�ดที่�� 15 */ grade = getche( ); /* บรรที่�ดที่�� 16 */
switch(toupper(grade)) { /* บรรที่�ดที่�� 17 */ case 'A': /* บรรที่�ดที่�� 18 */ gradepoint = 4.0; break; /* บรรที่�ดที่�� 19 */ case 'B': /* บรรที่�ดที่�� 20 */ gradepoint = 3.0; break; /* บรรที่�ดที่�� 21 */ case 'C': /* บรรที่�ดที่�� 22 */ gradepoint = 2.0; break; /* บรรที่�ดที่�� 23 */ case 'D': /* บรรที่�ดที่�� 24 */ gradepoint = 1.0; break; /* บรรที่�ดที่�� 25 */ default: gradepoint = 0.0; /* บรรที่�ดที่�� 26 */ } /* end switch */ /* บรรที่�ดที่�� 27 */ printf("\nGrade Point of Student#%d is %.2f\n",i,gradepoint); /* บรรที่�ดที่�� 28 */ } /* end for */ /* บรรที่�ดที่�� 29 */printf("\n\nPress any key back to program..."); /* บรรที่�ดที่�� 30 */getch(); /* บรรที่�ดที่�� 31 */} /* end main */ /* บรรที่�ดที่�� 32 */
ผลูลู�พธ์/ท��ไดั�จากโปรแกรม
คำ าอธ์2บายโปรแกรม จำ�กโปรแกรมต�วอย$�งที่�� 4.18 สั่�ม�รถอธิ/บ�ยก�รที่��ง�นของโปรแกรมที่��สั่��คำ�ญ ๆ ได�ด�งน�*บรรท�ดัท�� 12 แลูะ 13 ให้�ผ��ใช้�เต/มจำ��นวนน�กเร�ยน แลู�วน��คำ$�ที่��ผ��ใช้�เต/มม�แปลูงให้�เป�นจำ��นวนเต&ม แลู�วเก&บไว�ที่��ต�วแปร nบรรท�ดัท�� 14 for (i = 1; i < n; i++) คำ��สั่��งคำวบคำ�มก�รที่��ง�นของโปรแกรมให้�วนที่��ง�นจำ��นวนรอบเที่$�ก�บต�วแปร n ห้ร#อคำ$�ต�วเลูขที่��ผ��ใช้�เต/ม เม#�อที่ดสั่อบเง#�อนไข for แลู�วเป�นจำร/ง จำะที่��ง�นต�มคำ��สั่��งใน loop for คำ#อ คำ��สั่��งบรรที่�ดที่�� 15 ถ'ง 29 แต$ถ��เป�นเที่&จำ จำะไปที่��ง�นต�มคำ��สั่��งบรรที่�ดที่�� 30 แลูะ 31บรรท�ดัท�� 15 แลูะ 16 ให้�ผ��ใช้�เต/มเกรดแลู�วเก&บไว�ที่��ต�วแปร gradeบรรท�ดัท�� 28 ภ�ยห้ลู�งจำ�กก�รที่��ง�นที่�กกรณี�ของคำ��สั่��ง switch แลู�ว จำะที่��คำ��สั่��งบรรที่�ดที่�� 28 คำ#อ แสั่ดงคำ$�ต�วแปร gradepoint ที่��ได�ของแต$ลูะคำน แสั่ดงที่��จำอภ�พบรรท�ดัท�� 30 แลูะ 31 พ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม สั่�ดที่��ยจำะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม ต�มลู��ด�บ
บรรท�ดัท�� 17 ถึ4ง 27 เป�น loop ของ คำ��สั่��ง switch ซ้ำ'�งที่��ง�นซ้ำ�อนภ�ยใน loop for ด�งน�* จำ�กต�วแปรเกรดที่��ร �บเข��จำะแปลูงให้�เป�นต�วพ/มพ1ให้ญ$ที่�กคำร�*ง เพ#�อน��ไปที่ดสั่อบที่�กกรณี�ของคำ��สั่��ง switch เร/�มตรวจำสั่อบกรณี�แรก คำ#อ ที่ดสั่อบว$�เป�นต�ว A ห้ร#อไม$ ถ��ใช้$ ก��ห้นดต�วแปร gradepoint ม�คำ$�เที่$�ก�บ 4.0 แลู�วห้ย�ดก�รที่��ง�นในกรณี�น�* (break) แต$ถ��ไม$ใช้$ต�ว A ก&ไปตรวจำสั่อบกรณี�ถ�ดไป คำ#อ ใช้$ต�ว B ห้ร#อไม$ ถ��ใช้$ ก��ห้นดต�วแปร gradepoint ม�คำ$�เที่$�ก�บ 3.0 แลู�วห้ย�ดก�รที่��ง�นในกรณี�น�* (break) แต$ถ��ไม$ใช้$ต�ว B ก&ไปตรวจำสั่อบกรณี�ถ�ดไป คำ#อ ใช้$ต�ว C ห้ร#อไม$ ถ��ใช้$ ก��ห้นดต�วแปร gradepoint ม�คำ$�เที่$�ก�บ 2.0 แลู�วห้ย�ดก�รที่��ง�นในกรณี�น�* (break) แต$ถ��ไม$ใช้$ต�ว C ก&ไปตรวจำสั่อบกรณี�ถ�ดไป คำ#อ ใช้$ต�ว D ห้ร#อไม$ ถ��ใช้$ ก��ห้นดต�วแปร gradepoint ม�คำ$�เที่$�ก�บ 1.0 แลู�วห้ย�ดก�รที่��ง�นในกรณี�น�* (break) กรณี�สั่�ดที่��ย คำ#อ กรณี�ที่��เต/มต�วอ#�นที่��ไม$ใช้$ที่�*ง 4 กรณี�ข��งต�น จำะที่��คำ��สั่��งบรรที่�ดที่�� 26 คำ#อ default; gradepoint = 0.0; คำ#อ กรณี�อ#�น ๆ ให้�ก��ห้นดต�วแปร gradepoint ม�คำ$�เที่$�ก�บ 0.0
คำ าสั่��งท��สั่��งให�ไปท างานตัามจ�ดัท��ก าหนดัให� (goto statements)
คำ าสั่��งท��สั่��งให�ไปท างานตัามจ�ดัท��ก าหนดัไว� (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บายโปรแกรม จำ�กโปรแกรมต�วอย$�งที่�� 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 น�*จำะพ/มพ1คำ��ว$� Thank You ! แสั่ดงที่��จำอภ�พบรรท�ดัท�� 15 แลูะ 16 ภ�ยห้ลู�งจำ�กที่��ง�นข��งต�นที่��กลู$�วม�แลู�ว โปรแกรมจำะพ/มพ1ข�อคำว�มให้�กดคำ�ย1ใด ๆ เพ#�อกลู�บสั่�$โปรแกรม สั่�ดที่��ยจำะห้ย�ดรอร�บคำ$�ใด ๆ จำ�กคำ�ย1บอร1ด เช้$น ถ��กด enter ก&จำะกลู�บสั่�$โปรแกรม ต�มลู��ด�บ
สั่ม�ช้/ก น�ยป;ต/พงษ1 ปลู�บ�ตร เลูขที่�� 10 น�งสั่�วร� $งที่/ว� ผด�งพ�ฒนด/ษฐ์1
เลูขที่�� 20 น�งสั่�วจำณี/สั่ต� ลู/*มที่อง
เลูขที่�� 30 น�งสั่�วจำ�นที่ร� แสั่งสั่�ร/ย�อ�ที่�ย
เลูขที่�� 31 น�งสั่�วน/ศ�ช้ลู ไที่ยพ�ที่ร� เลูขที่�� 33 น�งสั่�วอ�ร/ษ� ง�มข��
เลูขที่�� 37 ช้� *นม�ธิยมศ'กษ�ป>ที่�� 6/1
top related