تنفيذ الاختيار والتكرار
مُقدَّم| English | المعنى |
|---|---|
| accumulator/əˈkjuːmjʊleɪtə/ | جامع |
أقصى ابتدائي صفر يخترع نتيجة
- يحتوي مصفوفة على −8، −3 و−11. بدء max عند الصفر يترك قيمة قصوى لم تكن أبداً في المصفوفة.
- لهذه المصفوفة غير الفارغة، ابدأ max بـ a[0]. مقارنة القيم اللاحقة تُحدث −8 إلى −3 وتحتفظ بها هناك.
أنماط الحلقات: التراكم
- نمط الحلقة هو وصفة قابلة لإعادة الاستخدام لمهمة شائعة. نمط المُجمِّع يبني مجموعاً متراكماً أو ضرباً عبر التكرارات.
- ابدأ
sum = 0، ثمsum = sum + xداخل الحلقة؛ يتغير المجموع المتراكم؛ يمكن أن ينخفض عند إضافة قيمة سالبة. نفس الفكرة للمجموع المتراكم الحسابي (count++) أو الأقصى المتراكم.
اختيارات داخل الحلقات
- ضع
ifداخل الحلقة لتعمل فقط على العناصر التي تطابق. "عد الأعداد الزوجية": حلقة، وif (x % 2 == 0) count++; - يتصفح الحلقة كل عنصر؛ يحدد
ifأي منها يتم معالجتها. دمج الاختيار والتكرار هو جوهر معظم الخوارزميات.
إيجاد القيمة العظمى
- لإيجاد القيمة الأكبر، احتفظ بمتغير
maxوقم بتحديثه عند رؤية قيمة أكبر. تأكد من أن المصفوفة غير فارغة، ابدأmaxبقيمتها الأولى، ثم افحص الباقي. قد يتجاوز "رقم صغير جدًا" غير محدد جميع المدخلات الفعلية. if (x > max) { max = x; }داخل الحلقة. بعد انتهاء الحلقة، يحتويmaxعلى أكبر قيمة تم رؤيتها.
نمط المجمع
sum يتراكم عبر المرات؛ يبدأ من 0.
لبناء مجموع متزايد داخل حلقة، يجب تهيئة المجمع بـ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
المجموع يبدأ من 0؛ الضرب يبدأ من 1.
لبناء حاصل ضرب متزايد، قم بتهيئة المجمع بـ...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
بدء حاصل ضرب من 0 يجعله دائماً 0؛ ابدأ من 1.
لعد الأرقام الزوجية أثناء التمرير، تستخدم...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
يفتار if العناصر التي تعدّها الحلقة.
وضع تهيئة المجمع داخل الحلقة يعيد تعيينه في كل مرة.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
قم بالتهيئة قبل الحلقة، وليس داخلها.
لتوقف حلقة فور العثور على هدف، يمكنك استخدام...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
break يخرج من الحلقة الأعمق. يجب أيضًا استخدام علم منطقي (Boolean flag) في شرط الحلقة أو منطق التحكم؛ مجرد تعيينه لا يوقف التنفيذ.
الخروج المبكر باستخدام علم أو أمر break
- أحيانًا يمكنك التوقف مبكرًا بمجرد العثور على ما تحتاجه. يمكن لـ علم
booleanتسجيل "تم العثور عليه" ويتم فحصه بواسطة شرط الحلقة؛ لا يؤدي تعيين العلم وحده إلى الخروج من الحلقة. يقومbreakبالخروج الفوري من الحلقة الداخلية. - "هل تحتوي القائمة على صفر؟" — توقف عند أول صفر. يوفر الخروج المبكر العمل، لكن حافظ على المنطق صحيحًا لحالة "لم يتم العثور عليه".
قم بمعايرة المجمع بشكل صحيح، وإلا تكون جميع النتائج خاطئة. يبدأ المجموع عند 0، والضرب عند 1 (يبدأ الضرب عند 0 ويجعله دائمًا 0)، والحد الأقصى عند العنصر الأول بعد التحقق من عدم فارغ المجموعة. لا يوجد حد أقصى لمجموعة فارغة ما لم تحدد العقد نتيجة منفصلة. وقم بتحديثه في كل تكرار مطابق — إن وضع المعايرة داخل الحلقة يعيد ضبطه في كل دورة ويخرب المجموع الكلي.
What is the maximum of the nonempty array {−8, −3, −11}?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
−3 is the greatest actual element. Starting at 0 produces an invalid invented candidate.
قراءة a[0] طريقة صالحة لتهيئة قيمة عظمى لمصفوفة فارغة.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
لا يوجد عنصر أول في مصفوفة فارغة. تحقق من المدخلات أو عرّف حالة منفصلة لعدم وجود قيمة عظمى.
كم عدد الأعداد الزوجية في مصفوفة int {-8, -3, -11}؟
Difficulty 2/5 · 140 coins + a small bonus on first completion today
فقط -8 له باقٍ يساوي الصفر عند القسمة على 2؛ القيم السالبة يمكن أن تكون زوجية أيضًا.
عد الأعداد الزوجية في حلقة تمر على مصفوفة a:
int count = 0;for (int i = 0; i < a.length; i++) { if (a[i] % 2 == 0) count++; }- تزرع الحلقة كل عنصر؛ يقوم
ifبعدّ الأزواج فقط.
انقل الاستدلال إلى حالة جديدة
- المصفوفة الفارغة ليس لها عنصر أول وتحتاج إلى عقد أو تحقق منفصل.
- يجب أن تناسب القيمة الأولية العملية: الصفر للمجموع، والواحد للضرب، والمؤهل الصحيح كمرشح بدء للحد الأقصى.
أنماط الحلقات الشائعة تجمع بين التكرار والاختيار: مجمع (sum += x، عد، أو العظمى الجارية) يُبنى عبر الدورات، مع if داخلها لمعالجة العناصر المطابقة فقط. ابدأ المجمع بشكل صحيح (مجموع 0، جداء 1، عظمى هي القيمة الأولى)، وافكر في الخروج المبكر (break/علم) بمجرد العثور على الإجابة.