حلقة for

تُستخدم حلقة for غالبًا في الحالات التي يكون فيها عدد التكرارات معلومًا مسبقًا، وهي تسمح بكتابة التهيئة، والشرط، والتحديث في سطر واحد.

الصياغة (Syntax)

for (initialization; condition; update)
    statement;

مثال: العدّ التنازلي

// countdown using a for loop
#include <iostream>
using namespace std;

int main() {
    for (int n = 10; n > 0; n--) {
        cout << n << ", ";
    }
    cout << "liftoff!\n";
}

الناتج:

10, 9, 8, 7, 6, 5, 4, 3, 2, 1, liftoff!

كيف تعمل حلقة for؟

  1. التهيئة (Initialization): تُنفَّذ مرة واحدة قبل بداية الحلقة، مثل: int n = 10;.
  2. الشرط (Condition): يُفحَص قبل كل تكرار، مثل: n > 0.
  3. التحديث (Update): يُنفَّذ بعد كل تكرار، مثل: n--.
  4. الامر (Statement): تُنفَّذ إذا كان الشرط صحيحًا، مثل: cout << n << ", ";.

أمثلة

الأجزاء الثلاثة في رأس حلقة for اختيارية، لكن الفواصل المنقوطة (;) إلزامية:

for (; n < 10; )    // بدون تهيئة أو تحديث
for (; n < 10; ++n) // مع تحديث فقط
Caution

إهمال الشرط تمامًا يجعل الحلقة لا نهائية.

حلقة for المبنية على المجال (Range-Based for)

تُستخدم للتكرار تلقائيًا على كل عنصر في مجال (مثل المصفوفات أو السلاسل النصية):

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str {"Hello!"};
    for (char c : str)
        cout << "[" << c << "]";
    cout << '\n';
}

الناتج:

[H][e][l][l][o][!]

يمكن استخدام الكلمة auto لجعل المترجم يحدّد نوع العنصر تلقائيًا، وتكون النتيجة نفسها:

for (auto c : str)
    cout << "[" << c << "]";