คำสั่งเลือกแบบทางเดียว (if)
การเลือกแบบทางเดียวเพื่อจะตรวจสอบว่าชุดคำสั่งที่ตามมาจะทำหรือไม่ ในภาษาซีจะใช้คำสั่ง if ในการทำงานของคำสั่งคอมพิวเตอร์จะตรวจสอบเงื่อนไขก่อน ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหรือสเตตเมนต์ที่ตามหลังหรือเป็นสเตตเมนต์รวมที่อยู่ในเครื่องหมาย { } แต่ถ้าเงื่อนไขเป็นเท็จคอมพิวเตอร์จะทำคำสั่งหรือสเตตเมนต์ต่อไป รูปแบบของคำสั่งเป็นดังนี้
รูปแบบ :
if (condition) {action statement}
โดยการตรวจสอบเงื่อนไข จะเป็นการกระทำแบบบูลีน ผลลัพธ์ที่ได้จะเป็นจริงหรือเท็จเท่านั้น ถ้าหากมีการใช้ตัวดำเนินการจะใช้ตัวดำเนินการบูลีน สำหรับการทำงานของคำสั่ง if สามารถเขียนเป็นผังงานได้ดังนี้
สรุปคำสั่ง if ใช้ในการ ตัดสินใจ การทำงานคือ ถ้าเงื่อนไขหรือการเปรียบเทียบ เป็นจริง จะทำชุดคำสั่งที่กำหนดไว้ แต่ถ้าเป็นเท็จ ก็จะไม่ทำอะไรเลย
รูปแบบ if (เงื่อนไข condition) คำสั่ง Statements ; //เฉพาะบรรทัดเดียว
หรือ รูปแบบ if (เงื่อนไข condition) { คำสั่ง Statements ; } //ใช้ {...} เมื่อมีหลายบรทัด
หรือ รูปแบบ if (การเปรียบเทียบ){ สิ่งที่ต้องการให้กระทำถ้าผลการเปรียบเทียบเป็นจริง ; }
ตัวอย่างโปรแกรม?ถามอายุ
#include<stdio.h>
void main()
{
int age;
printf("How old are you ");
scanf("%d",&age);
if (age>=40)
printf("You are old\n");
if (age<=20)
printf("You are young\n");
printf("Good Bye ! ");
}
ตัวอย่างโปรแกรมสำหรับการเปรียบเทียบพร้อมๆ กัน?ถามอายุ
#include<stdio.h>
void main()
{
int age;
printf("How old are you ");
scanf("%d",&age);
if ((age>=40)&&(age<=80)||(age>=81))
printf("You are old\n");
if ((age>=1)&&(age<=20))
printf("You are young\n");
printf("Good Bye ! ");
}
/* หมายเหตุ
คำสั่งเลือกทำอย่างใดอย่างหนึ่ง (if-else)
จากคำสั่ง if ที่ผ่านมาจะใช้ในการเขียนโปรแกรมที่ใช้ทดสอบว่าจะเลือกทำหรือไม่ ถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหรือสเตตเมนต์หลัง if ในกรณีที่คอมพิวเตอร์ต้องเลือกทำอย่างใดอย่างหนึ่ง โดยตรวจสอบเงื่อนไขที่กำหนดจะใช้คำสั่ง if-else โดยถ้าเงื่อนไขเป็นจริงจะทำคำสั่งหลัง if แต่ถ้าเงื่อนไขเป็นเท็จจะทำคำสั่งหลัง else โดยนิพจน์ที่ตามหลัง if จะเป็นข้อมูลทางตรรก รูปแบบคำสั่งเป็นดังนี้
รูปแบบ :
if (condition) {statement 1}
else {statement 2}
การทำงานของคำสั่งนี้สามารถเขียนเป็นผังงานได้ดังต่อไปนี้
สรุปคำสั่ง if else ใช้ในการ ตัดสินใจ การทำงานคือ ถ้าเงื่อนไข เป็นจริง จะทำชุดคำสั่งที่กำหนดไว้ แต่ถ้าเป็นเท็จ ก็จะทำอีกชุดคำสั่งหนึ่ง
รูปแบบ
if (เงื่อนไข condition)
{
คำสั่ง Statements1;
}
else
{
คำสั่ง Statements2;
}
ตัวอย่างโปรแกรม?บวกเลขที่ตัวเลขไม่น้อยกว่าศูนย์
#include<stdio.h>
void main()
{
int a,b;
printf("Enter number 1 :");
scanf("%d",&a);
printf("Enter number 2 :");
scanf("%d",&b);
if((a<=0)||(b<=0))
printf("a,b must not less than zero !\n");
else
printf("answer = %d",a+b);
printf("\nGood bye!");
}
คำสั่ง if elseif else
คำสั่ง if elseif else คือ คำสั่ง if – else เชิงซ้อน เป็นรูปแบบการทำงานแบบหลายทางเลือก โดยจะมีคำสั่งเพียงเดียวเท่านั้นที่จะถูกเลือกให้ประมวลผล ขึ้นอยู่กับว่า เงื่อนไขทางเลือก ใดเป็นจริง และในกรณีที่ไม่มี เงื่อนไขทางเลือก ใดเป็นจริงเลย คำสั่ง else จะถูกประมวลผล
สรุปคำสั่ง if elseif else คำสั่งนี้จะใช้ในกรณีที่มีการซ้อนเงื่อนไข
รูปแบบ
if (เงื่อนไข condition 1)
{
คำสั่ง Statements 1
}
else if (เงื่อนไข condition 2)
{
คำสั่ง Statements 2
}
else if (เงื่อนไข condition ..n)
{
คำสั่ง Statements..n
}
else
{
คำสั่ง Statements ( ไม่ตรงกับเงื่อนไขใดๆ)
}
ตัวอย่างโปรแกรม?คำนวณเกรด
#include <stdio.h>
void main()
{
int score;
char grade;
printf("Enter score : ");
scanf("%d",&score);
system("cls"); //การล้างหน้าจอ
if (score > 100)
grade = 'E';
else if (score >= 80)
grade = 'A';
else if ((score >= 70) && (score < 80))
grade = 'B';
else if ((score >= 60) && (score < 70))
grade = 'C';
else if ((score >= 50) && (score < 60))
grade = 'D';
else grade = 'E';
printf("You got %c score",grade);
getch();
}
การเลือกทำแบบ switch
การเขียนโปรแกรมที่ต้องมีการเลือกทำหลายทางเลือกเราสามารถนำประโยคคำสั่ง if-else มาซ้อนกันได้ แต่ถ้าเงื่อนไขที่ต้องตัดสินใจขึ้นอยู่กับตัวแปรตัวเดียวเราสามารถใช้คำสั่ง switch..case แทนได้ ตัวอย่างเช่น ถ้าเขียนโปรแกรมเป็นสัญลักษณ์เมนูดังต่อไปนี้
และให้ผู้ใช้โปรแกรมเลือกวิธีการคำนวณเข้าไปโดยป้อนค่าอินพุตเข้าไป เราสามารถเขียนโปรแกรมโดยนำค่าอินพุตที่รับเข้าไปเก็บไว้ในตัวแปรตัวหนึ่ง และใช้คำสั่ง switch เลือกว่ามีค่าเท่ากับค่าใด (1ม2ม3ม4) จากนั้นให้ไปทำงานตามที่เลือก ประโยคคำสั่ง switch..case มีรูปแบบดังนี้
รูปแบบ :
switch (variable)
{
case constant_1 : statement;
break;
case constant_2 : statement;
break;
case constant_3 : statement;
break;
............................... .................
case constant_n : statement;
break;
default : statement
}
คำสั่ง switch นี้จะนำค่าใน variable มาตรวจสอบว่าเท่ากับค่าคงที่ค่าใดหลัง case จากนั้นโปรแกรมจะไปทำสเตตเมนต์หลังค่าคงที่ตัวนั้น และออกจาก switch เมื่อถึงคำสั่ง break แต่ถ้าไม่เท่าค่ากับค่าคงที่ค่าใดเลย โปรแกรมจะไปทำสเตตเมนต์หลัง default สำหรับค่าที่ใช้ตรวจสอบจะเป็นตัวแปร นิพจน์ หรือฟังก์ชันก็ได้ สำหรับในแต่ละ case สามารถมีคำสั่งได้มากกว่าหนึ่งคำสั่งหรืออาจไม่มีก็ได้ โดยถ้าไม่มีคำสั่งโปรแกรมจะไปทำงานใน case ถัดไป และค่าคงที่หลัง case จะต้องเป็น int หรือ char เท่านั้น
สำหรับตัวแปรเลือกทำที่อยู่ตามหลัง switch จะต้องเป็นตัวแปรประเภทลำดับ ซึ่งจะทำให้คอมพิวเตอร์สามารถเดาค่าได้ และค่าคงที่ต้องเป็นตัวโปรแกรมประเภทเดียวกับตัวแปรที่ตามหลัง switch การทำงานของคำสั่ง switch..case อาจจะเขียนเป็นผังงานได้ดังนี้