การใช้งาน do while ในภาษา C: คู่มือเข้าใจลูปและตัวอย่างโค้ด

1. บทนำ

ความสำคัญของการวนซ้ำในภาษา C

ในการเขียนโปรแกรม การทำงานซ้ำ ๆ หรือ “ลูป” ถือว่าสำคัญมาก ในภาษา C จะมีการใช้คำสั่ง for, while และหัวข้อหลักในบทความนี้อย่าง do while สำหรับการวนซ้ำ บทความนี้จะเน้นที่ do while อธิบายตั้งแต่วิธีใช้งานพื้นฐานไปจนถึงตัวอย่างจริง

2. พื้นฐานของ do while

ไวยากรณ์พื้นฐานของ do while

do while จะรับประกันว่าคำสั่งในลูปจะถูกดำเนินการอย่างน้อยหนึ่งครั้ง ไวยากรณ์เป็นดังนี้

do {
    // คำสั่งที่ต้องการให้ทำ
} while (เงื่อนไข);

ในโครงสร้างนี้ โค้ดใน do จะถูกรันก่อน จากนั้นจะตรวจสอบเงื่อนไข ถ้าเงื่อนไข true ก็จะวนซ้ำอีกครั้ง ถ้าเป็น false ก็จะออกจากลูป

ความแตกต่างระหว่าง while และ do while

สำหรับ while เงื่อนไขจะถูกตรวจสอบก่อนและจะรันลูปก็ต่อเมื่อเงื่อนไขเป็น true ส่วน do while จะทำงานในลูปก่อน 1 ครั้งเสมอ แล้วค่อยตรวจสอบเงื่อนไข ดังนั้นอย่างน้อยหนึ่งครั้งโค้ดจะถูกรัน

3. กรณีที่ควรใช้ do while

การขอข้อมูลจากผู้ใช้ซ้ำจนกว่าจะถูกต้อง

do while เหมาะสำหรับตรวจสอบอินพุตจากผู้ใช้ เช่น การให้ป้อนรหัสผ่านซ้ำจนกว่าจะถูกต้อง สามารถใช้ do while เพื่อให้ตรวจสอบอินพุตครั้งแรกได้ง่าย หากไม่ถูกต้องก็วนขอใหม่

ใช้ในเกมสำหรับการวนซ้ำสถานะ

ในโปรแกรมเกม หากต้องการให้ผู้เล่นเลือกการกระทำซ้ำ ๆ เช่น “เล่นต่อ” ก็สามารถใช้ do while เพื่อควบคุมลูปของเกมได้จนกว่าผู้เล่นจะเลือกสิ้นสุดเกม

4. ตัวอย่างโค้ด do while

ตัวอย่างพื้นฐานของ do while

ตัวอย่างโค้ดต่อไปนี้จะแสดงวิธีใช้ do while แบบง่าย

#include <stdio.h>

int main() {
    int i = 0;

    do {
        printf("นับ: %dn", i);
        i++;
    } while (i < 5);

    return 0;
}

ในตัวอย่างนี้ โค้ดใน do จะถูกรันก่อน หาก i น้อยกว่า 5 ก็จะวนซ้ำต่อไป ผลลัพธ์คือจะแสดงเลขตั้งแต่ 0 ถึง 4

ตัวอย่างการรับอินพุตจากผู้ใช้

ตัวอย่างโค้ดเมื่อผู้ใช้ต้องป้อนค่าตามเงื่อนไขที่กำหนด หากไม่ตรงเงื่อนไขจะวนขอใหม่

#include <stdio.h>

int main() {
    int number;

    do {
        printf("กรุณาใส่ตัวเลขระหว่าง 1 ถึง 10: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("ค่าที่คุณกรอก: %dn", number);

    return 0;
}

โค้ดนี้จะขอให้ผู้ใช้กรอกตัวเลขระหว่าง 1 ถึง 10 หากกรอกไม่ถูกต้อง จะขอซ้ำจนกว่าจะถูกต้อง

5. ลูปไม่มีที่สิ้นสุดและการควบคุม

การสร้างลูปไม่มีที่สิ้นสุด

สามารถใช้ do while สร้างลูปไม่มีที่สิ้นสุดได้ หมายถึงเงื่อนไขเป็น true ตลอด เวลาจะวนซ้ำไม่รู้จบ

do {
    // โค้ดที่วนซ้ำตลอด
} while (1);

วิธีควบคุมลูปไม่มีที่สิ้นสุด

สามารถใช้ break หรือ continue เพื่อควบคุมการทำงานของลูป

  • break: ออกจากลูปทันที
  • continue: ข้ามการทำงานที่เหลือในลูปและเริ่มรอบใหม่

ตัวอย่างการใช้ break ในลูปไม่มีที่สิ้นสุด

#include <stdio.h>

int main() {
    int count = 0;

    do {
        printf("จำนวนรอบ: %dn", count);
        count++;
        if (count > 5) {
            break;
        }
    } while (1);

    return 0;
}

ในโค้ดนี้ หาก count มากกว่า 5 จะใช้ break เพื่อออกจากลูป

6. do while กับหลายเงื่อนไข

วิธีใช้หลายเงื่อนไข

ใน do while สามารถใช้ตัวดำเนินการทางตรรกะเช่น && (AND) หรือ || (OR) เพื่อรวมหลายเงื่อนไขได้

do {
    // คำสั่งที่ต้องการให้ทำ
} while (เงื่อนไข1 && เงื่อนไข2);

ตัวอย่างการใช้เงื่อนไขซับซ้อน

ตัวอย่างต่อไปจะตรวจสอบว่าผู้ใช้กรอกตัวเลขอยู่ในช่วง 1 ถึง 100 หากอยู่นอกช่วงจะวนขอข้อมูลใหม่

#include <stdio.h>

int main() {
    int number;

    do {
        printf("กรุณาใส่ตัวเลขระหว่าง 1 ถึง 100: ");
        scanf("%d", &number);
    } while (number < 1 || number > 100);

    printf("ค่าที่คุณกรอก: %dn", number);

    return 0;
}

ถ้าค่าที่กรอกไม่อยู่ในช่วง 1-100 จะวนขอข้อมูลใหม่

7. สรุป

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

8. แบบฝึกหัดและตัวอย่างคำตอบ

โจทย์

เขียนโปรแกรมให้ผู้ใช้กรอกตัวเลขระหว่าง 1 ถึง 10 ถ้ากรอกไม่ถูกต้องให้ขอข้อมูลใหม่ เมื่อได้ค่าถูกต้องให้นำตัวเลขนั้นไปคูณ 2 แล้วแสดงผลลัพธ์

ตัวอย่างคำตอบ

#include <stdio.h>

int main() {
    int number;

    do {
        printf("กรุณาใส่ตัวเลขระหว่าง 1 ถึง 10: ");
        scanf("%d", &number);
    } while (number < 1 || number > 10);

    printf("ผลคูณ 2 ของค่าที่คุณกรอก: %dn", number * 2);

    return 0;
}

ในโจทย์นี้จะใช้ do while เพื่อตรวจสอบอินพุต หากอยู่นอกช่วงจะขอข้อมูลใหม่จนกว่าจะถูกต้อง

9. ข้อมูลที่เกี่ยวข้องและก้าวถัดไป

เมื่อเข้าใจ do while แล้ว ควรเรียนรู้โครงสร้างลูปอื่น ๆ ในภาษา C เช่น for และ while เพื่อเลือกใช้ให้เหมาะกับแต่ละสถานการณ์ อีกหัวข้อสำคัญที่ควรเรียนรู้ถัดไปคือ “พอยน์เตอร์” ซึ่งจะช่วยให้เขียนโปรแกรมขั้นสูงในภาษา C ได้ ลองศึกษาต่อในหัวข้อนี้เพื่อพัฒนาทักษะของคุณ

年収訴求