الخوارزمياتالحلقات المتداخلة - التمرين العاشر
المطلوب
إستخدم الحلقات لطباعة الشكل التالي.
النتيجة المطلوبة
طريقة التحليل
الخوارزمية
كود الجافا
public class Symbols {
public static void main (String[] args) {
System.out.print("* \n");
for (int i=2; i<=7; i++)
{
System.out.print("* ");
for (int k=1; k<=i-2; k++)
{
System.out.print("- ");
}
System.out.print("* \n");
}
for (int j=1; j<=8; j++)
{
System.out.print("* ");
}
System.out.print("\n");
}
}
public class Symbols {
public static void main (String[] args) {
System.out.print("* \n");
for (int i=2; i<=7; i++)
{
System.out.print("* ");
for (int k=1; k<=i-2; k++)
{
System.out.print("- ");
}
System.out.print("* \n");
}
for (int j=1; j<=8; j++)
{
System.out.print("* ");
}
System.out.print("\n");
}
}
شرح الكود
- الشكل الذي ننوي رسمه قمنا بتقسيمه إلى ثلاث أجزاء:
- جزء لم نستخدم فيه أي حلقة لرسمه.
- جزء إستخدمنا حلقة واحدة لرسمه.
- جزء إستخدمنا حلقة واحدة لرسمه.
- ملاحظة: كان بإمكاننا عدم تجزيء الشكل و التعامل معه كله دفعة واحدة لكننا كنا سنضطر لوضع شرط أو أكثر لنرسم السطر الأول و السطر الأخير.
System.out.print("* \n");
System.out.print("* \n");
- في السطر الأول من الشكل الذي ننوي رسمه لا داعي لوجود أي حلقة لذلك طبعنا الرمز * مباشرةً.
for (int i=2; i<=7; i++)
{
System.out.print("* ");
for (int k=1; k<=i-2; k++)
{
System.out.print("- ");
}
System.out.print("* \n");
}
for (int i=2; i<=7; i++)
{
System.out.print("* ");
for (int k=1; k<=i-2; k++)
{
System.out.print("- ");
}
System.out.print("* \n");
}
- من السطر الثاني و حتى السطر السابع من الشكل الذي ننوي رسمه. لاحظنا أنه يوجد معادلة ثابتة لرسمه و هي أن عدد الرموز - في كل سطر يساوي قيمة العداد
i
ناقص 2. - لذلك وجدنا أنه للحصول على هذا الشكل يجب أن نفعل التالي:
- نقوم بطباعة الرمز * في بداية كل سطر.
- نستخدم الحلقة
k
لتحديد كل رمز - سيتم طباعته. - نقوم بطباعة الرمز * في نهاءة كل سطر.
for (int j=1; j<=8; j++)
{
System.out.print("* ");
}
for (int j=1; j<=8; j++)
{
System.out.print("* ");
}
- السطر الأخير في الشكل الذي ننوي رسمه, إستخدمنا فيه حلقة واحدة إسمها
j
لطباعة الرمز * ثمانية مرات.