الخوارزمياتالحلقات المتداخلة - التمرين العاشر
المطلوب
إستخدم الحلقات لطباعة الشكل التالي.
النتيجة المطلوبة
طريقة التحليل
الخوارزمية
كود الجافا
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");
- في السطر الأول من الشكل الذي ننوي رسمه لا داعي لوجود أي حلقة لذلك طبعنا الرمز
*
مباشرةً.
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("* "); }
- السطر الأخير في الشكل الذي ننوي رسمه, إستخدمنا فيه حلقة واحدة إسمها
j
لطباعة الرمز*
ثمانية مرات.