คำสั่งควบคุม

ในบทก่อนหน้า คุณได้เรียนพื้นฐานของภาษา C++ ไปแล้ว ในบทนี้ คุณจะได้เรียนเกี่ยวกับการควบคุมโปรแกรมโดยการใช้คำสั่งควบคุม อย่างเช่น if, if else, switch, for, while, do-while คำสั่งเหล่านี้ใช้เพื่อควบคุมโปรแกรมเพื่อให้ไปในทิศทางที่เราต้องการ

คำสั่ง If, if else, และ switch ถูกใช้เพื่อควบคุมโปรแกรมโดยมีเงื่อนไขเป็น expression คำสั่งวนซ้ำ เช่น for, while, และ do-while ถูกใช้เพื่อทำซ้ำส่วนของโค้ดตามเงื่อนไขของมันจนกว่าเงื่อนไขจะเป็นเท็จ

คำสั่ง If

คำสั่ง If เป็นคำสั่งที่เป็นพื้นฐานที่สุดสำหรับควบคุมการทำงานในภาษา C++ คำสั่ง If ถูกใช้เพื่อควบคุมโปรแกรมกับเงื่อนไขที่กำหนด โค้ดในบล็อคของ คำสั่ง If จะทำงานถ้าเงื่อนไขตรงหรือเป็นจริง เรามักจะใช้คำสั่ง If ในกรณีที่โปรแกรมนั้นต้องทำงานภายใต้เงื่อนไขบางอย่าง นี่เป็นรูปแบบของการใช้งานคำสั่ง If ในภาษา C++

if (expression) {
// statements
}

ในรูปแบบการทำงานของคำสั่ง if นั้นจะทำการตรวจสอบเงื่อนไขที่สร้างจาก expression ภายในบล็อคของคำสั่งนั้นจะล้อมรอบด้วยวงเล็บปีกกา {...} ภายในบล็อคนั้นสามารถประกอบไปด้วยตั้งแต่หนึ่งถึงหลายคำสั่ง นี่เป็นตัวอย่างการใช้งานคำสั่ง if ในภาษา C++

int n = 10;
if (n == 10) {
cout << "n is 10";
}

ในตัวอย่างนี้ เราได้ใช้ if เพื่อตรวจสอบว่าตัวแปร n เท่ากับ 10 หรือไม่ ถ้ามันตรงกับเงื่อนไข โปรแกรมจะทำงานในบล็อคของ If คือ cout << "n is 10" ซึ่งเป็นการแสดงผลข้อความว่า n มีค่าเป็น 10

คำสั่ง If else

คำสั่ง If else นั้นคล้ายกับคำสั่ง if คำสั่ง if else นั้นใช้จะใช้สำหรับการสร้างเงื่อนไขแบบหลายทางเลือก และมันจะต้องเริ่มต้นด้วยคำสั่ง if เสมอ และนอกจากนี้ยังมีคำสั่ง else clause เพื่อทำในเงื่อนไขที่นอกเหลือจากเงื่อนไขอื่นทั้งหมด มาดูตัวอย่าง

int m = -1;
if (n < 0) {
cout << "Negative number.";
}
else if (n > 0) {
cout << "Positive number.";
}
else {
cout << "Zero number";
}

ในตัวอย่าง คำสั่ง If สามารถมีเงื่อนได้หลายอันโดยการใช้ else if() สำหรับสร้างเงื่อนไขที่สองเป็นต้นไป และในเงื่อนไขสุดท้ายคือ else ซึ่งมันจะทำงานเมื่อไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า ในโค้ด เรามีตัวแปร m ซึ่งมีข้อมูลเป็นแบบ integer โปรแกรมของเรานั้นจะตรวจสอบว่า m เป็นจำนวนเต็มบวก เต็มลบ หรือศูนย์

มากไปกว่านั้น เราสามารถมีได้หลายเงื่อนไขย่อยๆ โดยการใช้ตัวดำเนินการตรรกะสำหรับการเชื่อม expression เข้าด้วยกัน

int a = 12;
int b = 5;
if (a > 10 && b % 2 == 0) {
cout << "a is greater than 10 and b is even number.";
}
else {
cout << "Other condition";
}

ในตัวอย่างนั้นใช้หลายเงื่อนไขและผลลัพธ์ของโปรแกรมจะเป็น "Other condition" เพราะว่า a นั้นมากกว่า 10 แต่ b นั้นไม่เป็นจำนวนคู่ คุณสามารถเพิ่มเงื่อนไขได้อีกตามที่คุณต้องการ

ตัวอย่างการใช้งานคำสั่งเลือกเงื่อนไขในภาษา C++

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

#include <iostream>

using namespace std;

int main () {

int score = 0;
string name;
char grade;

cout << "Enter you name: ";
cin >> name;
cout << "Enter your score (0 - 100): ";
cin >> score;

if (score >= 0 && score <= 100) {

if (score >= 80) {
grade = 'S';
}
else if (score >= 70) {
grade = 'A';
}
else if (score >= 60) {
grade = 'B';
}
else {
grade = 'C';
}

cout << "Hello " << name << endl;
cout << "You got grade " << grade << endl;

} else {
cout << name << ", you entered an invalid score." << endl;
cout << "Please try again." << endl;
}

return 0;
}

ในตัวอย่าง เป็นโปรแกรมในการคำนวณเกรดที่ได้รับจากคะแนน โดยโปรแกรมจะถามชื่อและคะแนนของผู้ใช้และรับค่านั้นมาทางคีย์บอร์ด โปรแกรมของเราจะทำการคำนวณเกรดและแจ้งให้ทราบ ในส่วนแรกของโปรแกรมนั้นเป็นการรับชื่อและคะแนนมาเก็บไว้ในตัวแปร name และ score ตามลำดับ

if (score >= 0 && score <= 100) {

...

} else {
cout << name << ", you entered an invalid score." << endl;
cout << "Please try again." << endl;
}

ในการทำงานของโปรแกรม เราได้ทำการตรวจสอบคะแนนด้วยคำสั่ง If ถ้าหากคะแนนนั้นอยู่ระหว่าง 0 ถึง 100 เราจะทำการคำนวณเกรด และถ้าหากไม่ใช้โปรแกรมจะทำงานในบล็อคของคำสั่ง else และบอกว่ากรอกคะแนนไม่ถูกต้อง

if (score >= 80) {
grade = 'S';
}
else if (score >= 70) {
grade = 'A';
}
else if (score >= 60) {
grade = 'B';
}
else {
grade = 'C';
}

การใช้งานคำสั่ง If นั้นสามารถซ้อนกันได้ ดังนั้นในคำสั่ง If ภายในจะทำงานก็ต่อเมื่อเงื่อนไขของ If บล็อคนอกเป็นจริง คือคะแนนที่กรอกเข้ามานั้นอยู่ระหว่าง 0 ถึง 100 เราได้สร้างเงื่อนไขแบบหลายทางเลือกสำหรับตรวจสอบเกรดด้วยคำสั่ง else if ซึ่งมีสามเงื่อนไข และในคำสั่ง else นั้นจะทำงานในกรณีที่โปรแกรมไม่ตรงกับทั้งสามเงื่อนไขก่อนหน้าเลย

Enter you name: Mateo
Enter your score (0 - 100): 85
Hello Mateo
You got grade S

นี่เป็นผลลัพธ์การทำงานของโปรแกรม จะเห็นว่าคะแนน 85 ที่กรอกเข้ามานั้นทำให้เงื่อนไข If ครั้งแรกเป็นจริง และทำงานภายในคำสั่ง If ภายในก็ตรงเป็นเงื่อนไขแรก ทำให้ได้เกรด S

Enter you name: Mateo
Enter your score (0 - 100): 105
Mateo, you entered an invalid score.
Please try again.

หลังจากนั้นเราได้รันโปรแกรมอีกครั้ง และกรอกคะแนนเป็น 105 ทำให้เงื่อนไขในคำสั่ง If ด้านนอกไม่เป็นจริง และโปรแกรมทำงานในบล็อคของคำสั่ง else

คำสั่ง Switch case

คำสั่ง switch-case นั้นคล้ายกับ คำสั่ง If-else เป้าหมายของมันเพื่อตรวจสอบกับค่าคงที่ นี่เป็นตัวอย่างการใช้คำสั่ง switch

switch (n) {
case 1:
cout << "n is 1";
break;
case 2:
cout << "n is 2";
break;
default:
cout << "Unknown n";
}

Switch expression สามารถมีได้แค่หนึ่งค่าเพื่อประเมิน คำสั่ง case เป็นคำสั่งเงื่อนไขเพื่อเปรียบเทียบค่า ในตัวอย่าง case 1: จะทำงานเมื่อ n มีค่าเท่ากับ 1 หลังจากคำสั่งด้านล่างเราต้องใส่คำสั่ง break เพื่อหยุดสำหรับแต่ละ case ไม่เช่นนั้นโปรแกรมจะทำงานไปจนกว่าจะพบคำสั่ง break หรือสิ้นสุดบล็อคคำสั่งของ switch และคำสั่ง default นั้นเป็นทางเลือกเมื่อโปรแกรมไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้าเช่นเดียวกับคำสั่ง else

ในตัวอย่าง มันสามารถถูกเขียนโดยการใช้คำสั่ง if-else ได้ดังด้านล่างนี้

#include <iostream>
using namespace std;

int main ()
{
if (n == 1) {
cout << "n is 1";
}
else if (n == 2) {
cout << "n is 2";
}
else {
cout << "Unknown n";
}
return 0;
}

ในตัวอย่าง คุณจะเห็นว่าการใช้งานคำสั่ง switch นั้นสามารถที่จะแทนที่ด้วยคำสั่ง if ได้ แต่อย่างก็ตามคำสั่ง switch นั้นยังมักจะถูกใช้กับการเปรียบเทียบที่ง่ายและรวดเร็ว ดังนั้น switch นั้นจึงใช้ได้เพียงกับข้อมูลประเภท Integer หรือ Char เท่านั้น ในขณะที่ If นั้นสามารถใช้กับข้อมูลทุกแบบ

คำสั่ง while loop

ลูปที่ง่ายและพื้นฐานที่สุดในภาษา C++ นั้นคือ while loop เราใช้คำสั่งลูปสำหรับวนซ้ำให้โปรแกรมสามารถทำงานเดิมซ้ำๆ ได้ ซึ่งมีรูปแบบการใช้งานคือ

while (expression) {
statements
}

คำสั่ง while-loop ใช้เพื่อทำสั่งโค้ดของโปรแกรมในขณะที่ expression เป็นจริง true และมันจะสิ้นสุดการทำงานเมื่อ expression เป็นเท็จและออกจาก while-loop และทำคำสั่งอื่นต่อไป

#include <iostream>
using namespace std;

int main ()
{
int n = 1;
while (n <= 10) {
cout << n << ",";
n++;
}
cout << " end loop";
return 0;
}

ในตัวอย่าง โปรแกรมจะนับจาก 1 ถึง 10 เราได้ประกาศตัวแปร n และกำหนดค่าให้เป็น 1 ก่อนที่มันจะเข้าไปในทำงานใน while-loop while-loop จะทำการตรวจสอบ expression และเข้าสู่ถ้าเงื่อนไขยังคงเป็นจริง; และแสดงค่า n ออกทางจอภาพและเพิ่มค่า n ขึ้น 1 จนกว่า n จะเพิ่มไปถึง 10 ซึ่งจะทำให้ expression เป็นเท็จ และโปรแกรมจะออกจาก loop และทำสั่งอื่นต่อไป

และนี่เป็นผลลัพธ์เมื่อรันโปรแกรม

1,2,3,4,5,6,7,8,9,10, end loop

คำสั่ง do-while loop

ลูปที่คล้ายกับ while-loop คือ do-while ลูป มันมีรูปแบบดังนี้

do {
statements
} while (condition);

มันทำงานเหมือน while loop ยกเว้นในการเปรียบเทียบเงื่อนไขจะทำตอนท้ายหลังจากสิ้นสุดคำสั่งในลูป นั่นหมายความว่า do-while loop จะต้องทำงานอย่างน้อยหนึ่งรอบแน่นอน มันมักจะใช้กับโปรแกรมที่จำเป็นต้องรับค่าจากผู้ใช้ก่อนที่จะทำอย่างอื่นต่อไป มาดูตัวอย่างที่ง่ายๆ

#include <iostream>
using namespace std;

int main ()
{
char ch;
do {
cout << "Enter 'n' to exit loop: ";
cin >> ch;
} while (ch != 'n');
cout << "Exit from the loop.";
return 0;
}

โปรแกรมข้างบนต้องการรับค่าจากผู้ใช้ expression ของมันต้องการตัวอักษร 'n' character เพื่อออกจากลูป นี่คือผลลัพธ์ของโปรแกรมเมื่อได้ทดสอบ คุณสามารถลองดูได้เช่นกัน

Enter 'n' to exit loop: a
Enter 'n' to exit loop: b
Enter 'n' to exit loop: c
Enter 'n' to exit loop: n
Exit from the loop.

คำสั่ง for loop

for loop เป็นลูปที่มีการวนรอบเป็นจำนวนที่แน่นอน รูปแบบของมันคือ

for (initialize; condition; increase) {
statements
}

for loop เป็นลูปที่สามารถวนรอบตามตัวเลขที่กำหนดได้ มันทำงานเหมือน while-loop มันจะวนซ้ำจนกว่า expression จะเป็นเท็จ นอกจากนั้น เรายังสามารถประกาศตัวแปรเริ่มต้น สร้าง expression เพิ่มและลดค่าก่อนที่ลูปจะเริ่ม

ตัวอย่างการนับตัวเลขโดยการใช้ for loop

#include <iostream>
using namespace std;

int main ()
{
for (int n = 1; n <= 10; n++) {
cout << n << ",";
}
cout << " end loop";
return 0;
}

และนี่เป็นผลลัพธ์เมื่อเรารันโปรแกรม ซึ่งมันเป็นโปรแกรมเดียวกันกับตัวอย่างของ while-loop ก่อนหน้า

1,2,3,4,5,6,7,8,9,10, end loop

คำสั่ง break

คำสั่ง break ใช้สำหรับเพื่อจบการทำงานของลูปในทันที และมันไม่สนใจว่า expression จะเป็นจริงหรือไม่ เมื่อพบกับคำสั่ง break โปรแกรมจะออกนอกลูปและทำงานบรรทัดต่อไปหลังจากลูปทันที เรามักจะใช้คำสั่งนี้สำหรับการออกจากลูปโดยเงือนไขพิเศษ

#include <iostream>
using namespace std;

int main ()
{
for (int n = 1; n <= 10; n++) {
if(n == 5) break;
cout << n << ",";
}
cout << " end loop";
return 0;
}

จากตัวอย่างข้างบน เป็นโปรแกรมในการแสดงตัวเลข 1 ถึง 10 แต่ในตอนนี้ โปรแกรมจะออกจากลูปเมื่อ n มีค่าเท่ากับ 5 เพราะว่าเราได้สร้างเงื่อนไขเมื่อ n มีค่าเท่ากับ 5 ให้คำสั่ง break ทำงาน คำสั่ง break สามารถใช้กับลูป เช่น for, while, do-while, switch และอื่นๆ และผลลัพธ์การทำงานจะเป็นดังนี้

1,2,3,4, end loop

คำสั่ง continue

ไม่เหมือนคำสั่ง break คำสั่ง continue ถูกใช้เพื่อข้ามการทำงานในรอบปัจจุบัน ซึ่งจะไม่ทำคำสั่งหลังจากมันและไปเริ่มรอบถัดไปในทันที มาดูตัวอย่างการใช้งาน continue ในภาษา C++

#include <iostream>
using namespace std;

int main ()
{
for (int n = 1; n <= 10; n++) {
if(n % 2 == 0) continue;
cout << n << ",";
}
cout << " end loop";
return 0;
}

ในตัวอย่าง เราได้เขียนโปรแกรมในการแสดงตัวเลขจาก 1 ถึง 10 เช่นเดิม แต่โปรแกรมจะข้ามลูปถ้า n เป็นตัวเลขคู่ เราได้ใช้คำสั่ง If ในการสร้างเงื่อนไขว่าถ้าหากเป็นเลขคู่นั้นให้ทำงานคำสั่ง continue ทำให้คำสั่ง cout ที่อยู่หลังคำสั่ง continue ถูกข้ามการทำงานไป และโปรแกรมแสดงผลเพียงเลขคี่

1, 3, 5, 7, 9, end loop

ตัวอย่างการใช้งานคำสั่งวนซ้ำในภาษา C++

หลังจากคุณได้เรียนรู้และทราบการทำงานของคำสั่งวนซ้ำประเภทต่างๆ แล้ว ต่อไปจะเป็นตัวอย่างการใช้งานคำสั่งต่างๆ รวมกัน เราจะเขียนโปรแกรมช่วยการทอนเงินของผู้ขาย โดยที่จะทอนเหรียญที่มีค่ามากที่สุดก่อน นี่เป็นโค้ดของโปรแกรม

#include <iostream>

using namespace std;

int main () {

const int SIZE = 8;
int coin[SIZE] = {1000, 500, 100, 50, 20, 10, 5, 1};
int count[SIZE] = {0, 0, 0, 0, 0, 0, 0, 0};

int money;
cout << "Enter money: ";
cin >> money;

for (int i = 0; i < SIZE; i++) {
count[i] = money / coin[i];
money %= coin[i];
}

cout << "Your change" << endl;

for (int i = 0; i < SIZE; i++) {
if(count[i] == 0) {
continue;
}
cout << coin[i] << " => " << count[i] << endl;
}

return 0;
}

ในตัวอย่าง เป็นโปรแกรมในการทอนเงินจากการซื้อของ โดยโปรแกรมจะให้กรอกจำนวนเงินที่ต้องการจะทอนและบอกว่าต้องทอนเงินเหรียญและธนบัตรขนาดต่างๆ อย่างละเท่าไร ในส่วนแรกของโปรแกรมเราได้กำหนดประเภทของเหรียญและธนบัตรในตัวแปรอาเรย์ coin และตัวแปรอาเรย์ count สำหรับนับเหรียญและธนบัตรแต่ละประเภท และโปรแกรมของเราเริ่มทำงานจากการรับจำนวนเงินทอนเก็บในตัวแปร money

for (int i = 0; i < SIZE; i++) {
count[i] = money / coin[ i];
money %= coin[ i];
}

ต่อมาเราได้ใช้คำสั่ง for loop ในการวนรอบอาเรย์ coin โดยวนจากประเภทที่มากที่สุดก่อน และเพื่อหาจำนวนเงินที่ต้องทอนของแต่ละประเภทว่าต้องทอนเท่าไหร่ โดยจะนำจำนวนเงินทั้งหมดหารด้วยประเภทของเงินและเก็บไว้ในตัวแปร count หลังจากนั้นเราลบจำนวนเงินนั้นออกไปโดยการใช้ดำเนินการ mod

for (int i = 0; i < SIZE; i++) {
if(count[i] == 0) {
continue;
}
cout << coin[i] << " => " << count[i] << endl;
}

หลังจากการหาจำนวนเงินแต่ละประเภทที่ต้องทอนเสร็จสิ้นแล้ว เราใช้คำสั่ง for loop ในการวนเพื่อแสดงผลว่าจะต้องทอนเงินแต่ละประเภทเท่าไหร่ และเราใช้คำสั่ง continue ในการข้ามการแสดงผลประเภทของเงินที่ไม่มีการทอนไป

Enter money: 465
Your change
100 => 4
50 => 1
10 => 1
5 => 1

นี่เป็นผลลัพธ์การทำงานของโปรแกรม เมื่อเรากรอกจำนวนเงินเป็น 465 โปรแกรมจะบอกว่าต้องทอนธนบัตรประเภท 100 จำนวน 4 ใบและ 50 จำนวน 1 ใบ และทอนเหรียญ 10 และเหรียญ 5 อย่างละ 1

ในบทนี้ เราได้ครอบคลุมเนื้อหาพื้นฐานของคำสั่งควบคุมโปรแกรม ซึ่งเป็นเครื่องมีที่มีประโยชน์เพื่อช่วยให้เราควบคุมโปรแกรมให้เป็นไปตามที่ต้องการได้ และคุณได้เห็นตัวอย่างการนำไปประยุกต์ใช้ในการเขียนโปรแกรมกับการแก้ปัญหาจริง ซึ่งคุณสามารถสร้างโปรแกรมอะไรก็ได้เพื่อมาช่วยให้คุณสามารถทำงานได้ง่ายขึ้น


บทความเกี่ยวกับ คำสั่งควบคุม

คำสั่งควบคุม ในภาษา C

ในบทก่อนหน้า คุณได้เรียนรู้พื้นฐานของภาษา C ไปแล้ว ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับการควบคุมการทำงานของโปรแกรมโดยใช้คำสั่งควบคุม ในภาษา C มีคำสั่งควบคุมหลายประเ...

คำสั่งเลือกเงื่อนไข ในภาษา C#

ในเรียนนี้ คุณจะได้เรียนรู้เกี่ยวกับคำสั่งเงื่อนไขในภาษา C#คำสั่งเงื่อนไข (selection statement) เป็นคำสั่งที่ให้คุณสามารถควบคุมโปรแกรมให้ทำงานตามต้องการ ตามเงื่...

คำสั่งเลือกเงื่อนไข ในภาษา Java

ในบทนี้ คุณจะได้เรียนรู้วิธีการควบคุมการทำงานของโปรแกรมโดยคำสั่งเงื่อนไขในภาษา Java เพื่อควบคุมโปรแกรมให้ทำงานตามที่ต้องการ โดยคำสั่งเงื่อนไขในภาษา Java ที่คุณจ...

คำสั่งเลือกเงื่อนไข ในภาษา Visual Basic

ในบทนี้ คุณจะได้เรียนรู้การควบคุมโปรแกรม โดยใช้คำสั่งเลือกเงื่อนไขในภาษา Visual Basicในการเขียนโปรแกรมนั้น เราอาจจะต้องการให้โปรแกรมให้ทำงานที่แตกต่างกันขึ้นกับ...

คำสั่งเลือกเงื่อนไข ในภาษา Python

ในบทนี้ คุณจะได้เรียนเกี่ยวกับคำสั่งเลือกเงื่อนไขในภาษา Python เราจะพูดถึงการควบคุมการทำงานโปรแกรมด้วยคำสั่ง if, if else และ elif เพื่อให้โปรแกรมสามารถทำงานซับซ...