رسم الأشكال (المثلثات)
يمكنك استخدام منطق الحلقات المتداخلة لإنشاء أشكال مختلفة، على سبيل المثال يمكنك رسم مثلث.
هذا البرنامج يحتوي على حلقة for متداخلة تطبع مثلثًا من النجوم إلى شاشة المخرجات. تتكرر الحلقة الخارجية 5 مرات، وتتكرر الحلقة الداخلية لكل تكرار للحلقة الخارجية.
#include <iostream>
using namespace std;
int main()
{
for ( size_t i = 1; i <= 5; i++)
{
for ( size_t j = 1; j <= i; j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:
- يعرّف البرنامج متغيرين إثنين
iوjويعطيهما قيمة بدائية تساوي 1. - يبدأ البرنامج بحلقة الدوران الخارجية for.
- الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير
iأقل أو يساوي 5. إذا كانت كذلك، يتم الإنتقال إلى حلقة الدوران الداخلية. - الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير
jأقل أو تساوي قيمة المتغيرi.إذا كانت كذلك، يقوم البرنامج بطباعة نجمة إلى شاشة المخرجات. - الحلقة الداخلية تقوم بزيادة قيمة المتغير
jبمقدار 1. - تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير
jأكبر من قيمة المتغيرi. - بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة حرف السطر الجديد إلى شاشة المخرجات.
- حلقة for الخارجية تقوم بزيادة قيمة المتغير
iبمقدار 1. - تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 8 حتى تصبح قيمة المتغير
iأكبر من 5:
مخرجات البرنامج تكون كالتالي:
* ** *** **** *****
ماذا لو أردنا رسم المثلث السابق بشكل مقلوب؟
نغير الشرط الموجود في حلقة for الخارجية.
هذا البرنامج يحتوي على حلقة متداخلة تطبع مثلثًا مقلوبًا من النجوم إلى شاشة المخرجات. تتكرر الحلقة الخارجية تنازليًّا من 5 إلى 1، وتتكرر الحلقة الداخلية لكل تكرار للحلقة الخارجية.
#include <iostream>
using namespace std;
int main()
{
for ( size_t i = 5; i >= 1; i--)
{
for ( size_t j = 1; j <= i; j++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:
- يعرّف البرنامج متغيرين إثنين
iوjويعطيهما قيمًا بدائية 5 و 1 على التوالي. - يبدأ البرنامج بحلقة الدوران الخارجية for.
- الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير
iأكبر أو تساوي 1. إذا كانت كذلك، ينتقل إلى حلقة for الداخلية. - الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير
jأقل أو تساوي قيمة المتغيرi.إذا كانت كذلك، يقوم البرنامج بطباعة نجمة إلى شاشة المخرجات. - الحلقة الداخلية تقوم بزيادة قيمة المتغير
jبمقدار 1. - تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير
jأكبر من قيمة المتغيرi. - بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة حرف السطر الجديد إلى شاشة المخرجات.
- حلقة for الخارجية تنقّص من قيمة المتغير
iبمقدار 1. - تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 8 حتى تصبح قيمة المتغير
iأقل من 1.
مخرجات البرنامج تكون كالتالي:
***** **** *** ** *
هل نستطيع جعل الرسمة أكثر صعوبة؟
يطبع هذا الرمز مثلثًا قائمًا من النجوم إلى شاشة المخرجات. تتكرر الحلقة الخارجية من 1 إلى 5، وتتكرر الحلقة الداخلية من 4 إلى قيمة المتغير iحيث يكون i هو رقم التكرار الحالي في حلقة الدوران الخارجية.
#include <iostream>
using namespace std;
int main()
{
for ( size_t i = 1; i <= 5; i++)
{
for ( size_t j = 4; j >= i; j--)
{
cout << " ";
}
for (size_t k = 1; k <= i; k++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:
- هذا البرنامج يُعرّف 3 متغيرات
i,j، وkويعطيهم القيم البدائية 1، 4 و 1، على التوالي. - يبدأ البرنامج بحلقة الدوران الخارجية for.
- الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير
iأقل أو يساوي 5. إذا كانت كذلك، يتم الإنتقال إلى حلقة الدوران الداخلية. - الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير
jأكبر أو تساويi، يقوم البرنامج بطباعة مساحة إلى شاشة المخرجات. - ثم تتناقص قيمة المتغير في الحلقة الداخلية
jبمقدار 1. - تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير
jأقل منi. - بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة نجمة على شاشة المخرجات لكل تكرار للحلقة الداخلية.
- يقوم البرنامج بعد ذلك بطباعة حرف السطر الجديد إلى شاشة المخرجات.
- حلقة for الخارجية تقوم بزيادة قيمة المتغير
iبمقدار 1. - تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 9 حتى تصبح قيمة المتغير
iأكبر من 5:
مخرجات البرنامج تكون كالتالي:
* ** *** **** *****
دعونا نطبعه رأسًا على عقب!
#include <iostream>
using namespace std;
int main()
{
for ( size_t i = 5; i >= 1; i--)
{
for ( size_t j = 4; j >= i; j--)
{
cout << " ";
}
for (size_t k = 1; k <= i; k++)
{
cout << "*";
}
cout << endl;
}
return 0;
}
انظروا إلى ما لدينا هنا!
*****
****
***
**
*
لنرسم مثلثًا مختلفًا
#include <iostream>
using namespace std;
int main()
{
int e = 1;
for (int a = 1; a <= 5; a++)
{
for (int b = 4; b >= a; b--)
{
cout << " ";
}
for (int c = 0; c < e; c++)
{
cout << "*";
}
cout << endl;
e = e + 2;
}
return 0;
}
فيما يلي شرح خطوة بخطوة لما يحدث عند تشغيل هذا البرنامج:
- يقوم البرنامج بتعريف 4 متغيرات
e,a, c، وbويعطيهم القيم البدائية 1، 1، 0 و 4، على التوالي. - يبدأ البرنامج بحلقة الدوران الخارجية for.
- الشرط في الحلقة الخارجية يتحقق إذا كانت قيمة المتغير
aأقل أو يساوي 5. إذا كانت كذلك، يتم الإنتقال إلى حلقة الدوران الداخلية. - الشرط في الحلقة الداخلية يتأكد ما إذا كانت قيمة المتغير
bأكبر أو تساويa، يقوم البرنامج بطباعة مساحة إلى شاشة المخرجات. - ثم تتناقص قيمة المتغير في الحلقة الداخلية
bبمقدار 1. - تقوم الحلقة الداخلية بتكرار الخطوات 4 إلى 5 حتى تصبح قيمة المتغير
bأقل منa. - بعد انتهاء حلقة for الداخلية، يقوم البرنامج بطباعة نجمة على شاشة المخرجات لكل تكرار للحلقة الداخلية.
- يقوم البرنامج بعد ذلك بطباعة حرف السطر الجديد إلى شاشة المخرجات.
- حلقة for الخارجية تقوم بزيادة قيمة المتغير
aبمقدار 1. - تقوم الحلقة الخارجية بتكرار الخطوات 3 إلى 9 حتى تصبح قيمة المتغير
aأكبر من 5:
مخرجات البرنامج تكون كالتالي:
* *** ***** ******* *********
دعونا نطبعه رأسًا على عقب!
#include <iostream>
using namespace std;
int main()
{
int e = 9;
for (int r = 1; r <= 5; r++)
{
for (int c = 0; c < e; c++)
{
cout << "*";
}
cout << endl;
e = e - 2;
for (int s = 0; s < r; s++)
{
cout << " ";
}
}
return 0;
}
المخرجات:
*********
*******
*****
***
*
يمكنك أيضًا استخدام الحلقات المتداخلة لرسم أشكال أخرى، مثل المربعات والمستطيلات والمعينات.