الوحدة 4: التكرار · الموضوع 11 من 13
الموضوع 11

حلقة do…while

حلقة تنفّذ الكود أولًا ثم تفحص الشرط، فتعمل مرّة واحدة على الأقل دائمًا.

doنفّذ أولًا whileثم افحص true: كرّر
بعد هذا الدرس ستستطيع أن:
  • التمييز بين while و do…while في توقيت فحص الشرط.
  • كتابة do…while مع الفاصلة المنقوطة في نهايتها.
  • استخدامها في القوائم والتحقّق من الإدخال.

١الفرق الجوهري

whileافحص ← ثم نفّذ. قد لا تعمل ولو مرّة.
do…whileنفّذ ← ثم افحص. تعمل مرّة واحدة على الأقل.
الصيغة العامة
do{    // الكود الذي يتكرّر}while (الشرط);

٢جرّب الفرق بنفسك

الحلقتان جنبًا إلى جنب

غيّر قيمة x. عند 5 يكون الشرط x > 10 خاطئًا من البداية.

int
while
int x = 5;while (x > 10){    System.out.println("نُفّذت");}
الناتج
do…while
int x = 5;do{    System.out.println("نُفّذت");}while (x > 10);
الناتج

٣الاستخدام الأنسب: قائمة إدخال

يجب أن تظهر القائمة قبل أن نعرف اختيار المستخدم، ثم تتكرّر حتى يختار الخروج.

Menu.java
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 أكثر شيوعًا.

✗ خطأ
snippet
do {    ...}while (choice != 0)
✓ صواب
snippet
do {    ...}while (choice != 0);

لا تنسَ ; في نهاية do…while.

توقّع وتحقّق

أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.

كم مرّة تُطبع «Hi»؟

snippet
int n = 0;do{    System.out.println("Hi");}while (n > 5);
do…while تنفّذ أولًا، ثم 0 > 5 false فتتوقّف.

ما الذي يميّز do…while عن while؟

أي موقف يناسب do…while أكثر؟

الخلاصة

تحدٍّ برمجي: إدخال مضمون

متوسط

اطلب من المستخدم رقمًا من 1 إلى 10، وكرّر الطلب حتى يُدخل رقمًا صحيحًا ضمن المدى.

المطلوب:
  • استخدم do…while لأن السؤال يُطرح مرة واحدة على الأقل.
  • اطبع رسالة خطأ عند الرقم خارج المدى.
  • اطبع الرقم المقبول في النهاية.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

Guard.java
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

Output – المطلوب×
أدخل رقمًا من 1 إلى 10: 15
خارج المدى، حاول مجددًا
أدخل رقمًا من 1 إلى 10: 0
خارج المدى، حاول مجددًا
أدخل رقمًا من 1 إلى 10: 7
تم قبول الرقم 7
💡 تلميح 1
شرط التكرار: الرقم خارج المدى، أي x < 1 || x > 10.
💡 تلميح 2
رسالة الخطأ داخل الحلقة بشرط if بالشرط نفسه.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

Guard.java
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السؤال الثاني: صح أم خطأ

1) do…while تفحص الشرط بعد التنفيذ.
الصواب: صح
2) قد لا تُنفَّذ do…while ولو مرّة واحدة.
الصواب: خطأ
3) نضع ; بعد while(الشرط) في النهاية.
الصواب: صح
4) do…while مناسبة لقوائم الإدخال.
الصواب: صح
5) do…while لا تحتاج ما يغيّر المتغيّر.
الصواب: خطأ

3السؤال الثالث: أكمل الفراغات

1) نبدأ الجملة بالكلمة .

💡 كلمة من حرفين.

الإجابة: do

2) يوضع الشرط في الحلقة.

💡 أعلى الحلقة أم أسفلها؟

الإجابة: أسفل

3) تُنفَّذ الكود على الأقل.

💡 على الأقل كم مرّة؟

الإجابة: مرة واحدة

4) نضع بعد while(الشرط) في النهاية.

💡 رمز يُنهي الأمر.

الإجابة: فاصلة منقوطة

5) المثال الأنسب لها هو .

💡 مثال: عرض خيارات حتى يختار المستخدم 0.

الإجابة: القائمة

4السؤال الرابع: التوصيل

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) do
  2. 2) while (شرط);
  3. 3) «نفّذ ثم افحص»
  4. 4) «افحص ثم نفّذ»
  5. 5) القائمة
  1. أ. while العادية.
  2. ب. بداية do…while.
  3. ج. do…while.
  4. د. نهاية do…while.
  5. هـ. استخدام مناسب لـ do…while.
المفتاح: (1) ب (2) د (3) ج (4) أ (5) هـ

5السؤال الخامس: أسئلة عملية

1) تتبّع الناتج:

snippet
int x = 5;do { System.out.println("مرة"); } while (x > 10);
الناتج الصحيح:
Output×
مرة

2) أيّهما الأنسب لإظهار قائمة ثم التكرار؟

3) اكتب حلقة do…while تطبع 1 إلى 3:

الحل النموذجي:
Main.java
int i = 1;do{    System.out.println(i);    i++;}while (i <= 3);
Output – JavaApplication (run)×
run:
1
2
3
BUILD SUCCESSFUL (total time: 0 seconds)
قارن إجابتك بالحل:
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».