📝 فهم حلقة While في جافا: دليلك الشامل للمبتدئين
مرحباً بك في رحلة تعلم الجافا! 🚀 اليوم سنتعرف على واحدة من أهم أدوات التحكم في تدفق البرنامج: حلقة while. تخيل أنك تريد أن تطلب من البرنامج تكرار مهمة معينة، مثل طباعة الأرقام من 1 إلى 10، أو الاستمرار في طلب إدخال من المستخدم حتى يدخل القيمة الصحيحة. هنا يأتي دور الحلقات التكرارية، و while هي أبسطها وأكثرها مباشرة.
ببساطة، حلقة while هي هيكل تحكم يستمر في تنفيذ كتلة من الأوامر (الكود) طالما أن شرطاً محدداً يبقى صحيحاً (true). فكر فيها كجملة: "طالما هذا الشرط صحيح، افعل هذا الشيء".
🔧 تركيب (Syntax) حلقة while الأساسي
هذا هو الشكل الأساسي لكتابة حلقة while في جافا:
while (condition) {
// الكود الذي تريد تكرار تنفيذه
// طالما الشرط صحيح
}
دعونا نحلّلها معاً:
- الكلمة المفتاحية
while: تخبر لغة جافا أننا نبدأ حلقة تكرارية من نوعwhile. - الشرط (Condition): يتم وضعه داخل الأقواس
(). يجب أن يكون هذا التعبير من النوعboolean، أي نتيجته إماtrue(صحيح) أوfalse(خاطئ). يتم فحص هذا الشرط في بداية كل دورة تكرار. - جسم الحلقة (Body): هو كتلة الأوامر الموجودة داخل الأقواس المعقوفة
{}. هذه هي التعليمات التي سيتم تنفيذها مرة تلو الأخرى طالما كان الشرط صحيحاً.
🧪 مثال بسيط جداً: العد من 1 إلى 5
لنرى كيف يعمل هذا في الممارسة. نريد طباعة الأرقام من 1 إلى 5.
int counter = 1; // 1. تهيئة عداد
while (counter <= 5) { // 2. الشرط: طالما العداد أصغر أو يساوي 5
System.out.println("Number Is " + counter); // 3. تنفيذ الأمر
counter++; // 4. زيادة قيمة العداد بمقدار 1 (هذه خطوة حاسمة!)
}
كيف يعمل هذا الكود خطوة بخطوة؟
int counter = 1;: ننشئ متغيراً اسمهcounter(عداد) ونعطيه القيمة الأولية1.while (counter <= 5): ندخل الحلقة. نفحص الشرط: هلcounter(1) أصغر أو يساوي5؟ نعم (true)، لذلك ندخل إلى جسم الحلقة.System.out.println(...): ننفذ الأمر داخل الحلقة ونطبع الرقم 1.counter++;: هذه أهم خطوة! نزيد قيمةcounterبمقدار 1، ليصبح قيمته2.- نعود إلى بداية الحلقة: نفحص الشرط مرة أخرى: هل
counter(2) أصغر أو يساوي5؟ نعم (true)، ندخل الحلقة ونطبع 2، ثم نزيدcounterإلى 3. - تستمر هذه العملية (فحص الشرط -> التنفيذ -> زيادة العداد) حتى تصبح قيمة
counterمساوية لـ6. - عند
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();
كيف يعمل؟
- نأخذ أول تخمين من المستخدم.
- ندخل الحلقة
whileفقط إذا كان تخمينه غير صحيح (userGuess != 7). - داخل الحلقة، نطلب منه إدخال رقم جديد. هذا الإدخال الجديد يغير قيمة
userGuess، مما قد يجعل الشرطfalseفي المرة القادمة (إذا أدخل 7). - عندما يدخل المستخدم الرقم
7، يصبح الشرط7 != 7خاطئاً (false)، فتتوقف الحلقة ونطبع رسالة النجاح.
🤔 متى نستخدم while؟
استخدم حلقة while عندما:
- لا تعرف بالضبط عدد مرات التكرار مسبقاً. (مثل: "استمر حتى يدخل المستخدم كلمة المرور الصحيحة").
- تريد التكرار بناءً على شرط منطقي وليس مجرد عدّ.
- قد لا تحتاج إلى تنفيذ الحلقة إطلاقاً إذا كان الشرط خاطئاً من البداية.
ماذا سنتعلم في الدرس القادم؟ 🎯
تعلمنا اليوم كيف نجعل البرنامج يكرر المهام باستخدام while طالما بقي الشرط صحيحاً. ولكن ماذا لو أردنا تنفيذ الكود مرة واحدة على الأقل، ثم نتحقق من الشرط؟ مثلاً، لعبة نرد: يجب أن نرمي النرد (ننفذ الأمر) مرة واحدة أولاً، ثم نسأل "هل تريد الرمي مرة أخرى؟".
في الدرس القادم، سنتعرف على الشقيق المقرب لحلقة while، وهي حلقة do-while، والتي تضمن تنفيذ جسم الحلقة مرة واحدة قبل حتى التحقق من الشرط! استعد لاستكمال صورة الحلقات التكرارية في جافا.
🎓 اختبر نفسك
التعليقات
شاركنا رأيك أو أسئلتك حول هذا المقال