الدرس 4 من 10
الحلقات
- 13 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
for و while وحلقة داخل حلقة
الشرح
for للتكرار بعدد تعرفه: for (int i = 1; i <= n; i++) ثلاثة أجزاء تفصلها فاصلتان منقوطتان: بداية العدّاد، وشرط يُفحص قبل كل دورة، وخطوة بعد كل دورة. وi++ تزيد العدّاد واحدًا، وtotal += i تضيف i إلى المجموع. وانتبه للحدّ: < مكان <= تُسقط الدورة الأخيرة بصمت.
وwhile (n != 0) للتكرار ما دام الشرط قائمًا، حين لا تعرف عدد الدورات مسبقًا: اقسم على 10 ما بقي في العدد شيء. أما do { ... } while (n != 0); فتفحص شرطها بعد الدورة لا قبلها، فتدور مرّة واحدة على الأقل. والفخّ حلقة لا يتغيّر فيها ما يفحصه شرطها: انسَ n /= 10 فتدور إلى الأبد، ويوقفها الخادم بعد ثوانٍ.
والحلقة داخل الحلقة ترسم الأشكال: الخارجية تمرّ على الأسطر، والداخلية ترسم السطر الواحد، وحدّها من عدّاد الخارجية: for (int i = 0; i < row; i++). ولكل حلقة عدّاد باسم مختلف.
المطلوب
أكمل int sumTo(int n) بـ for: مجموع الأعداد من 1 إلى n، وصفر إن كان n صفرًا أو سالبًا. وأكمل int countDigits(int n): عدد أرقام n بقسمته على 10 مرّة بعد مرّة، وللصفر رقم واحد، والسالب يُعدّ بلا إشارته: countDigits(-907) تساوي 3. ثم اطبع من main هذا الدرج وحده بحلقتين متداخلتين: # ثم ## ثم ### ثم ####، كلٌّ في سطر.
معايير التصحيح
6 معايير- sumTo(5) تساوي 15
- sumTo(1) و sumTo(100)
- sumTo للصفر والسالب صفر
- countDigits(12345) تساوي 5، و countDigits(7) تساوي 1
- countDigits: للصفر رقم واحد، والسالب بلا إشارته
- طُبع الدرج بأسطره الأربعة وحدها