การใช้คำสั่ง continue ในภาษา C: ตัวอย่าง การใช้งาน และข้อควรระวังสำหรับโปรแกรมเมอร์

目次

1. ภาพรวมและความสำคัญของคำสั่ง continue

คำสั่ง continue คืออะไร

คำสั่ง continue เป็นคำสั่งควบคุมในภาษา C ที่ใช้ภายในกระบวนการวนซ้ำ (loop) เช่น for, while และ do-while เมื่อเงื่อนไขที่กำหนดเป็นจริง คำสั่งนี้จะข้ามการทำงานที่เหลือในรอบนั้น และไปยังการทำซ้ำรอบถัดไปทันที ช่วยลดกระบวนการที่ไม่จำเป็นและทำให้โค้ดมีประสิทธิภาพมากขึ้น

ข้อดีและข้อเสียของคำสั่ง continue

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

2. โครงสร้างพื้นฐานของคำสั่ง continue

โครงสร้างพื้นฐานของ continue

คำสั่ง continue มีโครงสร้างที่เรียบง่าย สามารถเขียนได้ดังนี้

continue;

เมื่อโปรแกรมรันถึงบรรทัดนี้ในลูป จะข้ามการทำงานที่เหลือของรอบปัจจุบันและเริ่มรอบถัดไปโดยทันที ช่วยให้หลีกเลี่ยงการทำงานที่ไม่จำเป็นและทำให้โปรแกรมมีประสิทธิภาพมากขึ้น

ความแตกต่างระหว่าง continue และ break

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

3. วิธีการใช้คำสั่ง continue พื้นฐาน

ตัวอย่างการใช้ continue กับ for loop

หากใช้ continue ใน for loop จะสามารถข้ามการทำงานบางรอบตามเงื่อนไขที่กำหนด เช่น ตัวอย่างนี้จะข้ามเมื่อ i เป็นเลขคู่

#include <stdio.h>

int main() {
    for(int i = 0; i < 10; i++) {
        if(i % 2 == 0) {
            continue;  // ข้ามเมื่อ i เป็นเลขคู่
        }
        printf("%dn", i);
    }
    return 0;
}

ในโปรแกรมนี้ เมื่อ i เป็นเลขคู่ คำสั่ง continue จะทำงานและข้ามคำสั่ง printf จึงจะแสดงเฉพาะเลขคี่เท่านั้น

ตัวอย่างการใช้ continue กับ while loop

สามารถใช้ continue กับ while loop ได้เช่นกัน เมื่อคำสั่ง continue ทำงาน ลูปจะข้ามไปยังรอบถัดไป

#include <stdio.h>

int main() {
    int i = 0;
    while(i < 10) {
        i++;
        if(i % 2 == 0) {
            continue;  // ข้ามเมื่อ i เป็นเลขคู่
        }
        printf("%dn", i);
    }
    return 0;
}

ในตัวอย่างนี้ เมื่อ i เป็นเลขคู่ คำสั่ง continue จะทำให้ข้าม printf ไปยังรอบถัดไป จึงแสดงเฉพาะเลขคี่

ตัวอย่างการใช้ continue กับ do-while loop

สามารถใช้ continue กับ do-while loop ได้เช่นกัน โดย do-while จะทำงานอย่างน้อย 1 ครั้ง ซึ่งการทำงานของ continue จะมีความแตกต่างเล็กน้อย

#include <stdio.h>

int main() {
    int i = 0;
    do {
        i++;
        if(i % 2 == 0) {
            continue;  // ข้ามเมื่อ i เป็นเลขคู่
        }
        printf("%dn", i);
    } while(i < 10);
    return 0;
}

ในโปรแกรมนี้ เมื่อ i เป็นเลขคู่จะข้าม printf เช่นกัน โดย do-while จะทำซ้ำจนกว่า i จะถึง 10

4. ตัวอย่างการประยุกต์ใช้คำสั่ง continue

การใช้ continue ในลูปซ้อน (nested loop)

สามารถใช้ continue ในลูปซ้อนได้ เช่น ในตัวอย่างนี้จะข้ามเมื่อ j เท่ากับ 2

#include <stdio.h>

int main() {
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j < 5; j++) {
            if(j == 2) {
                continue;  // ข้ามเมื่อ j เท่ากับ 2
            }
            printf("i:%d, j:%dn", i, j);
        }
    }
    return 0;
}

ในโปรแกรมนี้ หาก j เท่ากับ 2 จะข้าม printf ทำให้ไม่มีการแสดงผลสำหรับ j:2 ช่วยให้โปรแกรมทำงานได้อย่างมีประสิทธิภาพมากขึ้น

ตัวอย่างการข้ามการทำงานในลูปเมื่อเข้าเงื่อนไขเฉพาะ

คำสั่ง continue มีประโยชน์เมื่อจำเป็นต้องข้ามการประมวลผลบางอย่างในลูป ตัวอย่างนี้จะข้ามค่าติดลบในอาเรย์และแสดงเฉพาะค่าบวก

#include <stdio.h>

int main() {
    int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
    for(int i = 0; i < 10; i++) {
        if(data[i] < 0) {
            continue;  // ข้ามค่าติดลบ
        }
        printf("%dn", data[i]);
    }
    return 0;
}

โค้ดนี้จะข้ามค่าในอาเรย์ที่เป็นลบและแสดงเฉพาะค่าบวกเท่านั้น ทำให้การแสดงผลมีประสิทธิภาพมากขึ้น

5. ข้อควรระวังและแนวปฏิบัติที่ดีในการใช้ continue

ข้อเสียของการใช้ continue มากเกินไปกับความสามารถในการอ่านโค้ด

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

วิธีการอื่นแทนคำสั่ง continue

สามารถหลีกเลี่ยงการใช้ continue ได้โดยออกแบบเงื่อนไขการตรวจสอบใน if ตัวอย่างเช่น สามารถกลับทิศทางเงื่อนไขเพื่อประมวลผลเฉพาะกรณีที่ต้องการ

#include <stdio.h>

int main() {
    for(int i = 0; i < 10; i++) {
        if(i % 2 != 0) {
            printf("%dn", i);
        }
    }
    return 0;
}

ในโค้ดนี้ จะประมวลผลเฉพาะกรณีที่ i เป็นเลขคี่เท่านั้น จึงไม่ต้องใช้ continue และช่วยให้โค้ดอ่านง่ายขึ้น

แนวปฏิบัติที่ดีเพื่อป้องกันโค้ดซับซ้อนเกินไป

ขณะใช้ continue ควรพิจารณาแนวทางเหล่านี้

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

6. แบบฝึกหัด: การเขียนโปรแกรมโดยใช้คำสั่ง continue

โจทย์ที่ 1: เขียนโปรแกรมแสดงเลข 1 ถึง 10 โดยข้ามค่าที่ผู้ใช้กำหนด

เขียนโปรแกรมแสดงเลข 1 ถึง 10 โดยข้ามค่าที่ผู้ใช้ป้อน ตัวอย่างเช่น ถ้าผู้ใช้ป้อน “3” ผลลัพธ์จะเป็น “1 2 4 5 6 7 8 9 10”

#include <stdio.h>

int main() {
    int num;
    printf("กรุณาใส่หมายเลขที่ต้องการข้าม (1-10): ");
    scanf("%d", &num);

    for(int i = 1; i <= 10; i++) {
        if(i == num) {
            continue;  // ข้ามหมายเลขที่ผู้ใช้ป้อน
        }
        printf("%d ", i);
    }
    return 0;
}

ในโปรแกรมนี้จะใช้ continue เพื่อข้ามค่าที่ผู้ใช้ระบุและแสดงเฉพาะตัวเลขที่เหลือ

โจทย์ที่ 2: เขียนโปรแกรมแสดงคู่ของ i และ j โดยข้าม j ที่เป็น 3 ในลูปซ้อน

เขียนโปรแกรมโดยใช้ลูปซ้อนเพื่อแสดงค่าของ i และ j ยกเว้น j ที่เป็น 3

#include <stdio.h>

int main() {
    for(int i = 0; i < 5; i++) {
        for(int j = 0; j < 5; j++) {
            if(j == 3) {
                continue;  // ข้ามเมื่อ j เท่ากับ 3
            }
            printf("i:%d, j:%dn", i, j);
        }
    }
    return 0;
}

ในโปรแกรมนี้ continue จะทำงานเมื่อ j เป็น 3 ซึ่งจะข้ามรอบนั้นในลูปย่อย

โจทย์ที่ 3: เขียนโปรแกรมจัดการข้อมูลในอาเรย์และข้ามค่าติดลบด้วย continue

เขียนโปรแกรมประมวลผลข้อมูลในอาเรย์ ข้ามค่าที่เป็นลบแล้วประมวลผลเฉพาะค่าที่เป็นบวก

#include <stdio.h>

int main() {
    int data[10] = {1, -1, 2, -2, 3, -3, 4, -4, 5, -5};
    for(int i = 0; i < 10; i++) {
        if(data[i] < 0) {
            continue;  // ข้ามค่าติดลบ
        }
        printf("%dn", data[i]);
    }
    return 0;
}

ในโค้ดนี้จะข้ามค่าติดลบด้วย continue ทำให้แสดงเฉพาะค่าที่ต้องการ

7. สรุป

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

ข้อควรจำเมื่อใช้ continue อย่างมีประสิทธิภาพ

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

เรียนรู้เพิ่มเติม

เพื่อเข้าใจ continue อย่างลึกซึ้ง ควรศึกษาเปรียบเทียบกับคำสั่งควบคุมอื่นๆ เช่น break และ return รวมถึงทดลองใช้งานในสถานการณ์จริง เพื่อสัมผัสผลลัพธ์และประโยชน์ด้วยตัวเอง