CodeGym /مدونة جافا /Random-AR /حلقات جافا المتداخلة
John Squirrels
مستوى
San Francisco

حلقات جافا المتداخلة

نشرت في المجموعة
تدعم Java، مثل معظم لغات البرمجة الأخرى، الحلقات المتداخلة. وهذا يعني مجرد حلقة داخل حلقة. في هذه المقالة، سنتعرف على كيفية العمل مع الحلقات المتداخلة في Java.

حلقات جافا المتداخلة

تسمى الحلقة متداخلة إذا تم وضعها داخل حلقة أخرى. في التمريرة الأولى، تستدعي الحلقة الخارجية الحلقة الداخلية، والتي تستمر حتى الاكتمال، وبعد ذلك يتم نقل التحكم إلى جسم الحلقة الخارجية. في التمريرة الثانية، تستدعي الحلقة الخارجية الحلقة الداخلية مرة أخرى. وهكذا حتى تنتهي الحلقة الخارجية. هناك أربعة أنواع من الحلقات في جافا:
  • لحلقة _

  • حائط اللوب

  • افعل...أثناء الحلقة

  • لكل حلقة

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

كيف تعمل حلقات جافا المتداخلة

من المحتمل أن الحلقة الأكثر استخدامًا في Java هي for ، ويرجع ذلك إلى حد كبير إلى أنها متعددة الاستخدامات ومن السهل جدًا قراءة الكود الموجود بها. فيما يلي بناء الجملة العام للحلقة المتداخلة :

// outer loop
for (initialization; condition; increment) {
  //write here your code 

  //nested loop
  for(initialization; condition; increment) {
    //write here your code
  }
..
}
كيف يعمل؟ تبدأ الحلقة الخارجية. ثم تبدأ حلقة for المتداخلة العمل وتمر عبر فهرسها حتى يتم استيفاء الشرط، ثم تمرر العمل مرة أخرى إلى الحلقة الخارجية، ويحدث هذا حتى يتم استيفاء شرط الحلقة الخارجية. يبدو الأمر صعبًا بعض الشيء، أليس كذلك؟ حسنًا، سيكون فهم الأمر أسهل بكثير باستخدام مثال محدد، لذلك دعنا ننتقل إليه.

متداخل لمثال رمز الحلقة

هنا مثال كلاسيكي واحد. دعونا نطبع نصف هرم باستخدام حلقتين . واحد منهم متداخل.

public class NestedLoopsDemo1 {

   public static void main(String[] args) {

       for (int i = 0; i < 10; i++) {
           for (int j = 0; j<=i;  j++)
               System.out.print("*");
           System.out.println();
       }
      
   }
}
الإخراج هو:
* ** *** **** ***** ****** ******* ******** ********* ***** *****

مثال على التعليمات البرمجية المتداخلة أثناء الحلقة


public class NestedLoopsDemo2 {

   public static void main(String[] args) {

       int i = 0;
       while (i < 10) {
           int j = 0;
           while (j <= i) {
               System.out.print("*");
               j++;
           }
           System.out.println();
           i++;

       }
   }
}
الإخراج هو نفسه كما في المثال السابق:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
حلقة do...while تشبه حلقة while . والفرق الرئيسي هو أن نص do... while يتم تنفيذه مرة واحدة قبل التحقق من التعبير.

مثال على التعليمات البرمجية لحلقات foreach المتداخلة

يمكن أن تكون كل حلقة متداخلة كالمعتاد للحلقة . فيما يلي مثال على حلقة متداخلة لكل حلقة والتي تكرر مصفوفة ثنائية الأبعاد.

public class NestedLoops2 {

       public static void main(String[] args)
       {
           int[][] mainArray = { {5, 4, 3, 2, 1}, {7, 8, 9, 10, 11} };

           for (int[] myArray : mainArray)
           {
               for (int i : myArray)
               {
                   System.out.print(i+" ");
               }
               System.out.println("");
           }
       }
}
الإخراج هو:
5 4 3 2 1 7 8 9 10 11

مثال حلقة مختلطة for و while

في بعض الأحيان يمكننا دمج أنواع مختلفة من الحلقات داخل بعضها البعض. على سبيل المثال، للداخل بينما أو للداخل لكل . ومع ذلك، فهي ليست أفضل ممارسات البرمجة. مثل هذه التركيبات تضعف بشكل كبير إمكانية قراءة التعليمات البرمجية. لذلك يحاول المبرمجون المحترفون عدم الخلط بين أحدهما والآخر. حسنًا، إنهم يفعلون ذلك، ولكن فقط إذا كانت هناك حاجة لذلك حقًا. وهناك قاعدة صغيرة أخرى: إذا كنت تختار بين while و for ، فاستخدم for حيثما أمكن ذلك. ومع ذلك، سنحصل هنا على مثال لاستخدام حلقة for داخل while . دعونا نبني نصف الهرم مرة أخرى.

public class NestedLoopsDemo2 {

   public static void main(String[] args) {
       int i = 0;
       while (i < 10) {
           for (int j = 0; j <= i; j++) {
               System.out.print("*");
           }
           System.out.println();
           i++;

       }
   }
}
الإخراج خالي من المفاجآت:
* ** *** **** ***** ****** ******* ******** ********* ***** *****
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION