คำสั่ง if และ switch

คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (Decision statements) คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ  เป็นคำสั่งที่มีการทดสอบเงื่อนไขก่อนที่จะทำงานตามคำสั่งที่กำหนดไว้  ซึ่งได้แก่คำสั่ง  if, if else, โครงสร้าง  else  if  (หรือ  nested  if)  และคำสั่ง  switch

 

คำสั่ง if

คำสั่ง if เป็นคำสั่งในการควบคุมการทำงานของโปรแกรมที่เป็นพื้นฐานที่สุด โดยมีการตรวจสอบเงื่อนไขเพื่อจะตัดสินว่าจะทำสิ่งที่กำหนดหรือไม่ การใช้คำสั่ง if มีรูปแบบการใช้งานดังนี้

if (เงื่อนไข)
{
คำสั่ง 1 ;
คำสั่ง 2 ;
……….
คำสั่ง n ;
}

 

ผังงานแสดงการเลือกกระทำของประโยค if แบบ 1 ทางเลือก

if

 

 

ตัวอย่าง

#include <stdio.h>

int point;

main()

{

printf(“Enter your examination point : “);

scanf(“%d”,&point);

if (point>=50)

printf(“You passed, Congratuation\n”);

}

 

 

 

 

คำสั่ง if – else

เป็นคำสั่งที่ต่างจากคำสั่ง if แบบง่ายที่ผ่านมาตรงที่คำสั่ง if แบบง่ายนั้น มีทางเลือกที่จะให้ทำอยู่เพียงทางเลือกเดียว คือ ถ้าเป็นจริงก็ทำทางเลือกนั้น แต่ถ้าเป็นเท็จก็ไม่ทำ แต่คำสั่ง if – else นี้มีทางเลือกที่ให้ทำอยู่สองทางเลือกหรือสองกรณี คือ

กรณีที่ 1 ถ้าเงื่อนไขเป็นจริง ให้ทำกับสายงานหนึ่ง คือ ทำตามชุดคำสั่งที่ตามหลังเงื่อนไข (Condition) ที่ใช้ตรวจสอบ

กรณีที่ 2 ถ้าเงื่อนไขเป็นเท็จ ก็ให้ทำกับอีกสายงานหนึ่ง คือ ทำตามชุดคำสั่งที่ตามหลังคำสงวน else

รูปแบบคำสั่ง  if  – else  2  ทางเลือกดังนี้


if (เงื่อนไข)
{
คำสั่งชุด  A ;
}
else
{
คำสั่งชุด  B ;
}

 

 

ภาพผังงานแสดงการเลือกกระทำของประโยค   if – else

if-else2

 

ตัวอย่าง

#include <stdio.h>

int point;

main()

{

printf(“Enter your examination point : “);

scanf(“%d”,&point);

if (point>=50)

printf(“You passed, Congratuation\n”);

else

printf(“You didn’t passed, Sorry try again\n”);

}

 

 

 

 

คำสั่ง switch-case

การเลือกทำสายงานใดสายงานหนึ่งนั้น นอกจากการใช้คำสั่ง if เพื่อกำหนดเงื่อนไขเพื่อให้โปรแกรมเลือกที่จะทำงานสายงานใดแล้ว ในภาษาซี ยังมีคำสั่ง switch อีกคำสั่งหนึ่ง เพื่ออำนวยความสะดวกแก่ผู้เขียนโปรแกรม ในการที่นำมาใช้แทนคำสั่ง if ที่ซ้อนกันหลาย ๆ ชั้น โดยที่คำสั่ง switch จะนำค่าของตัวแปรที่อยู่หลังคำสั่ง switch มาเปรียบเทียบกับค่าที่อยู่หลัง case แต่ละคำสั่ง ถ้าตรงกัน ก็จะทำสายงานที่อยู่ใน case นั้น ๆ แต่ถ้าไม่ตรงกับ case ใด ๆ เลย จะทำหลังคำสั่ง default โดยมีรูปแบบประโยคคำสั่งดังนี้

switch (ตัวแปร)
{ case ค่าคงที่ : คำสั่งชุดที่ 1;
case ค่าคงที่ : คำสั่งชุดที่ 2;
……………… : …………….
case n : คำสั่งชุดที่ n
default : คำสั่งชุดที่ n+1;
}

 

หรือ

switch (ตัวแปร)
{ case ค่าคงที่ : คำสั่งชุดที่ 1; break ;
case ค่าคงที่ : คำสั่งชุดที่ 2; break ;
……………… : ……………. ……..
case n : คำสั่งชุดที่ n ; break ;
default : คำสั่งชุดที่ n+1;
}

 

 

ตัวอย่าง

 

#include <stdio.h>

#include <conio.h>

int main()

{

char grade;

printf(“Enter grade. (A..E) “);

scanf(“%c”,&grade);

 

printf(“\n\n\n”);

switch (grade)

{

case ‘A’:printf(“Excellent”);

break;

case ‘B’:printf(“Good”);

break;

case ‘C’:printf(“So so”);

break;

case ‘D’:printf(“Fails”);

break;

case ‘E’:printf(“Get lost”);

break;

default :printf(“Invalid data”);

}

getch();

return 0;

}

 

 

 

 

แบบฝึกหัด

 

1. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง แล้วตรวจสอบเงื่อนไข ถ้าจำนวนนั้น เท่ากับ 7 ให้แสดงคำว่า Yes นอกจากนั้นให้แสดงคำว่า No

2. เขียนโปรแกรมที่ใช้รับค่าจากคีย์บอร์ด จำนวน1ครั้ง และ กำหนดให้ตัวแปรA=1 และB=2 แล้วตรวจสอบเงื่อนไข ถ้าอักขระนั้น คือ a ให้ทำการ A+B ถ้าอักขระนั้น คือ b ให้ทำการ A-Bถ้าอักขระนั้น คือ c ให้ทำการ A*B ถ้าอักขระนั้น คือ d ให้ทำการ A/B ถ้าอักขระนั้น คือ e ให้ทำการ A%B แล้วแสดงผลลัพธ์ออกจากทางหน้าจอ

 

 

 

 

อ้างอิง

จินตนา ดีนาง , “โครงสร้างแบบมีทางเลือก” , http://www.krujintana.com/content/unit7.html , สืบค้นวันที่ 22 ส.ค. 59

ลัดดาวรรณ  จันทวงษ์ , “คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (decision  statements)” , http://wmcclaguage.blogspot.in/p/4.html , สืบค้นวันที่ 22 ส.ค. 59

โรงเรียนบ้านค่าย , “การใช้คำสั่ง switch…case” , http://www.bankhai.ac.th/dev_c/switch_case.html , สืบค้นวันที่ 22 ส.ค. 59

Pornthep Sarakon , “บทที่5 เงื่อนไข(switch case)” , http://champlevelmm.blogspot.in/2014/05/5-switch-case.html , สืบค้นวันที่ 22 ส.ค. 59