การเลือกทำงานตามเงื่อนไข
(คำสั่ง
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
ไม่มีความคิดเห็น:
แสดงความคิดเห็น