JavaRush /مدونة جافا /Random-AR /للحلقة في جافا

للحلقة في جافا

نشرت في المجموعة
يقولون أن أفضل مبرمج هو مبرمج كسول. فبدلاً من تنفيذ نفس النوع من الإجراءات عدة مرات، سوف يأتي بخوارزمية تقوم بهذه المهمة نيابةً عنه. وسوف يفعل ذلك بشكل جيد حتى لا تكون هناك حاجة لإعادته. كيفية استخدام حلقة في جافا - 1من أجل تجنب كتابة نفس الكود مرارا وتكرارا، تم اختراع الحلقات. لنتخيل أننا بحاجة إلى عرض الأرقام من 0 إلى 99 على وحدة التحكم، كود بدون حلقة:
System.out.println(0);
System.out.println(1);
System.out.println(2);
System.out.println(3);
System.out.println(4);
System.out.println(5);
// And so on
سيستغرق هذا الرمز 100 سطر! كثير جدا. وهذا ما سيبدو عليه مع الحلقة:
for(int i = 0; i < 100; i++) {
   System.out.println(i);
}
3 أسطر فقط!

ما هي للحلقات؟

حلقة for هي بنية تحكم في كود البرنامج الذي يكسر خطية تنفيذ الخوارزمية ويسمح لك بتنفيذ الكود المحدد عدة مرات. على سبيل المثال، تحتاج إلى تناول 30 قطرة من الدواء. ستكون الخوارزمية شيئًا مثل هذا:
  1. تحضير كوب.
  2. فتح الغطاء.
  3. احصل على قطرة واحدة.
  4. احصل على قطرتين.
  5. ...
  6. احصل على 30 قطرة.
  7. أغلق الدواء.
  8. خذ الجزء المستلم.
يمكن شرح هذه الخوارزمية بسرعة أكبر:
  1. تحضير كوب.
  2. افتح غطاء التنقيط.
  3. احصل على 30 قطرة.
  4. أغلق الدواء.
  5. خذ الجزء المستلم.
نستخدم حلقة for كل يوم تقريبًا في محادثة مع أشخاص آخرين: "...20 خطوة في الشارع..."، "...قم بـ 10 تكرارات و5 مرات أخرى أبطأ مرتين..."، ".. قم بإجراء 5 عمليات شراء في فئات مختلفة واحصل على جائزة..." يمكنني الاستمرار لفترة طويلة، لكن المعنى واضح. في Java، تعد حلقة for ضرورية لإبقاء التعليمات البرمجية الخاصة بك قصيرة وموجزة.

كيف تعمل حلقة for

يتم استخدام حلقة for على النحو التالي:
for(<начальная точка>; <condition выхода>; <операторы счетчика>) {
	// Loop body
}
Пример перебора цифр от 0 до 5 и вывод каждой в консоль:
for(int i = 0; i < 5; i++) {
   System.out.println(i);
}
خاتمة:

0
1
2
3
4
إذا ترجمنا هذا الإدخال إلى لغة بشرية، نحصل على ما يلي: "قم بإنشاء متغير i بقيمة أولية 0، حتى يصل إلى 5، وأضف إليه 1 وفي كل خطوة اكتب قيمة i إلى وحدة التحكم ". تعتمد حلقة for في Java على ثلاث مراحل، والتي يمكن تمثيلها بالرسم البياني التالي: كيفية استخدام حلقة for في جافا - 2شرط الخروج من الحلقة هو تعبير منطقي. إذا كان خطأ، سوف تنتهي الحلقة. في المثال أعلاه، iتتم زيادة المتغير بمقدار 1. إذا كانت قيمته أقل من 5، تستمر الحلقة. ولكن بمجرد أن iيصبح أكبر من أو يساوي 5، ستتوقف الدورة. عامل العداد هو تعبير يقوم بإجراء تحويل على متغير العداد. في المثال أعلاه، تمت زيادة المتغير iبمقدار 1. أي أنه سيتم تنفيذ الحلقة 5 مرات بالضبط. إذا أضاف عامل العداد 2 إلى المتغير i، فستكون النتيجة مختلفة:
for(int i = 0; i < 5; i = i + 2) {
   System.out.println(i);
}
خاتمة:

0
2
4
يمكنك أيضًا ضرب متغير أو قسمته أو رفعه إلى قوة، بشكل عام، افعل ما تريد. الشيء الرئيسي هو أن التحول يؤدي إلى رقم. جسم الحلقة هو أي كود يمكن تنفيذه. في المثال أعلاه، كان جسم الحلقة يُخرج قيمة المتغير i إلى وحدة التحكم، لكن محتويات هذا الجسم محدودة بالمهمة والخيال. لتلخيص المخطط بأكمله، فإن مبدأ حلقة for هو كما يلي: سيتم تنفيذ الكود الموجود في نص الحلقة عدة مرات مثل عدد التحويلات التي سيقوم بها عامل العداد قبل الوصول إلى شرط الخروج من الحلقة . إذا قمت بتعيين شرط الخروج من الحلقة على النحو التالي true:
for(int i = 0; true; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
بعد ذلك، سيتم تمييز الكود الموجود بعد الحلقة بخطأ unreachable statement، لأنه لن يتم تنفيذه أبدًا. تحدي البراعة: نتيجة لتشغيل الكود أدناه، هل سيتم Loop endedإخراج " " إلى وحدة التحكم أم أن الحلقة ستعمل إلى ما لا نهاية؟
for(int i = 0; i > -1; i++) {
   if(i % 1000000 == 0) System.out.println(i);
}
System.out.println("Loop ended");
الجواب: سيكون هناك. المتغير i سوف يصل عاجلا أم آجلا إلى قيمته القصوى، وزيادة أخرى ستحوله إلى قيمة سلبية قصوى، ونتيجة لذلك سيتم استيفاء شرط الخروج (i < = -1).

لكل حلقة

عند العمل باستخدام الحلقات، يتعين عليك أحيانًا التكرار على المصفوفات أو المجموعات. عادةً يمكنك التكرار عبر مصفوفة باستخدام حلقة for:
public void printAllElements(String[] stringArray) {
   for(int i = 0; i < stringArray.length; i++) {
       System.out.println(stringArray[i]);
   }
}
وهذا صحيح. ومع ذلك، لتكرار جميع عناصر المصفوفة واحدًا تلو الآخر، فقد توصلوا إلى بنية forEach. توقيعه هو كما يلي:
for(<Тип element> <Name переменной, куда будет записан очередной элемент> : <Название массива>) {
	// Loop body
}
يمكنك التكرار عبر مجموعة من السلاسل وطباعة كل واحدة منها على وحدة التحكم بالطريقة التالية:
public void printAllElements(String[] stringArray) {
   for(String s : stringArray) {
       System.out.println(s);
   }
}
وأيضا مختصرة ومختصرة. والأهم من ذلك، ليست هناك حاجة للتفكير في العداد وحالة الخروج، فكل شيء تم إنجازه بالفعل بالنسبة لنا.

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

الآن دعونا نلقي نظرة على بعض الأمثلة لاستخدام حلقة for في Java لحل المشكلات المختلفة.

دورة عكسية (من الأكبر إلى الأصغر)

for(int i = 5; i > 0; i--) {
   System.out.println(i);
}
خاتمة:

5
4
3
2
1

عدة متغيرات وزيادة العداد في جسم الحلقة

يمكنك استخدام متغيرات متعددة في حلقة for، على سبيل المثال يمكن تحويلها في بيان العداد:
int a = 0;
for(int i = 5; i > 0; i--, a++) {
   System.out.print("Step: " + a + " Meaning: ");
   System.out.println(i);
}
خاتمة:

Шаг: 0 Значение: 5
Шаг: 1 Значение: 4
Шаг: 2 Значение: 3
Шаг: 3 Значение: 2
Шаг: 4 Значение: 1
أو أعلن عن متغيرين وحلقة حتى يصبحا متساويين:
for(int i = 5, j = 11; i != j; i++, j--) {
   System.out.println("i: " + i + " j: " + j);
}
خاتمة:

i: 5 j: 11
i: 6 j: 10
i: 7 j: 9
ومن غير المرجح أن يكون لهذا الإجراء أي قيمة، ولكن من المفيد معرفة هذا الاحتمال. يمكنك أيضًا إنشاء حلقات داخلية داخل حلقة for. في هذه الحالة، سيتم مضاعفة عدد خطوات الحلقة:
for(int i = 0; i < 5; i++) {
   System.out.print(i + " | ");
   for(int j = 0; j < 5; j++) {
       System.out.print(j + " ");
   }
   System.out.print('\n');
}
خاتمة:

0 | 0 1 2 3 4 
1 | 0 1 2 3 4 
2 | 0 1 2 3 4 
3 | 0 1 2 3 4 
4 | 0 1 2 3 4
في حلقة العداد، jمن الممكن الوصول إلى عداد الحلقة الخارجية. وهذا يجعل الحلقات المتداخلة طريقة مثالية لاجتياز المصفوفات ثنائية وثلاثية الأبعاد ومصفوفات أخرى:
int[][] array = { {0, 1, 2, 3, 4 },
                       {1, 2, 3, 4, 5},
                       {2, 3, 4, 5, 6},
                       {3, 4, 5, 6, 7}};

for(int i = 0; i < array.length; i++) {
   for(int j = 0; j < array[i].length; j++) {
       System.out.print(array[i][j] + " ");
   }
   System.out.print('\n');
}
خاتمة:

0 1 2 3 4 
1 2 3 4 5 
2 3 4 5 6 
3 4 5 6 7 

الانتهاء المبكر من الدورة

إذا كنت بحاجة إلى مقاطعة حلقة أثناء معالجة حلقة، فاستخدم العامل breakالذي يوقف النص الحالي للحلقة. يتم أيضًا تخطي جميع التكرارات اللاحقة:
public void getFirstPosition(String[] stringArray, String element) {
   for (int i = 0; i < stringArray.length; i++) {
       if(stringArray[i].equals(element)) {
           System.out.println(i);
           break;
       }
   }
}
سيقوم التابع بطباعة موضع العنصر الأول الذي تم البحث عنه في المصفوفة:
String[] array = {"one", "two", "three", "Jeronimo"};
getFirstPosition(array, "two");
خاتمة:

1

دورة لا نهاية لها

هناك طريقة أخرى لإنشاء حلقة for لا نهائية وهي ترك منطقة إعلان العداد وشرط الخروج وعبارة العداد فارغة:
for (;;) {
}
لكن ضع في اعتبارك أنه في معظم الحالات تكون الحلقة اللانهائية دليلاً على وجود خطأ منطقي. يجب أن يكون لمثل هذه الحلقة شرط خروج. كيفية استخدام حلقة for في جافا - 3
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION