📝 فهم حلقة While في جافا: دليلك الشامل للمبتدئين

مرحباً بك في رحلة تعلم الجافا! 🚀 اليوم سنتعرف على واحدة من أهم أدوات التحكم في تدفق البرنامج: حلقة while. تخيل أنك تريد أن تطلب من البرنامج تكرار مهمة معينة، مثل طباعة الأرقام من 1 إلى 10، أو الاستمرار في طلب إدخال من المستخدم حتى يدخل القيمة الصحيحة. هنا يأتي دور الحلقات التكرارية، و while هي أبسطها وأكثرها مباشرة.

ببساطة، حلقة while هي هيكل تحكم يستمر في تنفيذ كتلة من الأوامر (الكود) طالما أن شرطاً محدداً يبقى صحيحاً (true). فكر فيها كجملة: "طالما هذا الشرط صحيح، افعل هذا الشيء".


🔧 تركيب (Syntax) حلقة while الأساسي

هذا هو الشكل الأساسي لكتابة حلقة while في جافا:

while (condition) {
    // الكود الذي تريد تكرار تنفيذه
    // طالما الشرط صحيح
}

دعونا نحلّلها معاً:

  1. الكلمة المفتاحية while: تخبر لغة جافا أننا نبدأ حلقة تكرارية من نوع while.
  2. الشرط (Condition): يتم وضعه داخل الأقواس (). يجب أن يكون هذا التعبير من النوع boolean، أي نتيجته إما true (صحيح) أو false (خاطئ). يتم فحص هذا الشرط في بداية كل دورة تكرار.
  3. جسم الحلقة (Body): هو كتلة الأوامر الموجودة داخل الأقواس المعقوفة {}. هذه هي التعليمات التي سيتم تنفيذها مرة تلو الأخرى طالما كان الشرط صحيحاً.

🧪 مثال بسيط جداً: العد من 1 إلى 5

لنرى كيف يعمل هذا في الممارسة. نريد طباعة الأرقام من 1 إلى 5.

int counter = 1; // 1. تهيئة عداد

while (counter <= 5) { // 2. الشرط: طالما العداد أصغر أو يساوي 5
    System.out.println("Number Is " + counter); // 3. تنفيذ الأمر
    counter++; // 4. زيادة قيمة العداد بمقدار 1 (هذه خطوة حاسمة!)
}

كيف يعمل هذا الكود خطوة بخطوة؟

  1. int counter = 1;: ننشئ متغيراً اسمه counter (عداد) ونعطيه القيمة الأولية 1.
  2. while (counter <= 5): ندخل الحلقة. نفحص الشرط: هل counter (1) أصغر أو يساوي 5؟ نعم (true)، لذلك ندخل إلى جسم الحلقة.
  3. System.out.println(...): ننفذ الأمر داخل الحلقة ونطبع الرقم 1.
  4. counter++;: هذه أهم خطوة! نزيد قيمة counter بمقدار 1، ليصبح قيمته 2.
  5. نعود إلى بداية الحلقة: نفحص الشرط مرة أخرى: هل counter (2) أصغر أو يساوي 5؟ نعم (true)، ندخل الحلقة ونطبع 2، ثم نزيد counter إلى 3.
  6. تستمر هذه العملية (فحص الشرط -> التنفيذ -> زيادة العداد) حتى تصبح قيمة counter مساوية لـ 6.
  7. عند counter = 6: نعود ونتحقق من الشرط: هل 6 <= 5؟ لا (false). هنا تتوقف الحلقة فوراً ولا ندخل إلى جسمها. وينتقل البرنامج إلى أي كود يلي حلقة while.

⚠️ تحذير مهم: الحلقة اللا منتهية (Infinite Loop)

ماذا لو نسينا زيادة العداد counter++ في المثال السابق؟

int counter = 1;
while (counter <= 5) {
    System.out.println("Number Is " + counter);
    // لقد نسينا كتابة counter++ هنا!
}

في هذه الحالة، ستظل قيمة counter ثابتة عند 1 للأبد. وسيظل الشرط 1 <= 5 صحيحاً (true) دائماً. ستستمر الحلقة في طباعة "الرقم هو: 1" إلى ما لا نهاية (أو حتى تغلق البرنامج قسراً)! 🔄

تذكر دائماً: يجب أن يكون هناك جزء داخل الحلقة يؤثر على الشرط ويقربه من أن يصبح false، وإلا ستقع في فخ الحلقة اللا منتهية.


💡 مثال واقعي: الاستمرار حتى إدخال القيمة الصحيحة

لنفترض أننا نريد أن نطلب من المستخدم إدخال الرقم 7، ونستمر في الطلب حتى يفعل ذلك.

import java.util.Scanner;

Scanner input = new Scanner(System.in);
int userGuess;

System.out.println("Enter The Magic Number (It's 7): ");
userGuess = input.nextInt();

while (userGuess != 7) { // الشرط: طالما التخمين لا يساوي 7
    System.out.println("Error! Try Again: ");
    userGuess = input.nextInt(); // هذا يؤثر على الشرط، فقد يدخل المستخدم 7 في المرة القادمة
}

System.out.println("You Are Right! The Magic Number Is 7.");
input.close();

كيف يعمل؟

  1. نأخذ أول تخمين من المستخدم.
  2. ندخل الحلقة while فقط إذا كان تخمينه غير صحيح (userGuess != 7).
  3. داخل الحلقة، نطلب منه إدخال رقم جديد. هذا الإدخال الجديد يغير قيمة userGuess، مما قد يجعل الشرط false في المرة القادمة (إذا أدخل 7).
  4. عندما يدخل المستخدم الرقم 7، يصبح الشرط 7 != 7 خاطئاً (false)، فتتوقف الحلقة ونطبع رسالة النجاح.

🤔 متى نستخدم while؟

استخدم حلقة while عندما:

  • لا تعرف بالضبط عدد مرات التكرار مسبقاً. (مثل: "استمر حتى يدخل المستخدم كلمة المرور الصحيحة").
  • تريد التكرار بناءً على شرط منطقي وليس مجرد عدّ.
  • قد لا تحتاج إلى تنفيذ الحلقة إطلاقاً إذا كان الشرط خاطئاً من البداية.

ماذا سنتعلم في الدرس القادم؟ 🎯

تعلمنا اليوم كيف نجعل البرنامج يكرر المهام باستخدام while طالما بقي الشرط صحيحاً. ولكن ماذا لو أردنا تنفيذ الكود مرة واحدة على الأقل، ثم نتحقق من الشرط؟ مثلاً، لعبة نرد: يجب أن نرمي النرد (ننفذ الأمر) مرة واحدة أولاً، ثم نسأل "هل تريد الرمي مرة أخرى؟".

في الدرس القادم، سنتعرف على الشقيق المقرب لحلقة while، وهي حلقة do-while، والتي تضمن تنفيذ جسم الحلقة مرة واحدة قبل حتى التحقق من الشرط! استعد لاستكمال صورة الحلقات التكرارية في جافا.