من أجل، بينما، والقيام أثناء الحلقة Javaنص برمجي مع مثال
⚡ ملخص ذكي
حلقات التكرار For و While و Do While Javaتُكرر هذه المقالة مجموعة من التعليمات البرمجية دون تكرار الكود. تشرح كل صيغة، وتعرض أمثلة قابلة للتنفيذ مع المخرجات المتوقعة، وتضيف صيغتي for-in و for-of، وتغطي أوامر break و continue ومنع الحلقات اللانهائية.

ما هي الحلقة في Javaالبرنامج النصي؟
تكون الحلقات مفيدة عندما يتعين عليك تنفيذ نفس أسطر التعليمات البرمجية بشكل متكرر، لعدد محدد من المرات أو طالما كان شرط معين صحيحًا. لنفترض أنك تريد كتابة رسالة "مرحبًا" 100 مرة في صفحة الويب الخاصة بك. وبطبيعة الحال، سيكون عليك نسخ ولصق نفس السطر 100 مرة. بدلاً من ذلك، إذا كنت تستخدم الحلقات، فيمكنك إكمال هذه المهمة في 3 أو 4 أسطر فقط.
تتكون كل حلقة تكرارية من ثلاثة أجزاء متشابهة، بغض النظر عن شكل الصيغة: قيمة ابتدائية، وشرط يحدد ما إذا كان سيتم تنفيذ دورة أخرى، وتحديث يُحرك الحلقة نحو نهايتها. يوضح الرسم البياني أدناه هذه الدورة المتكررة.
أنواع مختلفة من الحلقات في Javaسيناريو
هناك بشكل رئيسي أربعة أنواع من الحلقات Javaسيناريو.
- لحلقة
- حلقة for/in
- حائط اللوب
- افعل ... أثناء التكرار
بلمسة عصرية Javaيُضيف البرنامج النصي حلقة for…of لتكرار القيم مباشرةً، لذا تتوفر خمسة أشكال عمليًا. يوضح الجدول أدناه الشكل الأنسب في كل حالة.
| أنشوطة | تم فحص الحالة | الحد الأدنى من عمليات الإعدام | أفضل استخدام لـ |
|---|---|---|---|
| لـ | قبل كل تمريرة | 0 | عدد معروف من التكرارات |
| في حين | قبل كل تمريرة | 0 | عدد غير معروف مدفوع بشرط |
| افعل… بينما | بعد كل تمريرة | 1 | القوائم والمطالبات التي يجب تشغيلها مرة واحدة |
| ل...في | قبل كل تمريرة | 0 | قراءة مفاتيح الكائن |
| لـ... | قبل كل تمريرة | 0 | قراءة قيم مصفوفة أو سلسلة نصية |
لحلقة
بناء الجملة:
for(statement1; statement2; statment3)
{
lines of code to be executed
}
- يتم تنفيذ العبارة 1 أولاً، حتى قبل تنفيذ العبارة looping الكود. لذا، تُستخدم هذه العبارة عادةً لتعيين قيم للمتغيرات التي سيتم استخدامها داخل الحلقة.
- البيان 2 هو شرط تنفيذ الحلقة.
- يتم تنفيذ العبارة 3 في كل مرة بعد looping يتم تنفيذ الكود.
جرب هذا بنفسك:
<html>
<head>
<script type="text/javascript">
var students = new Array("John", "Ann", "Aaron", "Edwin", "Elizabeth");
document.write("<b>Using for loops </b><br />");
for (i=0;i<students.length;i++)
{
document.write(students[i] + "<br />");
}
</script>
</head>
<body>
</body>
</html>
الإخراج:
Using for loops John Ann Aaron Edwin Elizabeth
يبدأ العداد من 0 لأن الفهرس الأول لـ مجموعة يساوي صفرًا، ويستخدم الشرط students.length بحيث تتكيف الحلقة تلقائيًا عند إضافة الأسماء أو إزالتها.
حائط اللوب
بناء الجملة:
while(condition)
{
lines of code to be executed
}
يتم تنفيذ "حلقة while" طالما أن الشرط المحدد صحيح. داخل حلقة while، يجب عليك تضمين العبارة التي ستنهي الحلقة عند نقطة زمنية معينة. وإلا، فلن تنتهي حلقتك أبدًا وقد يتعطل متصفحك.
جرب هذا بنفسك:
<html>
<head>
<script type="text/javascript">
document.write("<b>Using while loops </b><br />");
var i = 0, j = 1, k;
document.write("Fibonacci series less than 40<br />");
while(i<40)
{
document.write(i + "<br />");
k = i+j;
i = j;
j = k;
}
</script>
</head>
<body>
</body>
</html>
الإخراج:
Using while loops Fibonacci series less than 40 0 1 1 2 3 5 8 13 21 34
⚠️ تحذير: حلقة while التي لا يتحقق شرطها أبدًا تؤدي إلى تجميد علامة تبويب المتصفح. تأكد دائمًا من أن متغيرًا داخل جسم الحلقة يُغيّر الشرط نحو الخطأ، واستخدم عداد أمان عندما يعتمد الخروج على بيانات خارجية.
افعل ... أثناء التكرار
بناء الجملة:
do
{
block of code to be executed
} while (condition)
حلقة do…while تشبه إلى حد كبير حلقة while. الفرق الوحيد هو أنه في حلقة do…while، يتم تنفيذ كتلة التعليمات البرمجية مرة واحدة حتى قبل التحقق من الشرط.
جرب هذا بنفسك:
<html>
<head>
<script type="text/javascript">
document.write("<b>Using do...while loops </b><br />");
var i = 2;
document.write("Even numbers less than 20<br />");
do
{
document.write(i + "<br />");
i = i + 2;
}while(i<20)
</script>
</head>
<body>
</body>
</html>
الإخراج:
Using do...while loops Even numbers less than 20 2 4 6 8 10 12 14 16 18
يظهر الفرق جليًا عندما يكون الشرط خاطئًا منذ البداية. حلقة while لا تطبع شيئًا، بينما حلقة do…while تطبع سطرًا واحدًا قبل التوقف.ping.
for…in loop
تتنقل حلقة for…in عبر أسماء الخصائص القابلة للتعداد لكائن ما. في كل دورة، يتم تعيين المفتاح التالي لمتغير الحلقة، ويتم قراءة القيمة باستخدام صيغة الأقواس.
const student = { name: "Ann", age: 21, course: "JavaScript" }; for (const key in student) { console.log(key + " : " + student[key]); }
الإخراج:
name : Ann age : 21 course : JavaScript
💡 نصيحة: تجنّب استخدام حلقة for…in مع المصفوفات. فهي تُعيد قيم الفهرس كسلاسل نصية، كما أنها تزور الخصائص الموروثة، مما قد يُنتج نتائج غير متوقعة. استخدم حلقة for…of أو حلقة for التقليدية مع المصفوفات بدلاً من ذلك.
for…of loop and forEach
تقرأ حلقة for…of قيم أي كائن قابل للتكرار، بما في ذلك المصفوفات والسلاسل النصية والخرائط والمجموعات. وتحقق دالة forEach النتيجة نفسها باستخدام دالة رد نداء، وتتيح الوصول إلى الفهرس.
const students = ["John", "Ann", "Aaron"]; // for...of reads each value directly for (const name of students) { console.log(name); } // forEach supplies the value and the index students.forEach(function (name, index) { console.log(index + " - " + name); }); // strings are iterable too for (const letter of "Ann") { console.log(letter); }
الإخراج:
John Ann Aaron 0 - John 1 - Ann 2 - Aaron A n n
هناك فرق عملي مهم: يمكن استخدام break و continue داخل for…of، ولكن لا يمكن استخدامهما داخل forEach، لأن كل رد نداء هو دالة منفصلة.
عبارات التوقف والاستمرار
هناك كلمتان مفتاحيتان تُغيران التدفق الطبيعي لأي حلقة تكرارية. تُخرج عبارة break الحلقة بالكامل، بينما تتخلى عبارة continue عن الدورة الحالية وتنتقل إلى الدورة التالية.
const numbers = [4, 7, 10, 13, 16, 19]; // continue: skip odd numbers for (const n of numbers) { if (n % 2 !== 0) { continue; } console.log("even: " + n); } // break: stop at the first value above 12 for (const n of numbers) { if (n > 12) { console.log("first value above 12: " + n); break; } }
الإخراج:
even: 4 even: 10 even: 16 first value above 12: 13
تظهر الحلقات في كل برنامج تقريبًا ستكتبه. تابع مع عملي Javaأمثلة على أكواد البرمجة النصية، إعادة النظر Javaأساليب مصفوفة البرنامج النصي للاطلاع على أدوات المساعدة في التكرار المبنية على هذه الحلقات، اقرأ داخلي وخارجي Javaسيناريو لتحديد مكان حفظ النص النهائي.

