แสดงบทความที่มีป้ายกำกับ การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH) แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH) แสดงบทความทั้งหมด

วันศุกร์ที่ 27 กรกฎาคม พ.ศ. 2555

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

การเลือกทำงานตามเงื่อนไข
(คำสั่ง 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 <stdio.h>
2 :
#include <conio.h>
3 :
void main()
4 :
}
5 :
   clrscr();
6 :
   int age;
7 :
   printf("How old are you = ");
8 :
   scanf ("%d",&age);
9 :
   if(age<18)
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<stdio.h>
2 :
#include<conio.h>
3 :
void main()
4 :
{
5 :
clrscr();
6 :
int age;
7 :
printf("How old are you : ");
8 :
scanf ("%d",&age);
9 :
if(age<18) {
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<stdio.h>
#include<conio.h>
void main()
{
clrscr():
int i;
printf(" Enter your number = ");
scanf("%d",&i);
    if (i= = 0)
    {
      prinft("ZERO");
    }
  else
      printf("NON-ZERO");

}
____________________________________________________
switch-case Statement (cont.)
• expression ของ switch เป็นตัวแปรนิพจน์ที่ใช้เปรียบเทียบค่าว่าตรง
กับ constant ของ case ใด
ส่วนค าสั่ง break; จะเป็นค าสั่งให้ออกจากค าสั่ง switch ในกรณีที่ไม่
มีค าสั่ง break; โปรแกรมจะปฏิบัติเรียงตามล าดับตลอดทุกค าสั่งใน
ทุก case ที่อยู่ต่อกัน
ในกรณีที่ค่าของ expression ของ switch ไม่ตรง
กับ constant ของ case ใด โปรแกรมจะปฏิบัติตามค าสั่ง
ใน default
ในแต่ละ case อาจมีค าสั่งหลายค าสั่งไม่ต้องใช้เครื่องหมาย { } ล้อม
และที่case ต่าง ๆ และ default จะต้องมี: (colon) ต่อท้าย
ดังนี้case (constant) :  และ default :
Principle of Programming 20ตัวอย่าง
#include <stdio.h>
main() {
int color = 1;
printf("Please choose a color(1: red,2: green,3: blue):\n");
scanf("%d", &color);
switch (color) {
case 1:
printf("you chose red color\n");
break;
case 2:
printf("you chose green color\n");
break;
case 3:
printf("you chose blue color\n");
break;
default:
printf("you did not choose any color\n");
}
____________________________________________________
เครดิต:
http://158.108.103.7:12222/~boonchoo/images/stories/resources/pp254/4_condition.pdf