คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (Decision statements) คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ เป็นคำสั่งที่มีการทดสอบเงื่อนไขก่อนที่จะทำงานตามคำสั่งที่กำหนดไว้ ซึ่งได้แก่คำสั่ง if, if else, โครงสร้าง else if (หรือ nested if) และคำสั่ง switch
คำสั่ง if
คำสั่ง if เป็นคำสั่งในการควบคุมการทำงานของโปรแกรมที่เป็นพื้นฐานที่สุด โดยมีการตรวจสอบเงื่อนไขเพื่อจะตัดสินว่าจะทำสิ่งที่กำหนดหรือไม่ การใช้คำสั่ง if มีรูปแบบการใช้งานดังนี้
if (เงื่อนไข)
{
คำสั่ง 1 ;
คำสั่ง 2 ;
……….
คำสั่ง n ;
}
ผังงานแสดงการเลือกกระทำของประโยค if แบบ 1 ทางเลือก
ตัวอย่าง
#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
ตัวอย่าง
#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;
}
แบบฝึกหัด (Exercise)
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 แล้วแสดงผลลัพธ์ออกจากทางหน้าจอ
อ้างอิง
จินตนา ดีนาง , “โครงสร้างแบบมีทางเลือก” , //www.krujintana.com/content/unit7.html , สืบค้นวันที่ 22 ส.ค. 59
ลัดดาวรรณ จันทวงษ์ , “คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (decision statements)” , //wmcclaguage.blogspot.in/p/4.html , สืบค้นวันที่ 22 ส.ค. 59
โรงเรียนบ้านค่าย , “การใช้คำสั่ง switch…case” , //www.bankhai.ac.th/dev_c/switch_case.html , สืบค้นวันที่ 22 ส.ค. 59
Pornthep Sarakon , “บทที่5 เงื่อนไข(switch case)” , //champlevelmm.blogspot.in/2014/05/5-switch-case.html , สืบค้นวันที่ 22 ส.ค. 59