1. บทนำ
ในการเขียนโปรแกรม การวนซ้ำ (looping) เป็นองค์ประกอบที่จำเป็นสำหรับการทำงานให้มีประสิทธิภาพ ภาษา C มีโครงสร้างการวนซ้ำหลายแบบ โดยเฉพาะอย่างยิ่ง while loop เป็นตัวเลือกที่เหมาะสมที่สุดเมื่อไม่ทราบจำนวนรอบการวนซ้ำล่วงหน้า ในบทความนี้ จะอธิบายเกี่ยวกับ while loop ในภาษา C ตั้งแต่วิธีการใช้งานเบื้องต้นไปจนถึงตัวอย่างประยุกต์ ให้ผู้เริ่มต้นเข้าใจง่าย เรียนรู้ข้อดีของ while loop ผ่านตัวอย่างโค้ดจริง และนำไปใช้ในการปฏิบัติได้
2. while loop ในภาษา C คืออะไร?
while loop คือโครงสร้างการวนซ้ำที่จะทำงานตราบเท่าที่เงื่อนไขเป็น จริง (true) เมื่อเงื่อนไขเป็น เท็จ (false) การวนซ้ำจะสิ้นสุดลง โค้ดต่อไปนี้แสดงโครงสร้างพื้นฐานของ while loop
int i = 0;
while (i < 10) {
printf("iの値は: %dn", i); // ค่าของ i คือ: %d\n
i++; // เพิ่มค่าตัวนับ (increment counter)
}
ในโค้ดนี้ จะแสดงค่าของ i
ตราบเท่าที่ i
น้อยกว่า 10 เมื่อ i
เป็น 10 การวนซ้ำจะสิ้นสุดลง while loop เหมาะสำหรับสถานการณ์ที่ไม่ทราบจำนวนรอบการวนซ้ำที่แน่นอน เพราะสามารถประมวลผลการวนซ้ำแบบไดนามิกตามเงื่อนไขได้
3. สถานการณ์ที่ควรใช้ while loop
while loop มีประโยชน์อย่างยิ่งเมื่อไม่ทราบจำนวนรอบการวนซ้ำล่วงหน้า มีประโยชน์ในกรณีที่ต้องรอจนกว่าผู้ใช้จะป้อนคำว่า “終了” (จบ) หรือวนซ้ำการประมวลผลตามเงื่อนไขจากอินพุตของเซ็นเซอร์ภายนอก ตัวอย่างโค้ดต่อไปนี้แสดงโปรแกรมที่รับค่าตัวเลขซ้ำๆ จนกว่าผู้ใช้จะป้อนตัวเลขติดลบ
int value = 0;
while (value >= 0) {
printf("数値を入力してください: "); // กรุณาป้อนตัวเลข:
scanf("%d", &value);
printf("入力された値は: %dn", value); // ค่าที่ป้อนคือ: %d\n
}
โปรแกรมนี้จะสิ้นสุดการวนซ้ำเมื่อผู้ใช้ป้อนค่าติดลบ ในสถานการณ์ที่ไม่ทราบจำนวนรอบการวนซ้ำ while loop เป็นตัวเลือกที่มีความยืดหยุ่นสูง
4. ข้อผิดพลาดที่พบบ่อยใน while loop
infinite loop (ลูปไม่รู้จบ) เป็นข้อผิดพลาดที่พบบ่อยอย่างหนึ่งใน while loop ซึ่งเกิดขึ้นเนื่องจากเงื่อนไขการสิ้นสุดลูปไม่เป็นจริงเลย นี่คือตัวอย่างทั่วไป
int i = 0;
while (i < 10) {
printf("iの値は: %dn", i); // ค่าของ i คือ: %d\n
// i++ を忘れてしまった! (ลืม i++!)
}
ในโปรแกรมนี้ ค่าของ i
จะไม่ถูกอัปเดต ทำให้เงื่อนไข i < 10
เป็น จริง ตลอดไป และโปรแกรมจะเข้าสู่ infinite loop โดยไม่สิ้นสุด infinite loop อาจทำให้ระบบมีภาระหนัก ดังนั้นจึงเป็นสิ่งสำคัญอย่างยิ่งที่จะต้องออกแบบเพื่อให้เงื่อนไขการสิ้นสุดเป็นจริงเสมอ

5. ตัวอย่าง while loop ที่ใช้งานได้จริง
ในส่วนนี้ จะแนะนำตัวอย่างโปรแกรมจริงบางส่วนที่ใช้ while loop
ตัวอย่างที่ 1: การวนซ้ำการรับค่าจากผู้ใช้
โปรแกรมที่แสดงข้อความซ้ำๆ จนกว่าผู้ใช้จะป้อนคำว่า “終了” (จบ)
char input[50];
// ขณะที่ input ไม่เท่ากับ "終了" (จบ)
while (strcmp(input, "終了") != 0) {
printf("メッセージを入力してください(終了で終了します): "); // กรุณาป้อนข้อความ (ป้อน "終了" เพื่อจบ):
scanf("%s", input);
printf("入力されたメッセージは: %sn", input); // ข้อความที่ป้อนคือ: %s\n
}
ตัวอย่างที่ 2: การวนซ้ำการบวกเลข
ต่อไป จะแนะนำโปรแกรมที่บวกตัวเลขไปเรื่อยๆ จนกว่าผลรวมจะเกิน 100
int sum = 0;
int num = 1;
while (sum < 100) {
sum += num;
num++;
printf("現在の合計: %dn", sum); // ผลรวมปัจจุบัน: %d\n
}
ตัวอย่างเหล่านี้แสดงให้เห็นว่าการใช้ while loop สามารถทำการวนซ้ำได้อย่างยืดหยุ่นอย่างไร
6. วิธีการใช้ while loop แบบประยุกต์
while loop สามารถนำไปใช้กับกระบวนการที่ซับซ้อนได้ ด้านล่างนี้เป็นตัวอย่างการใช้ while loop ซ้อนกันเพื่อประมวลผลอาเรย์ 2 มิติ
int i = 0, j = 0;
int matrix[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
while (i < 3) {
j = 0;
while (j < 3) {
printf("%d ", matrix[i][j]);
j++;
}
printf("n"); // ขึ้นบรรทัดใหม่
i++;
}
โค้ดนี้ใช้ while loop ที่ซ้อนกันเพื่อแสดงเนื้อหาของอาเรย์ 2 มิติ while loop มีประสิทธิภาพในการประมวลผลข้อมูลที่ซับซ้อน
7. เปรียบเทียบกับ loop ประเภทอื่น
ในภาษา C นอกเหนือจาก while loop ยังมี loop ประเภทอื่นอีกมากมาย ด้านล่างนี้คือการเปรียบเทียบกับ loop ประเภทอื่น
Loop | สถานการณ์การใช้งาน | ลักษณะเด่น |
---|---|---|
while loop | เมื่อไม่ทราบจำนวนรอบการวนซ้ำ | วนซ้ำขณะที่เงื่อนไขเป็นจริง ประเมินเงื่อนไขก่อน |
for loop | เมื่อทราบจำนวนรอบการวนซ้ำแน่นอน | สามารถกำหนดการกำหนดค่าเริ่มต้น เงื่อนไข และการอัปเดตในบรรทัดเดียวได้ |
do-while loop | เมื่อต้องการให้ทำงานอย่างน้อย 1 ครั้ง | ประเมินเงื่อนไขทีหลัง ทำให้ทำงานอย่างน้อย 1 ครั้ง |
ตารางเปรียบเทียบนี้จะเป็นประโยชน์ในการเลือก loop ที่เหมาะสมตามความต้องการของโปรแกรม
8. สรุป
ในบทความนี้ ได้อธิบายรายละเอียดเกี่ยวกับ while loop ในภาษา C while loop สามารถประมวลผลการวนซ้ำได้อย่างยืดหยุ่นและไดนามิกตามเงื่อนไข จึงสามารถรองรับสถานการณ์ต่างๆ ในโปรแกรมได้หลากหลาย ระมัดระวัง infinite loop และใช้ while loop ให้เกิดประโยชน์เพื่อพัฒนาทักษะการเขียนโปรแกรม ลองใช้ตัวอย่างโค้ดในบทความนี้และสัมผัสพลังของ while loop ดูสิ