เรียนรู้ while loop ในภาษา C สำหรับผู้เริ่มต้น พร้อมตัวอย่างโค้ด

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 ดูสิ