The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

หน่วยที่ 6 การควบคุมการทำงานแบบทางเลือก

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by นายประจักษ์ ปะทะดี, 2022-08-31 08:59:49

หน่วยที่ 6 การควบคุมการทำงานแบบทางเลือก

หน่วยที่ 6 การควบคุมการทำงานแบบทางเลือก

หลักการเขียนโปรแกรม

PROGRAMMING PRINCIPLES

PROGRAMMER

หน่วยที่ 6 การควบคุมการทำงานแบบทางเลือก

ประจักษ์ ปะทะดี LEARN NOW

ตำแหน่ง ครู วิทยฐานะ ครูชำนาญการ



6.1 โครงสรา้ งการควบคมุ การทำงาน

โครงสร้างการควบคมุ การทํางานมีทั้งหมด 3 แบบ คือ โครงสร้างเรียงลําดบั โครงสร้าง ทางเลือก และ
โครงสร้างทาํ งานซํา้ ซงึ่ ส่วนใหญจ่ ะเป็นโครงสร้างเรยี งลําดับ เขยี นเป็นผงั งาน (Flowchart) ดังรปู ที่ 6.1

รูปท่ี 6.1 แสดงโครงสรา้ งเรียงลาํ ดับท่ีเขียนเป็นผังงาน

เมื่อประโยคคําสั่งที่หนึ่ง คือ sum = sum + value; ทํางานเสร็จสิ้น ก็จะทํางานที่ คําสั่งถัดไป คือ
Count = Count + 1; ประโยคคําสั่งสามารถเขยี นภายในบล็อกที่สร้างข้ึนจาก วงเล็บปีกกาเปดิ และปิด {sum =
sum + value;count = count + 1; } การเขยี นประโยคคําสัง่ สามารถเขียนได้ในบรรทัดเดยี วกนั แตไ่ มน่ ยิ มเพราะ
จะทําให้อ่านยาก การขึ้นบรรทัดใหม่ หลังจากจบประโยคจะทําให้ชุดประโยคคําสั่งนั้นอ่านง่ายขึ้น และบล็อกท่ี
สร้างขน้ึ สามารถ นาํ มาใช้ประกอบกับโครงสรา้ งทางเลือกและโครงสร้างทาํ งานซํา้

โครงสร้างทางเลือก ใช้เมื่อมีการทํางานแบบหลายกรณี ในภาษา C++ มีอยู่ 3 รูปแบบ คือ if (if
Statement), if...else (if...else Statement) และ switch (Switch Statement)

ครูผสู้ อน ประจกั ษ์ ปะทะดี 1

โครงสรา้ งทาํ งานซ้ำใชเ้ มอื่ มกี ารทํางานแบบเดียวกันมากกว่า 1 รอบ มีอยู่ 3 รปู แบบ คือ while (while
Statement), do...while (do...while Statement) และ for (for Statement)

6.2 นพิ จน์สัมพนั ธ์และการทำงานแบบทางเลอื ก

โครงสรา้ งทางเลือก จาํ เปน็ ต้องมกี ารทดสอบค่าของตวั แปรเพอื่ เลอื กทิศทาง การทาํ งาน เชน่ การทดสอบ
ตัวแปรที่มีข้อมูลเพศ ถ้าเพศเท่ากบั “ชาย” ให้แสดงคํานําหน้า ว่านาย หรือถ้าเพศไม่เทา่ กับ “ชาย” ให้แสดงคํา
นําหน้าวา่ นางหรอื นางสาว ลักษณะน้ีนับเป็น 1 นิพจน์ ในภาษา C++ จะใช้เงือ่ นไขการเปรียบเทียบคา่ ทเ่ี ป็นนิพจน์
สมั พนั ธ์ (Relational Expression) โดยจะมีการคนื คา่ เป็น true หรอื 1 ในกรณที ี่ทดสอบสาํ เรจ็ และ false หรอ 0
ในกรณที ีท่ ดสอบไมส่ ําเรจ็ เรียกว่าชนดิ ขอ้ มูลบลู นี

นิพจน์สัมพันธ์ในภาษา C++ มีตัวดําเนินการสัมพันธ์ (Relational Operator) ให้ใช้งาน 6 ตัว ซึ่งใช้
สัญลกั ษณ์ต่าง ๆ และตวั อยา่ งการทาํ งาน ตามตารางดังนี้

ตาราง 6.1 ตวั ดาํ เนินการสัมพนั ธ์ (Relational Operator)

ตวั ดำเนนิ การ ความหมาย ตวั อย่าง คา่ สง่ กลบั

== เทา่ กับ 50 == 50 True
!= ไมเ่ ท่ากบั 50 != 50 False
< น้อยกว่า 100 < 100 False
<= น้อยกว่าหรือเท่ากบั 100 <= 100 True
> มากกว่า 100 > 100 False
>= มากกว่าเท่ากับ 100 >= 100 True

ในการทาํ งาน ชนดิ ข้อมูลบลู นี จะมีการแสดงผลเปน็ 0 หรือ 1 หากตอ้ งการให้แสดงเป็น true หรือ false
จะต้องใช้ boolalpha วางไว้ด้านหน้ากอ่ น ตามตัวอยา่ งดงั นี้

2 หลักการเขยี นโปรแกรม (Programming Principles)

ตวั อยา่ ง 6.1 ตัวดาํ เนนิ การสัมพันธ์ 3

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

bool flag-false;
int X = 100,
y = 50 ;
cout << "Flag is " « flag << " or " << boolalpha << flag << endl;
cout << "if x = " << x << " and y = " << y < end1 ;
cout << "x=y result is " << (x==y) << endl;
cout << "x !=y result is " <<< (x!=y) << endl;
cout << "x<y result is " << (x<y) << endl ;
cout << "x<=y result is " << (x<=y) << endl;
cout << "x>y result is " << (x>y) << endl;
cout << "x>=y result is " << (x>=y) << endl;
system ("pause");
return 0;
}

ผลการรันโปรแกรม

Flag is 0 or false
if x = 100 and y = 50
x=y result is false
x!=y result is true
x<y result is false
x<=y result is false
x>y result is true
x>=y result is true
Press any key to continue ...

โปรแกรมจะแสดงผลคา่ ของตัวแปร flag และผลลพั ธข์ องนิพจนส์ ัมพันธ์แบบต่างๆ

ครูผสู้ อน ประจักษ์ ปะทะดี

6.3 ประโยคคำสงั่ if

โครงสร้างของคาํ ส่ัง if ข้นึ ต้นด้วย if ตามด้วยวงเลบ็ เปิดและปิดทมี่ ีนิพจนส์ มั พัน ภายใน ถา้ นพิ จนส์ มั พันธ์
มีการคนื ค่าเปน็ true หรือ 1 จะมีการทํางานในคาํ สั่งถดั จาก คาํ สัง่ if แต่ถ้าคนื คา่ เป็น false หรอื 0 จะข้ามไปทํา
คําสง่ั ถดั ไป ซึง่ มรี ูปแบบการ และสามารถเขียนเปน็ ผงั งานได้ ดงั รปู ท่ี 6.2

if (booleanExpression)
statement1;

รูปท่ี 6.2 แสดงโครงสรา้ งทางเลอื กทเ่ี ขยี นเป็นผงั งาน

เมื่อประโยคคําสั่ง if มีนิพจน์ score » 50 เป็น true จะมีการทํางานคําส่ังถัดไปคือ cout << “pass”
แต่ถ้านิพจน์เป็นเท็จจะไมม่ ีการแสดงข้อความในการเขยี นโปรแกรมสามารถ ครอบคําส่ังหลายๆ คําสั่งด้วยวงเล็บ
ปีกกาได้ หากตอ้ งการใหม้ ีการทาํ งานมากกว่า 1 คําส่งั ตามตัวอย่างดังน้ี

ตวั อยา่ ง 6.2 การใช้งาน if

#include <iostream>
#include <iomanip>
using namespace std;
int main() {
int score;

cout << "Enter your score : ";
cin >> score; if (score>50) {

cout << "Your score is " << score << "." << endl;
cout << "Your passed. " << endl;
cout << "OK." << endl;
system ("pause");
return 0;
}
}

4 หลักการเขยี นโปรแกรม (Programming Principles)

ผลการรันโปรแกรม

Enter your score : 60
Your score is 60.
You passed. OK.
Press any key to continue ....

Enter your score : 50
OK.
Press any key to continue ..

โปรแกรมจะแสดงข้อความให้กรอกคะแนนไปยังตัวแปร score แล้วกด Enter จากนัน้ จะทาํ การทดสอบ
ค่า score แล้วจะแสดงข้อความ “Your score is ” “You passed.” และ “OK” เมื่อมีการกรอกตัวเลขที่มีค่า
มากกว่า 50 หรือแสดงเพียงข้อความ “OK” เมื่อมีการ กรอกค่าไม่เกนิ 50

6.4 นิพจนต์ รรกะ

ในกรณีทตี่ อ้ งการทดสอบค่ามากกวา่ 1 นิพจน์ จาํ เป็นตอ้ งใช้นิพจน์ตรรกะ (Logical Expression) มาใช้
เพ่อื เช่ือมการคนื คา่ ของนพิ จน์สมั พนั ธ์ตา่ งๆ เขา้ ด้วยกนั และจะคืนค่าออก เป็นค่าเดยี ว

มพิ จน์สมั พันธ์ในภาษา C++ มีตัวดาํ เนนิ การตรรกะ (Logical Operator) เหเอง" 3 ตวั คอื ตวั ดาํ เนนิ การ
และ (AND) ใช้สญั ลกั ษณ์ && ตวั ดําเนนิ การหรอื (OR) ใช้สญั ลกั ษณ์ (l และตัวดําเนินการไม่ (NOT) ใช้สญั ลกั ษณ์ !
ซึง่ มตี วั อย่างการใช้งานและการคืนคา่ ตามตาราง ดงั น้ี

ครูผสู้ อน ประจกั ษ์ ปะทะดี 5

ตาราง 6.2 ตัวดำเนินกำรตรรกะ (Logical Operator

นพิ จน์ 1 นพิ จน์ 2 นิพจน์1 && นพิ จน2์ นิพจน์1 && นพิ จน์2 !นพิ จน์ 1

True True True True False
True False False True False
False True False True True
False False False False True

ตารางดังกล่าวเรียกว่าตารางความจริง (Truth Table) เป็นตารางแสดงลักษณะ ตกรที่ทํางานของตัว
ดาํ เนนิ การตรรกะเมอ่ื นิพจน์มีหลายๆ นพิ จน์ ควรนําวงเล็บมาใส่เพื่อให้มี การทํางานท่ีถกู ตอ้ ง เช่น (A&&B)IIC จะ
ได้ผลลพั ธไ์ มเ่ หมือนกับ A&&(BIIC) ตามตัวอย่างดังน้ี

ตัวอยา่ ง 6.2 การใช้งาน if

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

bool A = false;
bool B = true;
bool C = true;
cout << (A && B) || C is " << ((A&&B) || C) << endl ;
cout < " A && (B || C) is " << (A&& (B ||C)) << endl ;
system ("pause");
return 0;
}

ผลการรนั โปรแกรม

( A & B ) || C is 1
A &&& ( B ||C) is 0
Press any key to continue ...

6 หลักการเขยี นโปรแกรม (Programming Principles)

ในกรณีที่ A เป็น false และ C เป็น true นิพจน์(A&&B)||C จะคืนค่าเป็น true 52นนพจน์ A&&(B||C)
จะคืนค่าเป็น false ดังนั้นการนําวงเล็บมาใส่จะทําให้เกิดลําดับของ การทดสอบตรรกะที่ชัดเจนขึ้นและมีการ
ทํางานท่ถี กู ตอ้ งตามตอ้ งการ

การใชน้ พิ จน์ตรงข้าม สามารถใช้ตัวดาํ เนินการ ! ซึ่งจะทาํ ใหก้ ารคืนคา่ นพิ จนใ์ ดๆ ไดผ้ ลเปน็ ตรงกันข้าม
ในกรณที ตี่ อ้ งการหลกี เล่ียงการใช้ตวั ดําเนินการ ! หนา้ นิพจนส์ ัมพันธ์ จะมีตัวดาํ เนนิ การ สัมพันธ์ท่ีมีการคืนค่าตรง
ข้ามกนั อยู่ ซึ่งมีการใชง้ านตามตารางน้ี

ตาราง 6.3 ตวั ดาํ เนนิ การ ! ตัวดำเนนิ การตรงข้าม

ตวั ดำเนินการ !=
==
== >=
!= >
< <=
<= <
>
>=

ในกรณีที่ต้องการหลีกเล่ียงการใช้ตัวดําเนินการ ! หน้านิพจน์ตรรกะ จะสามารถใช้ ทฤษฎีของ ดิ มอร์
แกน (De Morgan's theorem) ซ่งึ มกี ารกําหนดนพิ จนต์ รรกะท่ีเทา่ กนั ไว้

! ( expression1 && expression2 ) มีคา่ เท่ากับ expression1 ||! expression2
และ
! expression 1 llexpression2 ) มีคา่ เท่ากับ !expression 1 &&! expression2

การใช้คําสั่ง if ซ้อน if สามารถเปลี่ยนรปู แบบโดยนําเอานิพจน์ตรรกะ 88 มาใช้แทนได้ Imagะช่วยลด
จํานวนการซ้อนกันของประโยคคําสั่ง if ทําให้สกและเข้ใจง่ายขึ้น แต่ได้ผล กากรรมทางอาณแหมีเอนกัน ซึ่งมี
ตัวอย่างการใช้งานดงั นี้

ครูผสู้ อน ประจกั ษ์ ปะทะดี 7

ตวั อย่าง 6.4 การใช้คาํ สั่ง if ซอ้ น if

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

char ch ;
cout << " Enter your character : ";
cin >> ch;
if(ch >= 'a' && ch <= 'z')
cout << "It's lower-case" << endl;
if(ch >= 'a') if (ch <= 'z')
cout << "It's lower-case" << endl;
system ("pause");
return 0;
}

ผลการรันโปรแกรม

Enter your character : a
It's lower-case
It's lower-case
Press any key to continue ...

ในกรณีที่ต้องการทดสอบตัวแปรชนิดตัวอักษรสามารถทดสอบโดยการเปรียบเทียบกับ ตัวอักษรได้
เช่นเดียวกับการทดสอบตวั แปรชนิดตัวเลข เช่น ถ้ามกี ารพิมพต์ ัวอักษรต้งั แต่ 3 ข้ึนไป คือ a, b, c, ... และตัวอักษร
ไมเ่ กิน 2 ลงมา คอื 2, 3, X, ... จะแสดงขอ้ ความ “It's lower-case” ดงั ผลการรนั โปรแกรม

8 หลกั การเขยี นโปรแกรม (Programming Principles)

6.5 ประโยคคำสั่ง if…else

ในขณะที่ประโยคคําสั่ง if ใช้ทดสอบตัวแปรเพื่อให้มีการทํางานในคําสั่งถัดไปเมื่อปี ผลการทดสอบเปน็
true ทาํ ให้ไมม่ กี ารทาํ งานใดๆ หากผลการทดสอบเปน็ false หากต้องการ ใหม้ ีการทํางานในกรณที ี่ผลการทดสอบ
เปน็ false ใหใ้ ช้คําสัง่ if...else ซง่ึ มรี ูปแบบการใช้งาน

if (booleanExpression)
statement1;

else
statement1;

และสามารถเขยี นเปน็ ผังงานได้ ดังรูปท่ี 6.3

รปู ที่ 6.3 แสดงโครงสร้างทางเลอื กที่เขยี นเป็นผงั งาน

เมื่อประโยคคําส่ัง if มีนิพจน์ score > 50 เป็น true จะมีการทาํ งานคําสั่งถัดไปคือ cout << “pass":
แต่ถ้านิพจนเ์ ป็นเทจ็ จะมกี ารทาํ งานคาํ สงั่ ถดั จาก else ไปคือ cout << “fail : ตามตวั อยา่ งดงั นี้

ครูผสู้ อน ประจกั ษ์ ปะทะดี 9

ตัวอย่าง 6.5 การใชค้ ําสัง่ if else

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

int score; cout << "Enter your score : " ;
cin >> score;
if (score>50) {

cout << "Your passed." «< endl;
} else {

cout << "Your failed. " «< endl;
system ("pause");
return 0;
}

ผลการรันโปรแกรม

Enter your score : 60
You passed.
Press any key to continue ...

Enter your score : 50
You failed.
Press any key to continue ..

โปรแกรมจะแสดงข้อความใหก้ รอกคะแนนไปยงั ตัวแปร score แล้วกด Enter จากน้นั จะทําการทดสอบ
ค่า score แล้วจะแสดงข้อความ “You passed.” เมื่อมีการกรอกตัวเลข ที่มีค่ามากกว่า 50 หรือแสดงข้อความ
“You failed.” เมื่อมีการกรอกตัวเลขทม่ี คี ่าไมเ่ กนิ 50

10 หลักการเขียนโปรแกรม (Programming Principles)

หมายเหตุ ในกรณีท่มี กี ารใชค้ าํ สง่ั if ซอ้ น if...else มกั จะเกดิ ความสบั สนวา่ การทํางาน ส่วนของ else น้ันมาจาก if
ตวั ใด ซ่งึ ตามปกติแล้วจะมาจากคําสั่ง if ตวั ลา่ สดุ จงึ จําเปน็ เพิม่ วงเล็บปีกกาเพอ่ื ใหม้ ีลําดบั การทํางานที่ถูกตอ้ งตาม
ตอ้ งการ

O การใชง้ าน if..else ซอ้ น if...else

ในกรณีที่โปรแกรมมีการเลือกเส้นทางการทํางานมากกว่า 2 ทาง การใช้ประโ. คําสั่ง if...else หลายๆ
คําสั่งมาซอ้ นกัน ทําให้เกิดโครงสร้างตดั สินใจทมี่ ลี กั ษณะเปน็ หลาย ทางเลือก (Multi-way Selection) ซึง่ มีรปู แบบ
การใช้งาน

if (booleanExpression)
statement 1;

else if (booleanExpression)
statement2;

else if (booleanExpression)
statement3;

else
statement4;

และเขียนเปน็ ผังงานได้ ดังรปู ที่ 6.4

รูปท่ี 6.4 แสดงโครงสรา้ งทางเลอื กหลายทางที่ท่แี ซยี มเข็นผังงาน 11

ครผู สู้ อน ประจกั ษ์ ปะทะดี

การใชง้ านประโยคคาํ สงั่ if...else จะต้องมกี ารกาํ หนดเงื่อนไขในทุกครั้งทีใ่ ช้คําส่ัง if…else และจะมีการ
ทดสอบตามลําดับที่กําหนดไว้ เมื่อต้องการทดสอบ ch เป็นตัวอักษร ถ้า ch มีค่าระหว่าง “a' ถึง ‘z’ จะมีการ
ทํางานคําสั่ง cout << “Lower-case”; ถ้า ch มีค่าระหว่าง “A” ถึง “Z” จะมีการทํางานคําสั่ง cout <<
“Upper-case”; ถา้ ch มก ระหว่าง “0” ถึง “9” จะมีการทํางานคาํ สงั่ cout << “Numeric”. ถ้าไมต่ รงกับกรณี
ใดๆ ท่กี าํ หนด ใหเ้ ลยจะมีการทาํ งานคําสงั่ cout << “Other”, ตามตัวอย่างดงั น้ี

ตวั อย่าง 6.6 การใช้งานประโยคคาํ สัง่ if...else ซอ้ น if...else

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

char ch [1]: cout << "Enter a character : ";
cin >> ch;
if ( ch[ 0 ] >= 'a' && ch [0] <= '2')

cout << "Lower-case Alphabet" << endl;
else if( ch[ 0 ] >= "A" && ch [0] <= 'Z')

cout << "Upper-case Alphabet " << endl;
else if(ch [0] >= "0" && ch [0] <= "9")

cout << "Numeric" << endl;
else

cout << "Other" < endl;
system ("pause") ;
return 0;
}

ผลการรันโปรแกรม หลกั การเขยี นโปรแกรม (Programming Principles)

Enter a character : 1
Numeric
Press any key to continue ..

Enter a character : A
Upper-case Alphabet
Press any key to continue . . .

12

โปรแกรมจะแสดงข้อความให้กรอกคะแนนไปยังตัวแปร ch แล้วกด Enter 0 จะทาการทดสอบค่า ch
แล้วจะแสดงขอ้ ความตามกรณีตา่ ง ๆ ทก่ี าํ หนดไว้

6.6 ตัวดำเนนิ การเงอื่ นไข

ภาษา C++ มีตัวดําเนินการเงื่อนไข (Conditional Operator) หรือที่เรียกว่าตัวดําเนินกา สามส่วน
(Ternary Operator) ที่สามารถนาํ มาใช้แทน if...else ในการกําหนดค่าให้ตัวแปร ซึ่งใช้สัญลกั ษณ์ ? กับ : โดยมี
รปู แบบการใช้งานดงั น้ี

booleanExpression ? expression 1 : expression2;

เมื่อนิพจน์เป็น true จะมกี ารสง่ ค่าคืนกลบั เปน็ expression 1 แตถ่ ้านพิ จนเ์ ปน็ false จะมกี ารสง่ ค่าคืน
กลับเป็น expression2 ตามตัวอยา่ งดงั น้ี

ตัวอย่าง 6.7 ตวั ดาํ เนนิ การสามสว่ น (Ternary Operator)

#include <iostream> 13
#include <iomanip>
using namespace std;
int main () {

int money;
cout << "Enter your pocket money: ";
cin >> money;
int price = 10 ;
int spend = ( money >= price ) ? price : 0);
cout << "I have" << money << " baht." << endl;
cout << "I spend" << spend << " baht." <<endl;
system ("pause");
return 0;
}

ผลการรันโปรแกรม

Enter your pocket money : 10
I have 10 baht,
I spend 10 baht.
Press any key to continue .

ครผู สู้ อน ประจักษ์ ปะทะดี

Enter your pocket money : 9
I have 9 baht.
I spend 0 baht.
Press any key to continue..

ในการตัดสินใจว่า “ถ้ามีเงินมากกว่าหรือเท่ากับราคาของก็จะใช้” โปรแกรมจะแสดงข้อความไปยังตวั
แปร money แล้วกด Enter จากน้นั จะทาํ การทดสอบ ค่า money แลว้ เกบ็ ค่าคืนกลับไปยงั ตัวแปร spend แล้ว
แสดงขอ้ ความ “1 spend 10 bath.” เมอ่ื มกี ารกรอกตวั เลขท่ีมคี ่ามากกว่าหรอื เทา่ กบั 10 หรอื แสดงขอ้ ความ “1
spend 0 bath เมือ่ มีการกรอกตวั เลขท่มี ีคา่ น้อยกว่า 10

6.7 ลำดบั การทำงานของตัวดำเนนิ การ

ในกรณีที่มีนิพจน์หลายนิพจน์รวมเข้าด้วยกัน โปรแกรมจะทําการประมวลผล ตัวดําเนินการที่มี
ความสาํ คญั มากกว่ากอ่ น แลว้ จึงประมวลผลตวั ดําเนนิ การที่มคี วามสําคัญ รองลงมาภายหลงั ซ่ึงลําดับของแต่ละตัว
ดาํ เนินการและทศิ ทางเร่มิ ตน้ ของการประมวลผล จะเป็นไปตามตารางน้ี

ตาราง 6.4 ลาํ ดับการทาํ งานของตวั ดาํ เนนิ การ

ตัวดำเนินการ ลำดับการทำงาน

() ซ้ายไปขวา
! ขวาไปซา้ ย
*/% ซา้ ยไปขวา
+- ซ้ายไปขวา
<< >> ซา้ ยไปขวา
<<= >>= ซา้ ยไปขวา
== != ซ้ายไปขวา
&& ซ้ายไปขวา
?: ขวาไปซา้ ย
= *= /= += -= ขวาไปซ้าย

14 หลกั การเขียนโปรแกรม (Programming Principles)

6.8 ประโยคคำสั่ง Switch

คาํ สั่งทมี่ ลี ักษณะเปน็ หลายทางเลอื กภายในการใช้งานคร้ังเดียว คอื คําสงั่ ตามดว้ ยวงเล็บเปิดและปิดท่ีมี
ตัวแปรชนิดจาํ นวนเต็มเทา่ นัน้ อยู่ภายใน จากข้อจํากดั ขา Switch ทําให้การใช้ if…else ซ้อนกันยังเป็นที่นยิ มอยู่
เนอื่ งจาก if...else สามารถใช้ ตัวแปรชนดิ อื่นๆ นอกเหนอื จากตัวแปรชนิดตัวเลขได้ เช่น ตัวแปรชนดิ ทศนิยม ตัว
แปร ตัวอักษร เป็นต้น ซง่ึ ทําให้ผใู้ ช้งานสามารถกําหนดเง่ือนไขไดอ้ ยา่ งหลากหลาย คาํ สัง่ มรี ปู แบบการใช้งานและ
เขียนเป็นผังงานเชน่ เดยี วกบั การใช้ if...else ซ้อนกนั ดังรปู ท่ี 65

switch (valueExpression) {
case value 1 : statement1;
break;
case value 2 : statement2;
break;

Default : statement,
break:
}

รปู ท่ี 6.5 แสดงโครงสร้างทางเลือกหลายทางท่เี ขียนเป็นผังงาน 15

ครผู สู้ อน ประจกั ษ์ ปะทะดี

เมือ่ ใชง้ านประโยคคําสง่ั Switch (Grade) ถา้ Grade มีคา่ เทา่ กับ cout << “Excellent”, และ break;
ถา้ Grade มีค่าเท่ากบั 3 จะมกี ารทํางานคำสงั่ count << “Good”; และ break; ถา้ Grade มีค่าเทา่ กบั 2 จะมี
การทํางานคาํ ส่งั cout << “Fair break; นอกจากน้นั จะมกี ารทาํ งานคําสัง่ cout << “Poor"; ตามตัวอยา่ งดงั น้ี

ตัวอย่าง 6.8 ใชง้ านประโยคคําสั่ง switch

#include <iostream>
#include <iomanip>
using namespace std;
int main() {

int grade; cout << "Enter your grade : ";
cin >> grade ;
switch( grade ) {

case 4 : cout < "Excellent" << endl :
break;

case 3: cout << "Good" «< endl;
break;

case 2: cout << "Fair” < endl :
break;

default : cout << "Poor" «< endl;
}
system ("pause");
return 0;
}

ผลการรนั โปรแกรม

Enter your grade : 3
Good
Press any key to continue ...

โปรแกรมจะแสดงขอ้ ความให้กรอกคะแนนไปยังตวั แปร grade แลว้ กด Enter จากน้นั จะทําการทดสอบ
คา่ grade แลว้ จะแสดงข้อความตามกรณตี ่าง ๆ ทีก่ ําหนดไว้

16 หลักการเขียนโปรแกรม (Programming Principles)

จะเหน็ ว่าคําส่งั switch มีโครงสร้างการทาํ งานเหมอื นคําสง่ั if...else ซ้อนกันหลายระ แต่มีการใช้งานที่
งา่ ยกว่า อยา่ งไรก็ตาม ในกรณีทใ่ี ชง้ านประโยคคําสัง่ switch แลว้ ไม่มคี ําว break; ในแต่ละกรณี โปรแกรมจะมกี าร
ทํางานคาํ สง่ั ภายในวงเลบ็ ปีกกาไปเรอ่ื ย ๆ จนหมดหรือเจอคําส่งั break; ตามตวั อย่างดังน้ี

ตัวอย่าง 6.9 การใช้ switch แบบไม่มีคําส่ัง break

#include <iostream>
#include <iomanip>
using namespace std;
int main () {

int step ;
cout << " How to use phone? Enter your current step (0-3): ";
cin >> step ;
switch( step ) {

case 0 : cout << "1. Picking up the phone." << endl;
case 1: cout << "2. Enter the telephone number. " << endl;
case 2: cout << "3. Speak into phone." << endl;
default : cout << "4. Hang up the phone" << endl;
}
system ("pause");
return 0;
}

ผลการรันโปรแกรม

How to use phone? Enter your current step <0-3>: 1
2. Enter the telephone number.
3. Speak into phone.
4. Hang up the phone.
Press any key to continue . . .

โปรแกรมจะแสดงข้อความให้กรอกขั้นตอนปัจจบุ ันไปยงั ตัวแปร step แลว้ กด Enter จากน้ันจะทําการ
ทดสอบค่า step แล้วจะแสดงขอ้ ความเร่มิ ตน้ ตงั้ แตก่ รณที ีถ่ กู เลอื กและทํางาน ตอ่ เนอ่ื งไปเร่อื ยๆ จนครบทุกคาํ ส่ัง

ครผู สู้ อน ประจกั ษ์ ปะทะดี 17

Note
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................
……………………………………………………………………………………………………………………………………........................

18 หลักการเขยี นโปรแกรม (Programming Principles)




Click to View FlipBook Version