วันจันทร์ที่ 13 สิงหาคม พ.ศ. 2555

การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)


รูปแบบการใช้คำสั่งควบคุมทิศทาง
          คำสั่งควบคุมทิศทางการทำงานของโปรแกรม  จะใช้ในกรณีที่เราพบโจทย์ปัญหาในลักษณะที่มีทางเลือก  หรือมีเงื่อนไขในการเลือกทำงาน  ยกตัวอย่างเช่น ถ้าสถานการณ์เป็น  ก  ให้ทำงานอย่างหนึ่ง  ส่วนถ้าสถานการณ์เป็น ข ให้ทำงานอีกอย่างหนึ่งแทน  หรือถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคี่  ให้คูณจำนวนนั้นด้วย 2  แต้าถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคู่  ให้เปลี่ยนเป็นหารจำนวนนั้นด้วย 2 เป็นต้น
คำสั่งควบคุม (Control Statement)
          คำสั่งควบคุมเป็นคำสั่งที่สำคัญในการเขียนโปรแกรม คือ ช่วยควบคุมทิศทางการทำงานของโปรแกรมให้เป็นไปตามที่ต้องการ  โดยแบ่งออกเป็น  2  ประเภท  คือ  คำสั่งเงื่อนไข (Condition Sratement) ได้แก่ if,if-else , switch-case  และคำสั่งทำซ้ำ (Iteration Statement) ได้แก่ for,while,do-while    
คำสั่ง if
        คำสั่ง if  จะใช้ในกรณีที่มีทางเลือกให้ทำงานอยู่เพียงทางเลือกเดียว  โดยถ้าตรวจสอบเงื่อนไขแล้วเป็นจริง  จึงจะทำงานตามคำสั่ง 
รูปแบบคำสั่ง if 
if  (เงื่อนไข )
   {
     คำสั่งที่ 1;
   }
คำสั่งที่ 2;

  

    
  หากเงื่อนไขที่ กำหนดเป็นจริงแล้ว  คำสั่งต่าง ๆ ที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะได้รับการประมวลผล (ซึ่งมากกว่า 1 คำสั่ง)  แต่ถ้าตรวจสอบแล้วพบว่า  เงื่อนไขเป็นเท็จ  คำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข  if ก็จะไม่ได้รับการประวมลผล คือ จะข้ามไปทำการประมวลผลคำสั่งที่อยู่ถัดจากบล๊อคของ if ทันที

โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if

ตัวอย่างที่  1  โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :#include
2 :#include
3 :void main()
4 :}
5 :   clrscr();
6 :   int age;
7 :   printf("How old are you = ");
8 :   scanf ("%d",&age);
9 :   if(age<18 td="td">
10 :           printf(" Your are young\n");
11 :   printf("You are %d years old");
12 :getch();
13 :{
ผลลัพธ์ของโปรแกรม
ผลการรันครั้งที่ 1

How old are you = 15
Your are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you = 18
You are 18 years old
อธิบายโปรแกรม
          โปรแกรมทำการตรวจสอบเงื่อนไขว่า  หากอายุน้อยกว่า  18 ปี  ให้พิมพ์คำข้อความ Your are young ซึ่งสังเกตโปรแกรมบรรทัดที่ 9 เท่านั้นที่เป็นคำสั่งภายในบล๊อคของคำสั่ง if  ส่วนบรรทัดที่  10  เป็นคำสั่งนอกบล๊อคของ if ดังจะเห็นได้จากผลลัพธ์ที่แสดง

           หากเงื่อนไขที่ตรวจสอบเป็นจริง  ข้อความในบรรทัดที่  9  จะถูกพิมพ์  หลังจากนั้นก้จะทำคำสั่งที่อยู่นอกเงื่อนไข if ต่อไป  คือพิมพ์ข้อความในบรรทัดที่  10          
           แต่หากเงื่อนไขที่ตรวจสอบเป็นเท็จ  ข้อความในบรรทัดที่  9  ที่เป็นคำสั่งในส่วนของเงื่อนไข if ก็จะไม่ถูกประมวลผล  แต่จะข้ามการทำงานไปประมวลผลในบรรทัดที่ 10 เลย
ตัวอย่างที่  2  โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :#include
2 :#include
3 :void main()
4 :{
5 :clrscr();
6 :int age;
7 :printf("How old are you : ");
8 :scanf ("%d",&age);
9 :if(age<18 td="td">
10 :printf("Your age less than 18 years old\n");
11 :printf("You are young\n");
12 :}
13 :printf("You are %d years old",age);
14 :getch();
15 :}

ผลลัพธ์ของโปรแกรม
ผลการรันครั้งที่ 1

How old are you : 15
Your age less than 18 years old
You are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you : 18
You are 18 years old
อธิบายโปรแกรม
          โปรแกรมที่  2  ต่างจากโปรแกรมที่ 1 ตรงที่มีการนำเครื่องหมาย { } มาใช้คลุมคำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if  มีคำสั่งที่ต้องทำงานเพียง 1 คำสั่งเหมือนโปรแกรมที่ 1 ก็ไม่จำเป็นต้องใน { } ให้กับบล๊อคของ if (แต่ถ้าจะใส่ก็ไม่ผิด) แต่สำหรับโปรแกรมที่ 2 เมื่อตรวจสอบว่าอายุน้อยกว่า 18 แล้ว  จะมี 2 คำสั่งที่ต้องทำ คือ บรรทัดที่ 9 และ 10 ดังนั้นต้องใส่ { } คลุมด้วย (เมื่อบรรทัดที่ 9 และ 10 เรียบร้อยแล้ว ก็จะไปทำงานในบรรทัดที่ 12 ต่อไป) และหากอายุมากกว่าหรือเท่ากับ 18 ก็จะข้ามการทำงานในบล๊อคของ if ไปทำบรรทัดที่ 12 ทันที

คำสั่ง  if-else  
          คำสั่ง  if-else  จะใช้ในกรณีที่มีทางเลือกให้ทำงาน  2  ทางเลือกขึ้นไป  โดยการทำงานของคำสั่ง if-else  จะเริ่มจากการตรวจสอบเงื่อนไข  หถ้าผลออกมาเป็นจริงจะทำงานตามคำสั่งที่อยู่หลัง if แต่ถ้าการตรวจสอบเงื่อนไผลออกมาเป็นเท็จ  ให้ทำงานตามคำสั่งที่อยู่หลัง else  แทน
รูปแบบคำสั่ง  if-else
if (เงื่อนไข)
  {
    คำสั่งที่ 1;
  }
else
  {
    คำสั่งที่ 2;
  }
  คำสั่งที่ 3;

          เป็นคำสั่งที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์ขึ้น  โดยหากตรวจสอบเงื่อนไขของคำสั่ง if แล้วเป็นเท็จ  ก็จะเข้ามาทำงานภายบล๊อกของคำสั่ง else แทน  กล่าวคือ  หากตรวจสอบเงื่อนไขแล้วเป็นจริง  ก็จะประมวลผลคำสั่งในบล๊อกของ if  แต่หากเงื่อนไขและประมวลผลตามคำสั่งเงื่อนไข if-else เรียบร้อบแล้ว  ก็จะทำงานตามคำสั่งที่อยู่ถัดจาก if-else นั้นต่อไป

โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if-else

ตัวอย่างโปรแกรมที่ 1
if (a % 2 = = 0)
printf ("Even number");ถ้าค่าของ a หารด้วย 2 ลงตัว (เหลือเศา 0) ให้แสดงข้อความ Even number
else
printf("Odd number");แต่ถ้าเงื่อนไขของ if เป็นเท็จ (a หารด้วย 2 ไม่ลงตัว) ให้แสดงข้อความ Odd number

ตัวอย่างโปรแกรมที่  2  โปรแกรมแสดงการรับข้อมูลเข้าทางแป้นพิมพ์  แล้วทำการตรวจสอบว่าถ้าค่าที่เรับเข้ามานั้นเท่ากับศูนย์  ให้พิพม์คำว่า "ZERO"  แต่ถ้าไม่เท่ากับศูนย์ให้พิมพ์คำว่า "NON-ZERO"
#include
#include
void main()
{
clrscr():
int i;
printf(" Enter your number = ");
scanf("%d",&i);
    if (i= = 0)
    {
      prinft("ZERO");
    }
  else
      printf("NON-ZERO");

}


ที่มา : http://www.lks.ac.th/kuanjit/c_page04.htm

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

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