คำสั่ง if และ switch

คำสั่ง if และ switch

คำสั่งทดสอบเงื่อนไขเพื่อการตัดสินใจ (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 แล้วแสดงผลลัพธ์ออกจากทางหน้าจอ   





อ้างอิง

จินตนา ดีนาง , “โครงสร้างแบบมีทางเลือก” , 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

1 Comment

ใส่ความเห็น