الحلقات المتداخلة Nested Loop في #C

مقال يشرح ويعطي أمثلة عن حلقات التكرار المتداخلة Nested loops While, do…while and for تطبيق من لغة C#

جُمل التحكم Control Statement-جزء 3
حلقات التكرار Loops الجزء 2
الحلقات المتداخلة Nested Loop 


الحلقات المتداخلة Nested Loop  تعتبر أحد الأدوات المهمة في البرمجة التي تسمح بتنفيذ سلاسل من العمليات المتكررة بشكل متداخل ومنتظم…فماهي الحلقات المتداخلة Nested Loop  وكيف يمكن بناء حلقات التكرار المتداخلة في لغة سي شارب..؟!!

الحلقات المتداخلة Nested Loops في #C

تعتبر الحلقات المتداخلة Nested Loops أداة قوية جدًا في بناء برامج قوية ومرنة، حيث يمكن استخدامها في مجموعة متنوعة من المجالات مثل معالجة البيانات، وتحليل البيانات، وإنشاء هياكل بيانات معقدة.وقد تحدثنا في مقال عن حلقات التكرار loop واستكمالاً للحديث عن حلقات التكرار نتحدث في هذا المقال عن الحلقات المتداخلة Nested loops مع تطبيقات عليها.لنبدأ…

في هذا المقال نتعرف على :


نظرة على حلقات التكرار Loop

حلقات التكرار تأخذ شكل من ثلاث أشكال وهي While, do…while and for وأيضاً يمكن تاخذ أحد أساليب التكرار التي إما أن يكون:

  • تكرار مضبوط (محدود) Counter-Controlled Repetition.
  • أو تكرار المتحكم (غير محدود) Sentinel-Controlled Repetition.

ويمكن للتكرار أيضاً أن يكون متداخل ونعني الحلقات المتداخلة Nested loop أن حلقات التكرار او الـ loop شائعة الاستخدام فيكاد لا يخلو أي تطبيق من وجود loop مثلاً عندما نريد معالجة صورة رقمية ونريد عمل filter للصور فهنا لابد من استخدام الـ loop مثل هذه المهام وأكثر نستخدم الـ loop . الحلقات المتداخلة Nested Loop هي عبارة عن حلقتين أو اكثر من الـ loop تعمل لإنجاز مهمة واحدة.


الحلقات المتداخلة Nested Loops

إذا كان لدينا قائمة من الأشخاص، ولكل شخص هناك قائمة بالمهام التي يجب أن ينفذها، يمكننا استخدام حلقة خارجية للتكرار على الأشخاص وحلقة داخلية لتنفيذ المهام لكل شخص على حدة. ي فالحلقات المتداخلة تم استخدام عندما يكون لدينا مشكلة تتطلب تكرار عملية داخل عملية أخرى.

وتعمل حلقات التكرار المتداخلة من خلال تضمين حلقة واحدة داخل أخرى. بمعنى آخر، يتم وضع حلقة داخل جسم حلقة أخرى. هذا يعني أنه يتم تنفيذ العمليات في الحلقة الداخلية بناءً على تعليمات الحلقة الخارجية. وبالتالي، يتم تكرار العمليات في الحلقة الداخلية لكل تكرار في الحلقة الخارجية.

أن حلقات التكرار المتداخلة Nested loop عبارة عن حلقة تكرار داخل حلقة تكرار أخرى، أي هناك حلقة تكرار خارجية outer-loop وأخرى داخلية inner-loop.

ففي حال كنا نعمل مع حلقتين تكرار فإن الحلقة الخارجية تحيط بالحلقة الداخلية أي أن الحلقة الداخلية هي جزء من الحلقة الخارجية ويجب أن تبدأ وتنتهي داخل جسم الحلقة الخارجية. في كل تكرار للحلقة الخارجية ، يتم تنفيذ حلقة التكرار الداخلية بالكامل. وغالباً ما تكون الحلقات المتداخلة من نوع التكرار المحدود Counter-Controlled Repetition.

وتكون الصيغة العامة للحلقات التكرار المتداخلة Nested loops كالتالي :


Outer-Loop 
{
	// body of outer-loop
	Inner-Loop
	{
		// body of inner-loop
	}
}

ويوضح المثال التالي بناء حلقات تكرار متداخلة Nested Loop في C# :

for (int i=1; i<=5; i++)
{
	for (int j=1; j<=i; j++)
	{
	 	Console.Write(j + " ");
	}
		Console.WriteLine();
}

لتكون النتيجة

1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 

في المثال السابق يبدأ الـ compile بقرأة حلقة التكرار الخارجية عند i =1 أي عندما يختبر i < 5 سينتقل التنفيذ للحلقة التكرار الداخلية التي تنفذ لمرة واحدة حيث ان قيمة i = j= 1 ثم خرج التنفيذ للحلقة الخارجية مرة أخرى وهكذا يتتابع التنفيذ حتى يكتمل.


تطبيقات على الحلقات المتداخلة في   C#  

يمكن استخدام جميع أشكال حلقات التكرار في بناء حلقات التكرار المتداخلة بنفس الطريقة، و لكن الشكل الأشهر استخدماً مع الحلقات المتداخلة هو for .كما يمكن أن تحتوي حلقة التكرار المتداخلة على اكثر من شكل من أشكال حلقات التكرار.

حيث تعمل أشكال حلقات التكرار مع بعضها البعض ويمكن أن يكون لدينا أكثر من حلقة تكرار داخلية تعمل مع خارجية واحدة أو قد تكون أحد حلقات التكرار الداخلية هي حلقة خارجية لحلقة أخرى لنرى وهنا بعض الأمثلة لتوضح الأمر . وتذكر دائماً التنفيذ يبدأ من حلقة التكرار الداخلية إلى حلقة التكرار الخارجية.


المثــال الأول :

في هذا المثال سنقوم برسم مثلث من النجوم سنرى طريقة تنفيذ حلقات التكرار الداخلية Nested Loop في لغة سي شارب..


int size = 5,k = 0;
while( k < size + 1 )
{
	for (int i = size; i > k ; i--)
	{
		Console.Write(" ");
	}
	for (int j = 0; j< (2 * k -1); j++)
	{
		Console.Write("*");
	}
		Console.WriteLine();
		++k;	
}

لتكـن النتيجــة


مثال على الحلقات المتداخلة  Nested Control Statements

في المثال استخدمنا شكلين من أشكال حلقات التكرار لبناء حلقة تكرار متداخلة فقد استخدمنا "while " للحلقة الخارجية Outer loop واستخدمت for لعمل حلقة التكرار الداخلية inner loop .


المثال الثاني :

في هذا المثال سنقوم برسم تاج من النجوم، بواسطة الحلقات المتداخلة Nested Loop في سي شارب..

for(int i = 1; i <= 5 ; i++)
{
	for(int j = 1; j <= i; j++)
		Console.Write(" ");

	for(int k = 1; k <= i; k++)
		Console.Write("*");

	for(int j = 1; j <= 3* (4- i + 1); j++)
		Console.Write(" ");

	for(int k = 1; k <= 2 * i - 1; k++)
		Console.Write("*");

	for(int j = 1; j <= 3 * (4 - i +1); j++)
		Console.Write(" ");
	
	for(int k = 1; k <= i; k++)
		Console.Write("*");
				
	Console.WriteLine();
}
		
for(int i = 1; i <= 2; i++)
{
	for(int j = 1; j <= 5 + i -1; j++)
		Console.Write(" ");

	for(int k = 1; k <= 2*( 9 - i + 1) + 1 ; k++)
		Console.Write("*");
					
	Console.WriteLine();

}

لتكـن النتيجــة


مثال على الحلقات المتداخلة  Nested Control Statements

في هذا المثال تم الاعتماد على for وهو الشائع في مثل هذه التطبيقات لأنها توفر متغير خاص لكل loop ولا يعمل خارج نطاق scope لهذا الـ loop لاحظ في المثال تكرر استخدام المتغيرات بأسماء محدده ومكرره هذا لأنها خاصة بـ loop الذي تم تعريفها داخله.


المثال الثالث:

هذا المثال سنقوم برسم مربع من النجوم بواسطة تعليمات سي شارب و باستخدام الحلقات التكرار المتداخلة :

for(int i = 1; i <= 5 ; i++)
{
	for(int j = 1; j <= 5; j++)
	{
		if(i == 1 || i == 5 || j ==1 || j == 5)
			Console.Write("* ");
		else
			Console.Write("  ");
	}
	Console.WriteLine();
}

مثال على الحلقات المتداخلة  Nested Control Statements

نلاحظ في المثال الأول والثاني استخدمنا العمليات الحسابية داخل شرط الـ loop للحصول على النتيجة المطلوبة و لكن في هذا المثال كما هو ملاحظ استخدمنا المعاملات المنطقية للحصول على النتيجة المطلوبة.


ملاحظة: مثل هذه التطبيقات وأكثر يمكن تنفيذها بأي لغة من لغات البرمجة المعروفة. و جميع الأمثلة في هذا المقال متوفرة على الرابط هنا  .



أهمية الحلقات المتداخلة Nested Loops

الحلقات المتداخلة Nested Loops تعتبر أداة هامة في برمجة لغة   C#   وهذا لدورها الكبير في التعامل مع هيكلة البيانات المتعددة الأبعاد والتعامل مع مشاكل البرمجة المعقدة. فالحلقات المتداخلة تسمح لنا بتنفيذ حلقة داخل حلقة، مما يتيح لنا تحقيق مجموعة واسعة من الأنماط والسلوكيات في البرامج.فيما يلي بعض الاستخدامات الرئيسية للحلقات Nested Loops المتداخلة في برمجة لغة   C#  :

  • معالجة هياكل البيانات المتعددة الأبعاد:
    تُمكّن الحلقات المتداخلة من التعامل مع هياكل البيانات (Data Structure) ذات الأبعاد المتعددة مثل المصفوفات ثنائية الأبعاد والمصفوفات المتعددة الأبعاد. يمكن استخدام حلقات متداخلة للوصول إلى عناصر هذه الهياكل ومعالجتها بطريقة منظمة وشاملة.
  • توليد التسلسلات والنماذج المعقدة:
    يمكن استخدام الحلقات المتداخلة لتوليد تسلسلات معقدة من الأحرف أو الأرقام أو النماذج. على سبيل المثال، يمكن استخدام حلقتين متداخلتين لإنشاء نمط هندسي أو نمط نجمي أو أي تسلسل آخر يتطلب تكرارًا هرميًا.(كما في الأمثلة أعلاه).
  • المعالجة المشتركة (Nested Processing):
    في بعض الحالات، يتطلب حل مشكلة معينة تنفيذ معالجة متعددة في سياق معين. يمكن استخدام الحلقات المتداخلة لتحقيق هذا النوع من المعالجة المشتركة، حيث يتم تنفيذ حلقة داخل حلقة لتنفيذ أنشطة مختلفة في كل تكرار.
  • البحث والفرز:
    تُستخدم الحلقات المتداخلة أيضًا في عمليات البحث والفرز عندما يكون لدينا هياكل بيانات متعددة ونرغب في الوصول إلى بيانات محددة بناءً على معايير محددة. ففي بعض الحالات، يتطلب البحث أو الفرز تنفيذ عمليات متعددة ومتداخلة. يمكن استخدام الحلقات المتداخلة لتنفيذ هذه العمليات، حيث يتم فحص كل عنصر في مصفوفة خارجية مع كل عنصر في مصفوفة داخلية لتحقيق الهدف المطلوب.

تُعد الحلقات المتداخلة (Nested Loops) أداة قوية في برمجة لغة   C#   وتسمح للمطورين بتنفيذ تعقيدات برمجية مختلفة. ومع ذلك، يجب استخدامها بحذر وفهم جيد لتجنب الحلقات المتداخلة المفرطة التي قد تؤدي إلى تأثير سلبي على أداء البرنامج.



 إلى هنا ينتهي هذا المقال الذي يشرح مفهوم الحلقات التكرارية المتداخلة Nested loop وتضمن المقال عدد من الأمثلة التطبيقية على الحلقات التكرار المتداخلة Nested loop.تعتبر الحلقات المتداخلة Nested loop أداة قوية في عالم البرمجة لحل المشاكل التي تتطلب تكرار العمليات داخل عملية أخرى. حيث توفر هذه الأداة مرونة وكفاءة في البرمجة وتساعد على بناء برامج قوية ومرنة. ومع ذلك، يجب استخدام الحلقات المتداخلة بحذر وفقًا لمتطلبات البرنامج.



إرسال تعليق

فضلاً اترك تعليق
موافقة ملفات تعريف الارتباط
لتحسين تجربتك… يستخدم موقعنا ملفات تعريف الارتباط (Cookies)
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.