جاري التحميل...

حلقة while في Java

قبل أي حلقة، ضع العدد الصحيح 1 تحت الاسم k. اكتب while (k <= 3)، وداخل الأقواس المجعدة اطبع k ثم خزّن k + 1 مرة أخرى في k. يجب أن تظهر الشاشة ثلاثة أسطر: 1، ثم 2، ثم 3. البداية تعيش فوق while. الاختبار يعيش داخل الأقواس. الخطوة تعيش داخل الأقواس المجعدة. هذا الفصل هو ما تعلّمه هذه الصفحة.

البداية خارجًا، الاختبار في while، الخطوة داخلًا

أنشئ ملف برنامج صغير باسم Pulse.java. يجب أن يطابق public class في السطر الأول اسم الملف: public class Pulse. لا تُبقِ اسم فئة قديمًا مثل Beat أو Dial في هذا الملف؛ المترجم يتوقع أن يتوافق اسم الفئة مع اسم الملف.
داخل main، خزّن العداد أولًا:
int k = 1;
هذا السطر ليس داخل while. هو فقط يبدأ k عند 1. ثم الحلقة:
while (k <= 3) {
System.out.println(k);
k = k + 1;
}
كلمة while بأحرف صغيرة. داخل الأقواس يجلس الاختبار فقط: k <= 3. لا بداية ولا خطوة داخل تلك الأقواس — بخلاف سطر for الذي رأيته سابقًا. الأقواس المجعدة تحمل سطر الكتابة والخطوة معًا. System.out.println(k); يكتب الرقم الحالي بلا اقتباس حول k. ثم k = k + 1; يخزّن واحدًا أكثر تحت k حتى يصبح الاختبار التالي false في النهاية. احفظ الملف قبل الترجمة.

برنامج يطبع 1 ثم 2 ثم 3

هذه هي النسخة التي تترجمها أولًا.

k من 1 إلى 3

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 3) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

من المجلد الذي يحوي Pulse.java اكتب javac Pulse.java. عندما تتطابق الأقواس العادية والأقواس المجعدة والفواصل المنقوطة، لا يكتب javac أي سطر من عنده. ثم اكتب java Pulse — وليس java Pulse.java. أزل لاحقة .java من الأمر الثاني. الأمران نفسهما يعملان على Windows وعلى macOS؛ هذه الصفحة لا تحتاج إملاء صدفة مختلفًا لأي من النظامين. يجب أن يطبع البرنامج ثلاثة أسطر ويتوقف: 1، ثم 2، ثم 3. لا يطلب منك الكتابة. إذا بقي الطرفية منتظرة إدخال لوحة المفاتيح، فما زال استدعاء nextLine من تمرين أقدم داخل الملف. احذف ذلك الاستدعاء وأبقِ الـ int مع while أعلاه. لا تحتاج تثبيت JDK جديد من أجل سطر شاشة خاطئ.

امشِ تشغيلًا كاملًا بالترتيب. تبدأ k عند 1 قبل while. الاختبار k <= 3 يكون true، فيعمل الجسم: يكتب println الرقم 1، ثم تخزّن الخطوة 2. الاختبار ما زال true: يكتب 2، يخزّن 3. الاختبار ما زال true: يكتب 3، يخزّن 4. الآن k <= 3 يصبح false، فتنتهي الحلقة. البداية عملت مرة واحدة، فوق الحلقة. الاختبار عمل قبل كل دورة. الخطوة عملت داخل الأقواس المجعدة بعد كل طباعة. تلك المهام الثلاث هي نفس أفكار for، لكنها غير مضغوطة في سطر رأس واحد. إذا حذفت k = k + 1; وتركت k عند 1 إلى الأبد، يبقى الاختبار true ويمكن لنفس السطر أن يُطبع بلا توقف — ولهذا السبب تبقى الخطوة داخل الجسم في هذه الصفحة.

وسّع الاختبار

غيّر الاختبار فقط حتى تذهب الحلقة خطوة أبعد:
int k = 1;
while (k <= 4) {
System.out.println(k);
k = k + 1;
}
اترك البداية والخطوة كما هما. الآن يجب أن تظهر الشاشة أربعة أسطر: 1، 2، 3، و 4.

k من 1 إلى 4

java
public class Pulse {
    public static void main(String[] args) {
        int k = 1;
        while (k <= 4) {
            System.out.println(k);
            k = k + 1;
        }
    }
}

ترجم وشغّل من جديد: javac Pulse.java، ثم java Pulse. يجب أن ترى أربعة أسطر. لم تُعد كتابة println أو الخطوة — فقط الاختبار داخل while (…) تغيّر. بعد أن ترى أربعة أسطر، يمكنك إعادة k <= 3 للعودة إلى العرض الأول. النسختان صحيحتان في Java. تعلّمان نفس شكل while بنقطة توقف مختلفة.

اقرأ تشغيل الأسطر الأربعة مرة أخرى. تبدأ k عند 1. كل اختبار true يطبع k الحالية ثم يضيف 1. عندما تصبح k تساوي 5، يفشل الاختبار وتتوقف الحلقة. الرقم 5 لا يظهر على الشاشة في هذا العرض، لأن الجسم يعمل فقط طالما الاختبار ما زال true.

📊 قيمة k وشاشة العرض الأول

k قبل println سطر الشاشة
1 1
2 2
3 3

استخدم الجدول كتحقق بعد العرض الأول، لا بدلًا من التشغيل. قبل كل println في ذلك العرض، تحمل k الرقم الذي سيظهر في ذلك السطر. بعد الطباعة الثالثة، تخزّن الخطوة 4 ويفشل الاختبار. إذا لم تتوقف الشاشة أبدًا في نسخة بلا خطوة، أعد k = k + 1; داخل الأقواس المجعدة — لا تُعد تثبيت Java.

قواعد تُبقي while واضحًا

الأقواس حول الاختبار مطلوبة. كتابة while k <= 3 { … } بلا أقواس تجعل javac يفشل. الجسم في هذه الصفحة يجلس دائمًا داخل أقواس مجعدة، لأن كل دورة لها سطران: println والخطوة. إذا تركت الخطوة بعد القوس المجعد المغلق، تعمل مرة واحدة بعد انتهاء الحلقة — وداخل الحلقة لا تتغيّر k، فيمكن للحلقة أن تدور إلى الأبد. أبقِ الخطوة داخل الأقواس المجعدة في العرضين.

while ليس for وليس switch. for يضغط البداية والاختبار والخطوة في سطر رأس واحد. while يُبقي الاختبار وحده في رأسه ويطلب منك أن تضع البداية والخطوة بنفسك. switch يختار مرة واحدة بين تسميات case. لا تترك حلقة for من صفحة Beat أو switch من صفحة Dial في نفس main ثم تتساءل لماذا تظهر الشاشة رأسًا بأسلوب for متبقيًا أو الكلمة mid. يجب أن يحمل main في هذه الجلسة الـ int و while فقط.

خلط شائع هو طباعة الصياغة نفسها: System.out.println("while (k <= 3)");. ذلك يكتب أحرف رأس while. لا يكرر. خلط آخر هو وضع اقتباس حول k: System.out.println("k"); يكتب الحرف k في كل دورة. أبقِ println(k) بلا اقتباس عندما تريد العداد على الشاشة. إذا كان الاختبار false أصلًا عندما يُبلَغ while لأول مرة — مثلًا تبدأ k عند 5 والاختبار يقول k <= 3 — فالجسم لا يعمل أبدًا وتبقى الشاشة فارغة. ذلك while صحيح أيضًا؛ عروض هذا الدرس تبقي اختبارًا يكون true مرة واحدة على الأقل حتى ترى الأسطر المطبوعة.

ما يمكنك فعله الآن

يمكنك بدء عدّاد فوق while، ووضع اختبار داخل while (…)، وإبقاء println والخطوة داخل الأقواس المجعدة. تغيير الاختبار يغيّر عدد الأسطر. الصفحة التالية هي break و continue؛ هناك تخرج من الحلقة مبكرًا أو تتخطى دورة واحدة دون إنهاء الحلقة كلها.

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
6
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى