วันพุธ, 16 เมษายน 2568

คำสั่ง loop for ใน C++

1. for loop พื้นฐาน

for (การเริ่มต้น; เงื่อนไข; การเปลี่ยนแปลง) {
    // คำสั่งที่จะทำซ้ำ
}

ตัวอย่าง:

for (int i = 0; i < 5; i++) {
    std::cout << i << " ";
}
// ผลลัพธ์: 0 1 2 3 4

2. for loop แบบนับถอยหลัง


for (int i = 10; i > 0; i--) {
    cout << i << " ";
}
// ผลลัพธ์: 10 9 8 7 6 5 4 3 2 1

3. for loop กับการกำหนดขั้นตอนเอง

for (int i = 0; i <= 10; i += 2) {
    cout << i << " ";
}
// ผลลัพธ์: 0 2 4 6 8 10

4. for loop ที่มีหลายตัวแปร

for (int i = 0, j = 10; i < 5; i++, j--) {
    cout << i << ":" << j << " ";
}
// ผลลัพธ์: 0:10 1:9 2:8 3:7 4:6

5. for loop ซ้อน for loop (Nested for loop)

for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        cout << "(" << i << "," << j << ") ";
    }
    cout << endl;
}
// ผลลัพธ์:
// (0,0) (0,1) (0,2)
// (1,0) (1,1) (1,2)
// (2,0) (2,1) (2,2)

6. Range-based for loop (C++11 ขึ้นไป)

vector<int> numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    cout << num << " ";
}
// ผลลัพธ์: 1 2 3 4 5

7. for loop กับ iterator

vector<int> vec = {10, 20, 30, 40, 50};
for (auto it = vec.begin(); it != vec.end(); ++it) {
    cout << *it << " ";
}
// ผลลัพธ์: 10 20 30 40 50

8. for loop ไม่มีเงื่อนไข (Infinite loop)

for (;;) {
    // คำสั่งที่จะทำซ้ำไปเรื่อยๆ
    // ต้องมีเงื่อนไขการหยุด (break) ภายในลูป
}

9. for loop กับ comma operator

for (int i = 0, j = 0; i + j < 10; i++, j += 2) {
    cout << i << "+" << j << "=" << (i + j) << " ";
}
// ผลลัพธ์: 0+0=0 1+2=3 2+4=6 3+6=9


หมายเหตุ:

  • สามารถใช้ break เพื่อออกจาก loop ก่อนครบรอบ
  • สามารถใช้ continue เพื่อข้ามการทำงานในรอบปัจจุบันและไปยังรอบถัดไป
  • ระวังการใช้ for loop แบบไม่มีที่สิ้นสุด (infinite loop) โดยไม่ตั้งใจ
  • Range-based for loop ใช้งานง่ายและอ่านง่าย แต่ใช้ได้กับ C++11 ขึ้นไปเท่านั้น
  • การใช้ auto ใน for loop กับ iterator ช่วยให้โค้ดยืดหยุ่นมากขึ้น