C Language

http://tvxq.siam2web.com/

คำสั่งควบคุมการทำงานของโปรแกรม

 

คำสั่งทำซ้ำ(เมื่อทราบจำนวนรอบของการทำงาน) (for statement)
คำสั่ง for เป็นคำสั่ง(statement) ให้ทำซ้ำโดยมีเงื่อนไข ปกติใช้การเพิ่มค่าหรือลดค่าของตัวนับ ทำซ้ำไปเมื่อเงื่อนไขที่กำหนดเป็นจริง จนกระทั่งเมื่อเงื่อนไขเป็นเท็จให้เลิกทำ รูปแบบของคำสั่ง เป็นดังนี้
for (นิพจน์ที่1;นิพจน์ที่2;นิพจน์ที่3)  คำสั่ง 1 คำสั่ง
หรือ   for (นิพจน์ที่1;นิพจน์ที่2;นิพจน์ที่3)
{
คำสั่งที่1
คำสั่งที่2
...
คำสั่งสุดท้าย
}
เมื่อ นิพจน์ที่1 เป็นนิพจน์ที่ใช้กำหนดค่าเริ่มต้นให้กับตัวแปรที่ใช้ในการทำซ้ำ
นิพจน์ที่2 เป็นนิพจน์ที่ใช้เป็นเงื่อนไขโดยมีค่าได้เพียง 1 ใน 2 ค่าเท่านั้น คือ เป็นจริง หรือ เท็จ
นิพจน์ที่3 เป็นนิพจน์ที่กำหนดการเพิ่มหรือลดค่าของตัวแปรที่ใช้ในการทำซ้ำ
คำสั่ง(statement )หลัง for ถ้ามีมากกว่า 1 คำสั่ง จะต้องอยู่ภายในเครื่องหมาย { กับ } เพื่อให้รวมเป็นคำสั่งชุดเดียว เนื่องจากในภาษาซีคำสั่งที่อยู่ในการทำซ้ำแบบ for จะต้องมีเพียง 1 คำสั่ง (คำสั่งการทำซ้ำหรือเงือนไขอื่นก็เป็นเช่นเดียวกัน)


ตัวอย่าง   โปรแกรม  for1.c
#include
#include
int counter ;
char word[20] = "Bodindecha";
main()
{
clrscr();
for (counter = 5;counter<=10;counter = counter+1)
printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word);
}
โปรแกรมนี้ จะลบจอภาพ ก่อน แล้วจึงกำหนด เริ่มต้น ให้ counter  มีค่าเป็น 5 แล้วทดสอบว่าเงื่อนไข คือ counter <= 10 เป็นจริง หรือไม่ ถ้าเป็นจริง จะทำตามคำสั่ง
printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word);
แล้วจึงทำตามคำสั่ง counter = counter +1 ซึ่งเป็นการเพิ่มค่า ของ counter จากเดิม แล้วตรวจสอบเงื่อนไข ถ้าเป็นจริงก็ทำต่อไปซ้ำกันไปเรื่อยจนกระทั่งนิพจน์เงื่อนไข เป็นเท็จ คือ counter มากกว่า10 จึงออกจากการทำซ้ำ ในตัวอย่างนี้มีการทำซ้ำ 6 รอบ 4

          คำสั่งทำซ้ำหรือวนรอบ while statement
          while เป็นคำสั่งให้มีการทำซ้ำเป็นรอบ ๆ (loop) ลักษณะการทำงานทำนองเดียวกับคำสั่ง for แต่ต่างกันตรงที่ไม่ทราบจำนวนรอบที่แน่นอน แต่ต้องมีเงื่อนไขที่เป็นเท็จจึงจะออกจากคำสั่ง while ได้มิฉะนั้นจะมีปัญหาที่โปรแกรมทำงานแบบวนซ้ำแบบไม่มีที่สิ้นสุด (endless loop)


คำสั่ง while มีรูปแบบ ดังนี้

while (นิพจน์ทดสอบเงื่อนไข)  statement ;
หรือ
while (นิพจน์ทดสอบเงื่อนไข)
{
คำสั่งที่1;
คำสั่งที่2;
...
คำสั่งสุดท้าย;
}
โดย while จะทำการทำซ้ำต่อไปเมื่อนิพจน์ทดสอบเงื่อนไขให้ผลลัพธ์เป็นจริง  และทำต่อจนกระทั่งผลลัพธ์ของนิพจน์ทดสอบเงื่อนไขเป็นเท็จ


 

ตัวอย่าง  while statement
/* while1.c */
#include
#include
int counter ;
char word[20] = "Bodindecha";
main()
{
clrscr();
counter = 5;
while (counter < 11 )
{
printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word);
counter++;
}
}
โปรแกรมนี้ จะลบจอภาพ ก่อน แล้วจึงกำหนด เริ่มต้น ให้ counter  มีค่าเป็น 5 แล้ว จึงเข้าสู่การทำซ้ำ แบบ  while ทดสอบว่าเงื่อนไข คือ counter < 11 เป็นจริง หรือไม่ ถ้าเป็นจริง จะทำตามคำสั่ง
printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word);
แล้วจึงทำตามคำสั่ง counter++  ซึ่งเป็นการเพิ่มค่า ของ counter จากเดิม แล้วตรวจสอบเงื่อนไข ถ้าเป็นจริงก็ทำต่อไปซ้ำกันไปเรื่อยจนกระทั่งนิพจน์เงื่อนไข เป็นเท็จ คือ counter ไม่น้อยกว่า จึงออกจากการทำซ้ำ ในตัวอย่างนี้มีการทำซ้ำ 6 รอบ ได้ผลดังรูป


d



คำสั่งทำซ้ำหรือวนรอบ do while statement
do while เป็นคำสั่งให้มีการทำซ้ำเป็นรอบ ๆ (loop) ลักษณะการทำงานทำนองเดียวกับคำสั่ง while แต่ต่างกันตรงที่คำสั่งนี้จะมีการทำงานตามคำสั่งไป 1 รอบ ก่อนที่จะทดสอบเงื่อนไข  ถ้าเงื่อนไขที่เป็นจริงจะทำงานต่อไป ถ้าเงื่อนไขเป็นเท็จจึงจะออกจากคำสั่ง do while คำสั่งนี้ก็เช่นเดียวกันจะต้องกำหนดให้มีโอกาสที่เงื่อนไขเป็นเท็จได้ มิฉะนั้นจะมีปัญหาที่โปรแกรมทำงานแบบวนซ้ำแบบไม่มีที่สิ้นสุด (endless loop) กรณีที่เงื่อนไขเป็นเท็จเพียงอย่างเดียวจะมีการทำงาน 1 รอบ ก่อนออกจากการทำซ้ำ

คำสั่ง do while มีรูปแบบ ดังนี้
Do {
คำสั่งที่1;
คำสั่งที่2;
...
คำสั่งสุดท้าย;
} while (นิพจน์ทดสอบเงื่อนไข) ;
โดย do while จะทำการทำซ้ำต่อไปเมื่อนิพจน์ทดสอบเงื่อนไขให้ผลลัพธ์เป็นจริง  และทำต่อจนกระทั่งผลลัพธ์ของนิพจน์ทดสอบเงื่อนไขเป็นเท็จ ก็จะออกจากการทำซ้ำ


 

ตัวอย่าง  do while statement
/* dowhile1.c */
#include
#include
int counter ;
char word[20] = "Bodindecha";
main()
{
clrscr();
counter = 11;
do                                                                       /* start do while */
{
printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word);
counter++;
} while (counter < 11 );                                   /* end do while */
}                                                                              /* end main() */
โปรแกรมนี้ จะลบจอภาพ ก่อน แล้วจึงกำหนด เริ่มต้น ให้ counter  มีค่าเป็น 11 แล้ว จึงเข้าสู่การทำซ้ำ แบบ do while ทำตามคำสั่ง printf("counter \t=\t%2d\tmy school is\t%s \n",counter,word); ไปก่อนแล้วจึงทดสอบว่าเงื่อนไข คือ counter < 11 เป็นจริง หรือไม่  จึงได้ผลการทำงานเป็น ดังรูป ทั้งที่เงื่อนไขเป็นเท็จ

c 

ให้ผลทำนองเดียวกับเงื่อนไขเป็นจริง 1 ครั้ง เช่น เมื่อเริ่มด้วย counter = 10 ดังรูป

c 

ให้นักเรียนลองทำดู โดยเปลี่ยนค่า ในโปรแกรม แล้วบันทึกไฟล์แล้วคอมไพล์แล้วลองรันดู

คำสั่งควบคุมการทำงานของโปรแกรม กลุ่มที่มีการทดสอบเงื่อนไขก่อนการตัดสินใจเพื่อทำงานต่อไปตามคำสั่งที่กำหนดไว้ มีหลายคำสั่ง คือ if  , if  else , if  else  if  , switch คำสั่งเหล่านี้จะมีลักษณะคล้ายกันที่ต้องมีการทดสอบเงื่อนไขเพื่อเลือกเลือกคำสั่งที่จะทำงาน

คำสั่ง  if
คำสั่งนี้เป็นคำสั่งที่มีการทดสอบเงื่อนไขก่อนที่จะทำงานตามคำสั่งที่กำหนด


รูปแบบของคำสั่ง if  เป็น ดังนี้
if  (expression)  statement ;
หรือ
If (expression)
{
statement 1;
...
statement n;
}

expression ในคำสั่ง if  เป็นเงื่อนไขที่มีค่าได้เพียง จริง หรือ เท็จ เท่านั้น ถ้ามีเป็นจริงจะทำตามคำสั่งใน if จากนั้น ออกไปทำตามคำสั่งนอกคำสั่ง if  ถ้าเงื่อนไขมีค่าเป็นเท็จ จะไม่ทำตามคำสั่งใน if  ดังตัวอย่าง
ตัวอย่าง การใช้คำสั่ง if
/* if1.c */
#include
#include
int ch;
main()
{
clrscr();
printf("Please press any key.");
ch = getche();
if (ch == '\r') printf("\n Enter key ( ASCII code = 13 ) was pressed .");
printf("\n Out of if statement");
}
คำสั่ง  if (ch == '\r') printf("\n Enter key ( ASCII code = 13 ) was pressed ."); กำหนดให้ตรวจสอบเงื่อนในคำสั่ง คือ ถ้าการเคาะแป้นจากคำสั่ง    ch = getche(); เป็นแป้น enter จริง แล้วให้ทำตามคำสั่งใน if คือ คำสั่ง ให้แสดงข้อความว่า  Enter key ( ASCII code = 13 ) was pressed . ออกทางหน้าจอ แล้วจึงทำตามคำสั่งนอกคำสั่ง if  คือ แสดงข้อความว่า Out of if statement ดังรูป

ถ้าเงื่อนไขเป็นเท็จ ให้แสดงข้อความว่า Out of  if statement โดยไม่ต้องแสดงข้อความในคำสั่ง if ดังรูป


 



คำสั่ง   if else if
คำสั่งนี้มีโครงสร้าง else if เพิ่มเข้ามาในคำสั่ง else ทำให้ใช้คำสั่ง  else if  เพิ่มได้ตามที่ต้องการ ใช้กับการตัดสินใจที่มีทางเลือกมากกว่า 2 ทางเลือก

รูปแบบของคำสั่ง if else if
if (expression1)
{
statement A;
}
else if (expression2)
{
statement B;
}
...
else if (expression n)
{
statement N;
}
else
{
statement N + 1;
}


 

ตัวอย่าง   if else if
#include
#include
main()
{
int score1;
clrscr();
printf("\n Please type your score  : ");
scanf("%d",&score1);
if (score1 >= 80) printf("\n You get  A. \n Congratulation");
else if (score1 >= 70) printf("\n You get B.");
else if (score1 >= 60) printf("\n You get C.");
else if (score1 >= 50 ) printf("You get  D.");
else printf("\n You get E" );
}
โปรแกรมนี้เป็นการให้ป้อนคะแนนทางแป้นพิมพ์เพื่อหาระดับคะแนน ตามเกณฑ์และรายงานผลออกทางจอภาพ ดังรูป



qqes



คำสั่ง   switch
เป็นคำสั่งที่ใช้ทดสอบเงื่อนไขและมีทางเลือกของการตัดสินใจหลายทาง ทำนองเดียวกับคำสั่ง if else if แต่นิยมใช้คำสั่ง switch มากกว่า เพราะมีรูปแบบที่เข้าใจได้ง่าย สะดวกในการแก้ไขในกรณีที่มีการผิดพลาด
รูปแบบ
switch (expression) {
case (constant 1) :
statements;
break;
case (constant 2):
statements;
break;

case (constant n):
statements;
break;
default :
statements
}
expression ของ switch เป็นตัวแปรนิพจน์ที่ใช้เปรียบเทียบค่าว่าตรงกับ constant ของ case ใด โดยโปรแกรมจะปฏิบัติตามคำสั่งต่าง ๆ ใน case นั้น ส่วนคำสั่ง break; จะเป็นคำสั่งให้ออกจากคำสั่ง switch ในกรณีที่ไม่มีคำสั่ง break โปรแกรมจะปฏิบัติเรียงตามลำดับตลอดทุกคำสั่งในทุก case ที่อยู่ต่อกัน ในกรณีที่ค่าของ expression ของ switch ไม่ตรงกับ constant ของ case ใด โปรแกรมจะปฏิบัติตามคำสั่งใน default โดยข้อสังเกตที่ควรจำ ในแต่ละ case อาจมีคำสั่งหลายคำสั่งไม่ต้องใช้เครื่องหมาย { } ล้อม และที่ case ต่าง ๆ และ default จะต้องมี : (colon) ต่อท้ายดังนี้ case (constant) :  และ default :


ตัวอย่าง  switch


/* switch1.c */
#include
#include
main()
{
float num1 = 1.0 , num2 = 1.0;
int operate;
clrscr();
printf("\n Please enter first floating point number  : ");
scanf("%f",&num1);
printf("\n Please enter seconf  floating point number  : ");
scanf("%f",&num2);
printf(" \n Please enter the operator. :  ");
operate = getche();
switch ( operate)                                                              /* start  switch */
{
case '+' :
printf("\n\t result \tof \t%0.2f  \t%c \t%02.2f\tis \t %.2f",num1,operate,num2,num1+num2);break;
case '-' :
printf("\n\t result \tof \t%0.2f  \t%c \t%02.2f\tis \t %.2f",num1,operate,num2,num1 - num2); break;
case '*' :
printf("\n\t result \tof \t%0.2f  \t%c \t%02.2f\tis \t %.2f",num1,operate,num2,num1+num2);break;
case '/' :
printf("\n\t result \tof \t%0.2f  \t%c \t%02.2f\tis \t %.2f",num1,operate,num2,num1+num2);break;
default :
printf("unknown operator");
}                                                                                    /* end switch  */
}                                                                                              /* end main() */


Advertising Zone    Close

ด้วยความปราถนาดีจาก "สยามทูเว็บดอทคอม" และเพื่อป้องกันการเปิดเว็บไซต์เพื่อหลอกลวงขายของ โปรดตรวจสอบร้านค้าให้แน่ใจก่อนตัดสินใจซื้อของทุกครั้งนะคะ    อ่านเพิ่มเติม ...