الدرس 4 من 10

الحلقات

هدف الدرس

التكرار بـ for وwhile وfor-each

01

الشرح

تستعمل حلقة for حين تعرف عدد مرّات التكرار، وفي سطرها الأول ثلاثة أجزاء هي البداية والشرط والخطوة، مثل for (int i = 1; i <= n; i++)، وi++ تزيد i بمقدار واحد. وبوضع حلقة داخل حلقة ترسم الأشكال، فالخارجية للأسطر والداخلية لما في كل سطر. وتطبع System.out.print دون أن تنتقل إلى سطر جديد، ثم تُنهي System.out.println() السطر.

أما صيغة for المحسّنة (for-each) فتمرّ على العناصر دون عدّاد، فالحلقة for (char c : word.toCharArray()) تعطيك حروف النصّ حرفًا بعد حرف. وتستعمل while حين لا تعرف عدد الدورات مسبقًا، فهي تدور ما دام شرطها صحيحًا، ولذلك تأكّد أن شيئًا داخلها يقرّبها من النهاية، وإلا دارت بلا توقّف.

وأشهر فخّ في الحلقات هو الحدّ، فالشرط i < n يتوقّف قبل n، والشرط i <= n يشملها. وهذا الخطأ يُسمّى خطأ الفرق بواحد (off-by-one)، وهو لا يوقف البرنامج، بل يعطيك نتيجة تنقص دورة أو تزيد دورة.

02

المطلوب

اكتب sumTo(n) لتُرجع مجموع الأعداد من 1 إلى n باستعمال for، وcountVowels(s) لتعدّ بـ for-each حروف العلّة الإنجليزية a e i o u صغيرةً كانت أو كبيرة. وفي nightsUntil(zombies, target) يتضاعف عدد الزومبي كل ليلة، فأرجع باستعمال while عدد الليالي حتى يصل العدد إلى target على الأقل. ثم اكتب printStairs(n) لتطبع درجًا من n أسطر، في أوله # ثم ##، وهكذا حتى يكون في السطر الأخير n علامات، ثم استدعِ printStairs(4) من main.

الفحوص

5 فحوص
  1. الدالة sumTo تجمع من 1 إلى n
  2. الدالة countVowels تعدّ حروف العلّة الصغيرة والكبيرة
  3. الدالة nightsUntil تصل من 1 إلى 1000 في 10 ليالٍ
  4. الاستدعاء printStairs(2) يطبع درجتين
  5. طُبع درج من أربعة أسطر
03

تلميحات

0/3
Main.java
المخرجاتJava 13 (Judge0)

يُترجَم كودك الآن ويُشغَّل على الخادم.

–/5

يُترجَم كودك الآن ويُشغَّل على الخادم.

تجد 5 فحوص في بطاقة «المطلوب».