الحلقات المتداخلة
جزء من قسم الأساسيات في رحلة C# على Coddy. الدرس 46 من 69.
الحلقة المتداخلة هي ببساطة حلقة داخل حلقة أخرى. ستُكمل الحلقة الداخلية جميع تكراراتها في كل تكرار واحد للحلقة الخارجية.
يمكن تشبيه ذلك بالساعة: فلكل ساعة (حلقة خارجية)، يجب أن يُكمل عقرب الدقائق (الحلقة الداخلية) دورته الكاملة البالغة 60 دقيقة.
مثال على حلقة متداخلة:
int rows = 2;
int cols = 2;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cols; y++) {
Console.WriteLine(x + " " + y);
}
}
// سيكون الناتج:
// 0 0
// 0 1
// 1 0
// 1 1تتكرر الحلقة الخارجية (x) عدد rows من المرات، وفي كل مرة منها، تتكرر الحلقة الداخلية (y) عدد cols من المرات، ما يعني أن جسم الحلقة الداخلية يُنفَّذ إجمالًا 2 × 2 = 4 مرات. لكل حلقة عدّادها الخاص: يبدأ y من جديد عند 0 في كل مرة تتكرر فيها الحلقة الخارجية، بينما تظل rows وcols كما هما، ولا تحددان للحلقتين سوى متى تتوقفان.
قد تحتاج أيضًا إلى Console.Write() عند العمل مع الحلقات المتداخلة. على عكس Console.WriteLine()، التي تطبع النص وتنتقل إلى سطر جديد، تطبع Console.Write() النص من دون إضافة سطر جديد في النهاية. يتيح لك هذا تجميع المخرجات في السطر نفسه:
for (int y = 0; y < 4; y++) {
Console.Write("* ");
}
Console.WriteLine();
// سيؤدي هذا إلى إخراج:
// * * * * هنا، تواصل Console.Write() الطباعة على السطر نفسه، بينما ينتقل Console.WriteLine() في النهاية إلى السطر التالي.
التحدي
مبتدئاكتب برنامجًا يطبع مستطيلًا من النجوم (*) بعرض وارتفاع محددين.
الإدخال: عددان صحيحان: width وheight
على سبيل المثال:
إذا كان width = 5 وheight = 3، فيجب أن يكون الناتج:
*****
*****
*****إذا كان width = 4 وheight = 6، فيجب أن يكون الناتج:
****
****
****
****
****
****استخدم عدّادًا جديدًا لكل حلقة (على سبيل المثال i للصفوف وj للنجوم في الصف)، وقارنه بـ height أو width. لا تغيّر height وwidth نفسيهما: يحتاج كل صف إلى width مجددًا.
جرّب بنفسك
using System;
public class Program {
public static void Main(string[] args) {
int width = int.Parse(Console.ReadLine());
int height = int.Parse(Console.ReadLine());
// اكتب الكود الخاص بك أدناه
}
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمةالزيادة والنقصانالزيادة والنقصان اللاحقاختصارات العمليات الحسابية7أساسيات الإدخال والإخراج (Basic IO)
الإخراج الأساسيتضمين النصوص (String Interpolation)قراءة المدخلاتالتحليل (Parse)مراجعة - حتى 120مراجعة - True أو False5المعاملات - الجزء الثاني
معاملات المقارنةالمعاملات المنطقية - الجزء الأولالمعاملات المنطقية - الجزء الثانيمراجعة - المنطق البسيطالمعاملات المنطقية - الجزء الثالث6اتخاذ القرار
جملة Ifجملة If - Elseجملة Switchالمعامل الثلاثيمراجعة - If Elseجملة If - Else المتداخلة9حلقات التكرار
حلقة Forحلقة Whileحلقة Do WhileBreakContinueالحلقات المتداخلةالحلقة اللانهائيةمراجعة - Dynamic Inputتدرّب بنفسك: مترجم C# عبر الإنترنت