حلقة do…while
حلقة تنفّذ الكود أولًا ثم تفحص الشرط، فتعمل مرّة واحدة على الأقل دائمًا.
- التمييز بين while و do…while في توقيت فحص الشرط.
- كتابة do…while مع الفاصلة المنقوطة في نهايتها.
- استخدامها في القوائم والتحقّق من الإدخال.
١الفرق الجوهري
do{ // الكود الذي يتكرّر}while (الشرط);
٢جرّب الفرق بنفسك
غيّر قيمة x. عند 5 يكون الشرط x > 10 خاطئًا من البداية.
int x = 5;while (x > 10){ System.out.println("نُفّذت");}
int x = 5;do{ System.out.println("نُفّذت");}while (x > 10);
٣الاستخدام الأنسب: قائمة إدخال
يجب أن تظهر القائمة قبل أن نعرف اختيار المستخدم، ثم تتكرّر حتى يختار الخروج.
import java.util.Scanner; public class Menu{ public static void main(String[] args) { Scanner input = new Scanner(System.in); int choice; do { System.out.println("1) بدء"); System.out.println("2) مساعدة"); System.out.println("0) خروج"); System.out.print("اختر: "); choice = input.nextInt(); } while (choice != 0); // كرّر حتى يُدخل 0 System.out.println("تم الخروج"); }}
أنت المستخدم: اختر رقمًا في كل مرّة.
متى تستخدمها؟ عندما يجب تنفيذ الكود مرّة واحدة على الأقل ثم تقرّر التكرار: القوائم، والتحقّق من الإدخال، وإعادة المحاولة. وفي غير ذلك، while و for أكثر شيوعًا.
do { ...}while (choice != 0)
do { ...}while (choice != 0);
لا تنسَ ; في نهاية do…while.
توقّع وتحقّق
أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.
كم مرّة تُطبع «Hi»؟
int n = 0;do{ System.out.println("Hi");}while (n > 5);
ما الذي يميّز do…while عن while؟
أي موقف يناسب do…while أكثر؟
الخلاصة
- do…while: نفّذ ثم افحص، فتعمل مرّة واحدة على الأقل.
- الصيغة تنتهي بـ
while (الشرط); - تحتاج كأي حلقة شيئًا يغيّر المتغيّر لتجنّب الحلقة اللانهائية.
- مناسبة للقوائم والتحقّق من الإدخال.
تحدٍّ برمجي: إدخال مضمون
متوسطاطلب من المستخدم رقمًا من 1 إلى 10، وكرّر الطلب حتى يُدخل رقمًا صحيحًا ضمن المدى.
- استخدم do…while لأن السؤال يُطرح مرة واحدة على الأقل.
- اطبع رسالة خطأ عند الرقم خارج المدى.
- اطبع الرقم المقبول في النهاية.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
import java.util.Scanner; public class Guard{ public static void main(String[] args) { Scanner input = new Scanner(System.in); int x; // do { … } while (…); }}
مثال تشغيل بالمدخلات: 15 ثم 0 ثم 7
💡 تلميح 1
💡 تلميح 2
حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
import java.util.Scanner; public class Guard{ public static void main(String[] args) { Scanner input = new Scanner(System.in); int x; do { System.out.print("أدخل رقمًا من 1 إلى 10: "); x = input.nextInt(); if (x < 1 || x > 10) System.out.println("خارج المدى، حاول مجددًا"); } while (x < 1 || x > 10); System.out.println("تم قبول الرقم " + x); }}
أسئلة التقييم
ورقة العمل: حلقة do…while. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) تنفّذ do…while الكود:
2) موضع الشرط في do…while:
3) نضع في نهاية do…while بعد الشرط:
4) الفرق الجوهري عن while:
2السؤال الثاني: صح أم خطأ
3السؤال الثالث: أكمل الفراغات
1) نبدأ الجملة بالكلمة .
💡 كلمة من حرفين.
2) يوضع الشرط في الحلقة.
💡 أعلى الحلقة أم أسفلها؟
3) تُنفَّذ الكود على الأقل.
💡 على الأقل كم مرّة؟
4) نضع بعد while(الشرط) في النهاية.
💡 رمز يُنهي الأمر.
5) المثال الأنسب لها هو .
💡 مثال: عرض خيارات حتى يختار المستخدم 0.
4السؤال الرابع: التوصيل
طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):
- 1) do
- 2) while (شرط);
- 3) «نفّذ ثم افحص»
- 4) «افحص ثم نفّذ»
- 5) القائمة
- أ. while العادية.
- ب. بداية do…while.
- ج. do…while.
- د. نهاية do…while.
- هـ. استخدام مناسب لـ do…while.
5السؤال الخامس: أسئلة عملية
1) تتبّع الناتج:
int x = 5;do { System.out.println("مرة"); } while (x > 10);
2) أيّهما الأنسب لإظهار قائمة ثم التكرار؟
3) اكتب حلقة do…while تطبع 1 إلى 3:
int i = 1;do{ System.out.println(i); i++;}while (i <= 3);