Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

الخوارزمياتالحلقات المتداخلة - التمرين العاشر

المطلوب

إستخدم الحلقات لطباعة الشكل التالي.


النتيجة المطلوبة

طريقة التحليل

الخوارزمية

كود الجافا

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 لطباعة الرمز * ثمانية مرات.

نرجو منك الإنتقال لدورة البرمجة للمبتدئين الجديدة التي أنشأنها كبديل أفضل لهذه الدورة ففي تلك الدورة قمنا بتبسيط الشرح أكثر و جعلناك قادر على تجربة الكود بشكل مباشر في موقعنا.


دورة تعلم البرمجة للمبتدئين >