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