الدرس(14) حلقة While Loop و Do-While Loop.

رقم الدرس 14
آخر تحديث 2025/07/20
تقدم القراءة

الدرس الرابع عشر: توظيف العامل الذي لا يكل


تخيل أنني طلبت منك كتابة “مرحباً أيها العالم” على الشاشة 500 مرة. بحلول السطر الخامس، ستشعر بالملل. بحلول السطر الخمسين، ستشنج يدك. بحلول السطر الخمسمائة، ستكره البرمجة. الكمبيوتر لا يشعر بأي من هذا. لديه صبر لا نهائي وقدرة على التحمل لا تتعب. لكن كيف تخبر آلة “افعل هذا حتى أخبرك بالتوقف”؟ أنت لا تعطيها 500 أمر فردي. أنت تعطيها قاعدة واحدة بسيطة وعاملاً لا يكل لتنفيذها. اليوم، ستقوم بتوظيف أول عامل لا يكل في برنامجك. هذا العامل هو “الحلقة التكرارية” (Loop)، وهو أساس الأتمتة والقوة الحقيقية للحوسبة.

أين نحن الآن؟ وماذا بعد؟


لقد أتقنت هياكل القرار (`if`, `switch`). أصبح برنامجك ذكياً. الآن، سنجعله قوياً ومثابراً. هذا الدرس يقدم لك أول نوع من الحلقات التكرارية، مما يسمح لبرنامجك بتنفيذ المهام المتكررة بكفاءة. هذه هي خطوتك الأولى نحو معالجة مجموعات كبيرة من البيانات وأتمتة العمليات المعقدة.

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


– فهم الغرض من الحلقات التكرارية كأداة للأتمتة.
– بناء حلقة `while` لتكرار كتلة من الكود طالما أن الشرط صحيح.
– تحديد المكونات الثلاثة الأساسية للحلقة: التهيئة، الشرط، والتحديث.
– التعرف على خطر “الحلقة اللانهائية” (Infinite Loop) وكيفية تجنبه.
– استخدام حلقة `do-while` لضمان تنفيذ الكود مرة واحدة على الأقل.

### الفصل الأول: الحارس اليقظ (حلقة While)

1

تحقق أولاً، ثم اعمل


حلقة `while` تشبه حارساً يقظاً يقف عند بوابة. أمره كالتالي: “طالما أن الضوء الأخضر مضاء، استمر في السماح للسيارات بالمرور”. قبل أن يسمح بمرور أي سيارة، ينظر أولاً إلى الضوء. إذا كان الضوء أحمر من البداية (`false`)، فلن يسمح بمرور أي سيارة على الإطلاق.

هذه الحلقة مثالية عندما لا تكون متأكداً من عدد مرات التكرار التي تحتاجها، أو ما إذا كنت بحاجة إلى التكرار على الإطلاق. الأمر كله يعتمد على الشرط.

لديها ثلاثة أجزاء حيوية:
1. **التهيئة (Initialization):** متغير يبدأ العد. (الحارس يبدأ نوبته).
2. **الشرط (Condition):** السؤال الذي يتم طرحه قبل كل تكرار. (هل الضوء ما زال أخضر؟).
3. **التحديث (Update):** تغيير متغير العد للاقتراب من نهاية الحلقة. (مرور سيارة، الحارس يستعد للتالية).

اضغط على "تشغيل" لعرض النتيجة هنا.

رسائل النظام ستظهر هنا.

جاهز
السطر 1, العمود 1

### الفصل الثاني: الفخ الخالد (الحلقة اللانهائية)

2

عندما ينسى الحارس أن يعد


ماذا يحدث إذا نسينا الجزء الثالث (التحديث)؟ ماذا لو نسي الحارس أن يعد السيارات التي مرت؟ سيبقى الضوء أخضر إلى الأبد، وسيستمر في السماح بمرور نفس السيارة مراراً وتكراراً، إلى ما لا نهاية.

هذه هي “الحلقة اللانهائية” (Infinite Loop). إنها واحدة من أكثر الأخطاء شيوعًا وتسبب تجميد برنامجك أو استهلاكه لكل موارد النظام. يحدث ذلك عندما يظل شرط الحلقة `true` إلى الأبد.

خطر: الحلقة اللانهائية


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

اضغط على "تشغيل" لعرض النتيجة هنا.

رسائل النظام ستظهر هنا.

جاهز
السطر 1, العمود 1

### الفصل الثالث: الحارس المثابر (حلقة Do-While)

3

اعمل أولاً، ثم تحقق


الآن، تخيل حارساً مختلفاً. هذا الحارس لديه أمر مختلف: “اسمح لسيارة واحدة بالمرور، ثم تحقق من الضوء. إذا كان أخضر، اسمح بمرور المزيد”.

هذه هي حلقة `do-while`. إنها تضمن أن كتلة الكود سيتم تنفيذها مرة واحدة على الأقل، بغض النظر عن الشرط. بعد التنفيذ الأول، تتحقق من الشرط لتقرر ما إذا كانت ستستمر أم لا.

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

حلقة Do-While


هي حلقة تكرارية تنفذ كتلة الكود أولاً، ثم تقيّم الشرط. تضمن التنفيذ مرة واحدة على الأقل. لاحظ الفاصلة المنقوطة (;) الضرورية بعد شرط `while`.

اضغط على "تشغيل" لعرض النتيجة هنا.

رسائل النظام ستظهر هنا.

جاهز
السطر 1, العمود 1


[quiz_question question=”ماذا سيطبع الكود التالي؟ int x = 10; do { System.out.println(x); x++; } while (x < 5);" explanation="حلقة do-while تنفذ الجسم أولاً، لذلك ستطبع قيمة x الأولية وهي 10. ثم يتم زيادة x لتصبح 11. بعد ذلك، يتم التحقق من الشرط while (x < 5). بما أن 11 ليست أصغر من 5، فإن الشرط false، وتتوقف الحلقة."] [quiz_option text="لن يطبع أي شيء."] [quiz_option text="10" correct="true"] [quiz_option text="10 9 8 7 6 5"] [quiz_option text="سيقع في حلقة لانهائية."] [/quiz_question] [lesson_summary title="خلاصة رحلة اليوم"] لقد وظفت اليوم عاملين أساسيين في فريقك البرمجي. الأول هو while، الحارس اليقظ الذي يتحقق من الظروف قبل أن يتصرف، وهو مثالي للمهام التي قد لا تحتاج إلى تنفيذ على الإطلاق. الثاني هو do-while، العامل المثابر الذي يتصرف مرة واحدة على الأقل قبل أن يسأل، وهو مثالي لجمع المدخلات والتحقق منها. لقد تعلمت أيضاً أن القوة تأتي مع المسؤولية: نسيان تحديث متغيرات الحلقة يمكن أن يؤدي إلى فخ الحلقة اللانهائية. [/lesson_summary] [next_steps title="الخطوة التالية: العامل المتخصص"] حلقة while رائعة ومرنة، لكن في كثير من الأحيان، نعرف بالضبط عدد المرات التي نريد تكرار شيء ما. "اخلط لمدة 3 دقائق"، "اطبع أول 10 أسماء في القائمة". لهذه المهام المحددة، يوجد عامل أكثر تخصصًا وتنظيمًا يُدعى حلقة for. في الدرس القادم، سنتعلم عن هذه الحلقة الأنيقة التي تجمع التهيئة والشرط والتحديث في سطر واحد واضح، مما يجعل الكود الخاص بك أكثر أمانًا وقابلية للقراءة. [/next_steps]

🔐 سجل دخولك لحفظ التقدم

سجل دخولك لحفظ تقدمك والحصول على شهادة إتمام

تسجيل الدخول