الدرس 4 من 10

الحلقات

هدف الدرس

for و while و foreach

01

الشرح

for للتكرار بعدد معروف، وفي رأسها ثلاثة أجزاء: البداية int i = 1، والشرط i <= 5 يُفحص قبل كل دورة، والخطوة i++ بعد كل دورة. والفرق بين < و<= دورة كاملة، وهو أشهر أخطاء الحلقات.

وwhile (hp > 0) تكرّر ما دام شرطها صحيحًا، حين لا تعرف عدد الدورات مسبقًا: «اضرب حتى يسقط العدوّ». فتأكّد أن شيئًا في داخلها يقرّبها من النهاية، وإلا دارت بلا توقّف حتى يقطعها السيرفر. أما foreach (char c in row) فتمرّ على كل عنصر في مجموعة بلا عدّاد، والنصّ مجموعة أحرف char.

ولكل نوع عددي حدّ: أكبر int نحو 2.1 مليار (int.MaxValue)، وما يتجاوزه يلتفّ إلى أعداد سالبة بلا أي تحذير. والمضروب يكبر بسرعة، فمضروب 13 لا يتّسع في int؛ استعمل long، وحدّه نحو 9.2 مليار مليار.

02

المطلوب

أكمل SumTo(n) لتجمع الأعداد من 1 إلى n بـ for، وFactorial(n) لتُرجع مضروب n من نوع long، ومضروب الصفر 1. وHitsToKill(hp, damage) تعدّ بـ while الضربات حتى تنزل الصحّة إلى الصفر أو تحته، وCountWalls(row) تعدّ بـ foreach الجدران '#' في صفّ من خريطة اللعبة. ثم اطبع من Main جدول 7 من 1 إلى 5، سطرًا لكل ضرب بالشكل 7 x 3 = 21، ولا شيء غيره.

معايير التصحيح

6 معايير
  1. SumTo(5) = 15 و SumTo(100) = 5050
  2. Factorial(5) = 120، ومضروب الصفر 1
  3. Factorial(20) تتّسع في long لا int
  4. HitsToKill: أربع ضربات بضرر 30 لصحّة 100
  5. CountWalls تعدّ الجدران #
  6. طُبع جدول 7 من 1 إلى 5، ولا شيء غيره
Program.cs
المخرجاتC# · Mono 6.6 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».