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

حلقة while

بدل كتابة الأمر نفسه مرارًا، نطلب من الحاسب تكراره ما دام الشرط صحيحًا.

i <= 5 ? 123…
بعد هذا الدرس ستستطيع أن:
  • شرح فكرة التكرار ومتى نحتاجه.
  • كتابة حلقة while بأجزائها الثلاثة.
  • تتبّع قيم المتغيّرات في كل دورة.
  • اكتشاف الحلقة اللانهائية وتجنّبها.

١الفكرة

طباعة الأرقام من 1 إلى 100، أو إعادة سؤال حتى تصحّ الإجابة: كلاهما تكرار. والحلقة while تعني: «طالما الشرط صحيح، كرّر».

الصيغة العامة
while (الشرط){    // الكود الذي يتكرّر}
افحص الشرط←true: نفّذ ثم عُد للفحص·false: اخرج

٢الأجزاء الثلاثة لأي حلقة

١. التهيئةقيمة البداية، قبل الحلقةint i = 1;
٢. الشرطمتى نستمر، في رأس الحلقةi <= 5
٣. التغييرخطوة الاقتراب من التوقّف، داخل الحلقةi++;
🔎 تتبّع: طباعة 1 إلى 5
Main.java
int i = 1; while (i <= 5){    System.out.println(i);    i++;}
Variables · المتغيّرات في الذاكرة
Output×

لاحظ أن الشرط يُفحص 6 مرّات: خمس مرّات true، والسادسة false عندما تصبح i = 6.

٣مثال تطبيقي: جمع الأرقام من 1 إلى 5

🔎 تتبّع المجموع
Main.java
int i = 1;int sum = 0; while (i <= 5){    sum = sum + i;    i++;}System.out.println("المجموع = " + sum);
Variables · المتغيّرات في الذاكرة
Output×

٤الحلقة اللانهائية

🔎 ماذا لو نسينا i++؟
Main.java
int i = 1;while (i <= 5){    System.out.println(i);    // نسينا i++}
Variables · المتغيّرات في الذاكرة
Output×

توقّع وتحقّق

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

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

snippet
int i = 0;while (i < 3){    System.out.println("مرحبا");    i++;}
i = 0 و 1 و 2 ← ثلاث مرّات، وعند 3 يتوقّف.

ما الناتج؟

snippet
int x = 10;while (x < 5){    System.out.println(x);    x++;}
الشرط 10 < 5 خطأ من البداية، فلا تُنفَّذ الحلقة.

ما قيمة i بعد انتهاء حلقة الطباعة من 1 إلى 5؟

تتوقّف عندما يصبح الشرط false أي عند i = 6.

ما الذي يسبّب الحلقة اللانهائية غالبًا؟

الخلاصة

تحدٍّ برمجي: مجموع الأرقام

متقدّم

احسب مجموع أرقام العدد 4728، أي 4+7+2+8، باستخدام حلقة while.

المطلوب:
  • في كل دورة: خذ آخر رقم بـ % 10 وأضفه للمجموع.
  • ثم احذف آخر رقم بالقسمة الصحيحة / 10.
  • توقّف عندما يصبح العدد 0.

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

Digits.java
public class Digits{    public static void main(String[] args)    {        int n = 4728;        int sum = 0;         // while (…)         System.out.println("مجموع الأرقام = " + sum);    }}
Output – المطلوب×
مجموع الأرقام = 21
💡 تلميح 1
4728 % 10 = 8 و 4728 / 10 = 472.
💡 تلميح 2
الشرط: while (n > 0)

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

Digits.java
public class Digits{    public static void main(String[] args)    {        int n = 4728;        int sum = 0;         while (n > 0)        {            sum = sum + n % 10;   // آخر رقم            n = n / 10;           // احذف آخر رقم        }         System.out.println("مجموع الأرقام = " + sum);    }}

أسئلة التقييم

ورقة العمل: حلقة while. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) معنى while:

2) متى يُفحص الشرط في while؟

3) نسيان تغيير المتغيّر داخل الحلقة يسبّب:

4) الأجزاء الثلاثة لأيّ حلقة هي:

2السؤال الثاني: صح أم خطأ

1) يُفحص شرط while قبل التنفيذ.
الصواب: صح
2) إذا كان الشرط خاطئًا من البداية لا تُنفَّذ الحلقة.
الصواب: صح
3) الحلقة اللانهائية تحدث عند نسيان تغيير المتغيّر.
الصواب: صح
4) لا حاجة لتهيئة المتغيّر قبل الحلقة.
الصواب: خطأ
5) i++ تزيد قيمة i بمقدار 1.
الصواب: صح

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

1) الصيغة: while ( ) { ... }

💡 ما يوضع بين القوسين.

الإجابة: الشرط

2) نضع قيمة البداية الحلقة.

💡 قبل أم بعد الحلقة؟

الإجابة: قبل

3) خطوة الاقتراب من التوقّف تُسمّى .

💡 مثل i++

الإجابة: الزيادة

4) تتوقّف الحلقة عندما يصبح الشرط .

💡 قيمة boolean التي توقف الحلقة.

الإجابة: false

5) نسيان الزيادة يسبّب حلقة .

💡 حلقة لا …

الإجابة: لا نهائية

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

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

  1. 1) التهيئة
  2. 2) الشرط
  3. 3) الزيادة
  4. 4) الحلقة اللانهائية
  5. 5) i++
  1. أ. متى تستمر الحلقة.
  2. ب. قيمة البداية.
  3. ج. تزيد المتغيّر بواحد.
  4. د. الاقتراب من التوقّف.
  5. هـ. تحدث عند نسيان التغيير.
المفتاح: (1) ب (2) أ (3) د (4) هـ (5) ج

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

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

snippet
int i = 1;while (i <= 3) { System.out.print(i + " "); i++; }
الناتج الصحيح:
Output×
1 2 3

2) كم مرّة تُطبع الرسالة؟ int i = 1; while (i <= 5) { ...; i++; }

إجابة مقبولة: 5

3) اكتب حلقة while تطبع الأرقام من 1 إلى 3:

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