ในบทก่อนหน้า นักเรียนได้เรียนรู้พื้นฐานของภาษา C ไปแล้ว ในบทนี้นักเรียนจะได้เรียนรู้เกี่ยวกับการควบคุมการทำงานของโปรแกรมโดยใช้คำสั่งควบคุม ในภาษา C มีคำสั่งควบคุมหลายประเภทที่นักเรียนสามารถใช้ได้ เช่น if, if-else, for, while, do-while เป็นต้น ซึ่งคำสั่งควบคุมการทำงานของโปรแกรมนั้นจะมีสองประเภทคือ คำสั่งเลือกเงื่อนไขและคำสั่งวนซ้ำที่นักเรียนจะได้เรียนในบทนี้
คำสั่ง If #
คำสั่งควบคุมการทำงานที่เป็นพื้นฐานที่สุดในภาษา C นั้นก็คือคำสั่ง if มันใช้สำหรับสร้างเงื่อนไขให้โปรแกรมทำงานตามที่ต้องการ ยกตัวอย่างเช่น ถ้าหากวันนี้ฝนไม่ตก นักเรียนจะออกไปเที่ยวข้างนอก นี่เป็นการตัดสินใจที่เกิดขึ้นและถูกนำแนวคิดมาใช้ในการเขียนโปรแกรม นี่เป็นรูปแบบของการใช้งานคำสั่ง if ในภาษา C
if (expression)
{
// statements
}
คำสั่ง if เป็นคำสั่งที่ใช้ในการตรวจสอบว่าเงื่อนไขเป็นจริงหรือไม่ โดยการใช้ตัวดำเนินการต่างๆ ในการสร้างเงื่อนไขหรือ expression ถ้าผลลัพธ์เป็นจริง โปรแกรมจะทำงานในบล็อคของคำสั่ง if ที่เราได้กำหนดขึ้น และถ้าหากผลลัพธ์ไม่เป็นจริงโปรแกรมจะข้ามการทำงานในบล็อคคำสั่งไป มาดูตัวอย่างการใช้งานของมัน;
#include <stdio.h>
int main()
{
if (10 == 10)
{
printf("block 1 is executed.\n");
}
if (3 < 1)
{
printf("block 2 is executed.\n");
}
int a = 10;
if (a % 2 == 0)
{
printf("block 3 is executed.\n");
}
return 0;
}
ในการทำงานของโปรแกรมเป็นการใช้คำสั่ง if เพื่อเปรียบเงื่อนไขต่างๆ โดยแต่ละบล็อคคำสั่งจะทำงานเมื่อเงื่อนไขเป็นจริงเท่านั้น บล็อคแรกจะทำงานเพราะว่า 10 มีค่าเท่ากับ 10 บล็อคที่สองจะไม่ทำงานเพราะว่า 3 ไม่น้อยว่า 1 และสำหรับบล็อคสุดท้ายจะทำงาน เพราะว่า a
เป็นจำนวนคู่
และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน นักเรียนจะเห็นว่ามีแค่ block 1 และ 3 ที่แสดงผลเพราะว่าเงื่อนไขของ if เป็นจริง
block 1 is executed
block 3 is executed
คำสั่ง If else #
คำสั่ง if else เป็นคำสั่งมีการเพิ่มเงื่อนไข else if เข้ามาสำหรับการสร้างเงื่อนไขแบบหลายทางเลือก นั่นหมายถึงในบล็อคของคำสั่งจะทำงานเมื่อเงื่อนไขไม่ต้องกับเงื่อนไขก่อนหน้าแต่ตรงกับเงื่อนไขปัจจุบัน นอกจากนี้ยังมีคำสั่ง else ซึ่งเป็นบล็อคของคำสังที่จะทำงานถ้าหากไม่มีเงื่อนไขใดเป็นจริงเลย มาดูตัวอย่างของการใช้คำสั่ง if-else
#include <stdio.h>
int main()
{
int score;
scanf ("%d", &score);
if (score < 50)
printf("Your grade is F");
else if (score < 60)
printf("Your grade is D");
else if (score < 70)
printf("Your grade is C");
else if (score < 80)
printf("Your grade is B");
else
printf("Congratulation! You got grade A");
return 0;
}
ในตัวอย่างนี้เป็นโปรแกรมสำหรับการคำนวณเกรด โดยโปรแกรมจะให้นักเรียนสามารถใส่เกรดเข้ามา และเปรียบเทียบเงื่อนไขโดยใช้คะแนนตรวจสอบ นักเรียนจะสังเกตเห็นว่าเราสามารถ ใช้ else if ได้ถ้าหากมีหลายเงื่อนไข และใช้คำสั่ง else เป็นเงื่อนไข default ในกรณีที่ไม่ตรงกับเงื่อนไขใดๆ เลย
74
Your grade is B
85
Congratulation! You got grade A
นี่เป็นผลลัพธ์การทำงานของโปรแกรมเมื่อเราได้กรอกคะแนนเป็น 74 ซึ่งตรงกับเงือนไขของเกรด B หลังจากโปรแกรมพบอย่างน้อยหนึ่งเงือนไขที่เป็นจริง บล็อคที่เหลือจะถูกข้ามไปในทันที และเราได้รับโปรแกรมอีกครั้งและกรอกคะแนนเป็น 85 ซึ่งโปรแกรมไม่ตรงกับเงื่อนไขใดเลย ในบล็อคของคำสั่ง if และ else if ทำให้ในบล็อคของคำสั่ง else ทำงานและได้เกรด A
คำสั่ง Switch case #
Switch case เป็นคำสั่งเงื่อนไขที่ทำงานคล้ายกับ if แต่ส่วนมากจะใช้สำหรับการเปรียบเทียบกับค่าคงที่และต้องเป็นข้อมูลประเภท Integer หรือ Char เท่านั้น มาดูตัวอย่างของการใช้คำสั่ง Switch
#include <stdio.h>
int main()
{
int number = 5;
switch (number)
{
case 1:
printf("n is 1");
break;
case 2:
printf("n is 2");
break;
case 3:
printf("n is 3");
break;
default:
printf("Unknown");
}
return 0;
}
ในการทำงานจากตัวแปรด้านบน เป็นการส่งตัวแปร number
โดยจะนำไปเปรียบเทียบกับแต่ละ case ถ้าเงื่อนไขตรง โปรแกรมจำทำงานทันที่ จนกว่าจะสิ้นสุดบล็อคของคำสั่ง switch ดังนั้นเราจำเป็นต้องใช้คำสั่ง break
เพื่อให้จบการทำงาน สำหรับคำสั่ง default
จะเป็นการทำหลังจากที่ number
ไม่ตรงกับเงื่อนไขใดๆ ก่อนหน้า
คำสั่ง while loop #
หลังจากที่นักเรียนได้รู้จักคำสั่งเงื่อนไขพื้นฐานไปแล้ว ต่อไปนักเรียนจะได้รู้จักคำสั่งของการทำงานซ้ำ ซึ่งสามารถให้เราประมวลผลส่วนของโปรแกรมที่ต้องการได้
คำสั่งวนซ้ำที่ง่ายที่สุดคือคำสั่ง while loop โดยการทำงานของคำสั่ง while loop จะทำงานเมื่อเงื่อนไขเป็นจริง และจะสิ้นสุดการทำงานจนกว่าเงื่อนไขจะเป็นเท็จ มาดูตัวอย่างของโปรแกรม
#include <stdio.h>
int main()
{
int n = 1;
while (n <= 10)
{
printf("%d, ", n);
n++;
}
return 0;
}
ในตัวอย่างเป็นการใช้คำสั่ง while เพื่อแสดงผลตัวเลข 1 ถึง 10 โดยเราได้กำหนดค่าเริ่มต้นให้ n
เท่ากับ 1 และจะเพิ่มขึ้นในการแสดงผลแต่ละครั้ง จนกว่าจะมากกว่า 10 จึงสิ้นสุดการทำงานของโปรแกรม และจะได้ผลลัพธ์ดังนี้
1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
คำสั่ง do-while loop #
คำสั่ง do while นั้นคล้ายกับคำสั่ง while แต่สิ่งที่แตกต่างกันเล็กน้อยคือ คำสั่ง do while จะทำงานก่อนอย่างน้อยหนึ่งรอบ แล้วจะตรวจเงื่อนและถ้าเงื่อนไขไม่เป็นจริงจะสิ้นสุดการทำงาน มาดูตัวอย่างการใช้งาน
#include <stdio.h>
int main()
{
int n = 1;
do
{
printf("Enter number: ");
scanf ("%d", &n);
printf("You have entered %d\n", n);
}
while (n != 0);
printf("The program is terminated");
return 0;
}
ในตัวอย่างนี้ เป็นโปรแกรมที่จะรับค่าจากคีย์บอร์ด โดยจะรับตัวเลขเข้ามาและแสดงผลตัวเลขที่ได้รับเข้ามา และจะสิ้นสุดการทำงานเมื่อตัวเลขเป็น 0
1
You have entered 1
3
You have entered 3
0
You have entered 0
The program is terminated
คำสั่ง for loop #
คำสั่ง for loop เป็นคำสั่งวนซ้ำที่เราสามารถกำหนดค่าเริ่มต้นเงื่อนไขและการเปลี่ยนแปลงของค่าได้ ในตอนแรกครั้งเดียว โดยมีรูปแบบดังนี้
for (initial; expression; increment)
{
// statements
}
คำสั่ง for loop สามารถใช้ได้เหมือนกับ คำสั่ง while loop และ do while loop แต่โดยทั่วไปแล้ว เรามักจะใช้คำสั่ง for loop กับการวนซ้ำในจำนวนรวบที่แน่นอน หรือมันมักจะถูกใช้กับอาเรย์ มาดูตัวอย่างการใช้งาน
int i;
for (i = 0; i <= 10; i++) {
printf("%d, ", i);
}
ในตัวอย่างเป็นการใช้คำสั่ง for loop เพื่อวนซ้ำแสดงผลลัพธ์เลข 1 ถึง 10 เหมือนกับตัวอย่างของคำสั่ง while loop ก่อนหน้า มาดูตัวอย่างเพิ่มเติมในการใช้คำสั่ง for loop
#include <stdio.h>
int main()
{
char n[] = "Hello World";
int i;
for (i = 0; i < strlen(n); i++)
{
printf("%c", n[i]);
}
printf("\n");
for (i = strlen(n) - 1; i >= 0; i--)
{
printf("%c", n[i]);
}
return 0;
}
ในตัวอย่างเราได้ใช้ for loop ในการวนอ่านค่าจากในตัวแปรอาเรย์ โดยจำนวนรอบในการวนจะใช้ฟังก์ชัน strlen
ในการหาความยาวของอาเรย์ ซึ่งนักเรียนจะได้เรียนรู้เรื่องอาเรย์ในบทหลัง โดยในครั้งแรกจะอ่านมาแสดงปกติ และครั้งที่สองจะอ่านจากด้านหลังมา โดยจะได้ผลลัพธ์ดังนี้
Hello World
dlroW olleH
คำสั่ง break #
คำสั่ง break
เป็นคำสั่งที่ใช้สำหรับหยุดการทำงาน loop ในทันที โดยจะไม่สนใจเงื่อนไขของ loop ว่ายังเป็นจริงอยู่หรือไม่ มาดูตัวอย่างการใช้งานในการแสดงผลตัวเลข 1 ถึง 10
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
printf("%d, ", i);
if (i == 3)
break;
}
return 0;
}
ในการทำงานของโปรแกรม โปรแกรมจะวนเพียง 3 รอบ เพราะว่าเมื่อ i
มีค่าเป็น 3 เราได้ใช้คำสั่ง break เพื่อให้สิ้นสุดการทำงานของ for loop ทันที โดยจะไม่สนใจกว่าเงื่อนไขของ for loop จะยังคงเป็นจริง และนี่เป็นผลลัพธ์ของโปรแกรมเมื่อรัน
1, 2, 3,
คำสั่ง continue #
คำสั่ง continue เป็นคำสั่งสำหรับการข้ามการทำงานในรอบปัจจุบัน และทำงานในรอบใหม่ทันที มาดูตัวอย่าง
#include <stdio.h>
int main()
{
int i;
for (i = 1; i <= 10; i++)
{
if (i % 2 != 0)
continue;
printf("%d, ", i);
}
return 0;
}
ในตัวอย่างโปรแกรมจะทำงานคำสั่ง continue ถ้าหาก i
หาร 2 มีเศษเป็น 0 หรือจำนวนคู่ ดังนั้นโปรแกรมจะได้ดังนี้
2, 4, 6, 8, 10,
ในบทนี้ เรียนได้เรียนรู้คำสั่งควบคุมในเบื้องต้นในภาษา C เราได้พูดถึงการควบคุมโปรแกรมด้วยคำสั่งเลือกเงือนไขอย่งเช่นคำสั่ง If และ switch และคำสั่งวนซ้ำที่สามารถทำให้โปรแกรมของเราทำงานแบบเดิมซ้ำๆ ได้ภายในเงื่อนไขที่เปลี่ยนแปลงไป และนอกจากนี้นักเรียนยังได้รู้จักการใช้คำสั่ง continue และ break สำหรับควบคุมการทำงานของลูป