recent
أخبار ساخنة

الحلقات التكرارية المتداخلة في لغة السي C الدرس|11|

الصفحة الرئيسية


الحلقات التكرارية المتداخلة في لغة السي

سوف نتعلم في درسنا هذا على كيفية إستعمال for loop بداخل حلقة ثانية for, ماذا نتوقع أن يحدث إذا كررّنا سطراً برمجياً ثلاث مرات ثم ثلاث مرات؟

for (int j = 0; j < 3 j++ )
{
for (int j = 0; j < 3 j++ )
{
printf("* ");
}
printf("\n");
}

 

إذا كانت لدينا جملة for تُكرر لنا طباعة النجمة ثلاثة مرات و كانت هذه الجملة بداخل جملة for تتكرر ثلاثة مرات و تقوم بطباعة سطراً جديداً بعد إنتهاء حلقة for الداخلية, تبدأ اولاً قيمة i بالصفر و تمر على for loop الداخلية و ستبدأ قيمة المتغير j بالصفر كذلك و ستبدا for الداخلية بطباعة ما بداخلها و التكرار حتى تنتهي for loop الداخلية و تطبَع سطراً جديداً ثم تَزيد قيمة i للوب الخارجية و تبدأ بالدوران مجدداً و ستدخُل اللوب الداخلية مجدداً و تتعرف j من الصفر مرة اُخرى و ستقوم بنفس العمل حتى نحصل على مربع بعرض ثلاثة نجمات و طول ثلاثة نجمات و هذا جواب ما يحصل إذا كان لدينا سطر برمجي يٌكرر سطر برمجي ثلاث مرات.

 

مثال 1

قُم بعمل برنامج لطباعة مربع من النجوم يطلُب من المُستخدم أن يكتُب عرض و طول المربع لهذا العرض.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(int argc, char** argv)
{
int h;
printf("ادخل طول المربع \n");
scanf("%d", &h);
for(int j = 0 ; j < h; j++)
{
for(int i = 0 ; i < h; i++)
{
printf("* ");
}
printf("\n");
}
return 0;
}

 

شرح المثال السابق 1

في البداية قُمنا بإنشاء متغير عددي int و هو h من أجل الطول لهذا المربع ثم عن طريق الدالة scanf التي تطلب من المستخدم إدخال رقم, طلبنا من المستخدم عبرها بأن يكتب طول المربع الذي يُريده عبر كتابة %d أي يطلب رقم و h يعني متغير الطول و بعد ذلك قُمنا بإنشاء حلقة for أن يبدأ بها j من الصفر ثم وضعنا أن j تكون اصغر من h أي الرقم الذي يُدخِلهُ المستخدم و j++ زيادة واحد في كل دورة, و قُمنا بإنشاء حلقه تكرارية for ثانية بداخل الحلقة الأولى و وضعنا المُتغير i يساوي 0 و عندما يكون i اصغر من h يقوُم بعمل دورة و زيادة عليها بمقدار واحد و الطباعة على الشاشة * أي يطبَع عدد من النجوم من الرقم الذي ادخله المستخدم على شكل مربع ثم يقوم بطباعة سطراً جديداً.

عند تشغيل البرنامج و إدخال رقم 6 من قبل المستخدم سيكون

 

عند إدخال المستخدم رقم 3 ستكون النتيجة هي


مثال 2

قُم بعمل برنامج يطبَع مستطيل من النجوم بحيث يطلُب من المُستخدِم أن يُدخِل الطول ثم العرض ثم يطبع المستطيل.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

int main(int argc, char** argv)
{
int h;
int w;
printf("ادخل طول المستطيل\n");
scanf("%d", &h);
printf("ادخل عرض المستطيل \n");
scanf("%d", &w);

for(int j = 0 ; j < h; j++)
{
for(int i = 0 ; i < w; i++)
{
printf("* ");
}
printf("\n");
}
return 0;

 

شرح المثال السابق 2

في بداية هذا البرنامج قُمنا بإنشاء متغيرين عدديان و هما المتغير h من أجل طول المستطيل و المُتغير w من أجل عرض المُستطيل, ثم طَلبنا من المُستخدِم عبر دالة scanf أولاً أن يقوم بإدخال طول المُستطيل h و بعد ذلك يقوم بالطلب منه أن يُدخِل عرض المستطيل w و دخلنا لحلقة تكرارية خارجية و كان بها مُتغير عددي j و قيمته 0 ثم وضعنا أن j اصغر من طول المستطيل h ثم يقوُم بالزيادة بمقدار 1 عليها و كان هناك ايضاً حلقه تكرارية ثانية صغيرة بداخل الحلقة السابقة و كان المُتغير بها i يساوي 0 و ثم وضعنا له أن i تكون اصغر من العرض w و يقوم بالزيادة بمقدار 1 في دورة, ثم يقوم بطباعة النجوم بالأعداد التي قام المُستخدِم بإدخالها و طباعة سطراً جديداً, و عند تشغيل هذا الكود و إدخال المُستخدِم الطول 6 و العرض 8 ستكون النتيجة كالتالي


مثال 3

اُكتُب برنامج يقوم ببناء مثلث من الرقم 7 و يقوم بالنزول رقم رقم إلى أن يَصِل إلى الرقم 1 و ينتج مثلث قائم الزاوية.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
int main(int argc, char** argv)
{
for(int i = 7; i >= 1; i--)
{
for(int j = 0; j < i; j++)
printf("%d", i);
printf("\n");
}
return 0;

 

شرح المثال السابق 3

أنشأنا حلقة for loop خارجية و بها مُتغَير عددي و هو i و قيمته 7 أي هي نقطة البداية ثم قُلنا له أن i اصغر أو يساوي 1 ثم وضعنا i-- أي تكون عملية إنقاص بمقدار واحد و بعدها أنشأنا حلقة ثانية بداخلها و كان المُتغير بها هو j و قيمته 0 ثم وضعنا أن j تكون اصغر من i و يقوم بالزيادة بمقدار واحد في كل دورة, و i تمثل نقطة البداية التي هي 7 ثم طَلَبنا منه أن يطبَع قيمة i في كل دورة و النزول سطراً جديداً بعدها, و عند تشغيل هذا البرنامج سوف تكون نتيجته هي كالآتي

إضغط هنا للرجوع للدرس السابق

google-playkhamsatmostaqltradent