من أجل، بينما، والقيام أثناء الحلقة Javaنص برمجي مع مثال

⚡ ملخص ذكي

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

  • 🔁 الغرض الأساسي: تقوم الحلقة بتنفيذ نفس العبارات بشكل متكرر لعدد ثابت أو طالما أن شرطًا معينًا يظل صحيحًا.
  • 🔢 حلقة التكرار: تتضمن ثلاثة تعبيرات في رأس الملف معالجة التهيئة، واختبار الخروج، والتحديث، وهو ما يناسب عدد التكرارات المعروف.
  • ❓ حلقة التكرار while: يتم اختبار الشرط قبل كل تمريرة، لذلك قد لا يتم تنفيذ الجسم أبدًا إذا بدأ الشرط خاطئًا.
  • 1️⃣ حلقة do…while: يتم تشغيل الجسم دائمًا مرة واحدة على الأقل لأن الحالة يتم تقييمها بعد المرور الأول.
  • 🔑 for…in Loop: يتكرر على مفاتيح الكائن، ويعيد أسماء الخصائص بدلاً من القيم.
  • 📦 for…of Loop: يتكرر على قيم المصفوفات والسلاسل والخرائط وغيرها من الكائنات القابلة للتكرار.
  • ⛔ التحكم في التدفق: تُنهي عبارة break الحلقة فورًا، بينما تنتقل عبارة continue إلى التكرار التالي.

حلقة التكرار "for while" و "do while" Javaسيناريو

ما هي الحلقة في Javaالبرنامج النصي؟

تكون الحلقات مفيدة عندما يتعين عليك تنفيذ نفس أسطر التعليمات البرمجية بشكل متكرر، لعدد محدد من المرات أو طالما كان شرط معين صحيحًا. لنفترض أنك تريد كتابة رسالة "مرحبًا" 100 مرة في صفحة الويب الخاصة بك. وبطبيعة الحال، سيكون عليك نسخ ولصق نفس السطر 100 مرة. بدلاً من ذلك، إذا كنت تستخدم الحلقات، فيمكنك إكمال هذه المهمة في 3 أو 4 أسطر فقط.

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

استخدم الحلقات في Javascript

أنواع مختلفة من الحلقات في Javaسيناريو

هناك بشكل رئيسي أربعة أنواع من الحلقات Javaسيناريو.

  1. لحلقة
  2. حلقة for/in
  3. حائط اللوب
  4. افعل ... أثناء التكرار

بلمسة عصرية Javaيُضيف البرنامج النصي حلقة for…of لتكرار القيم مباشرةً، لذا تتوفر خمسة أشكال عمليًا. يوضح الجدول أدناه الشكل الأنسب في كل حالة.

أنشوطة تم فحص الحالة الحد الأدنى من عمليات الإعدام أفضل استخدام لـ
لـ قبل كل تمريرة 0 عدد معروف من التكرارات
في حين قبل كل تمريرة 0 عدد غير معروف مدفوع بشرط
افعل… بينما بعد كل تمريرة 1 القوائم والمطالبات التي يجب تشغيلها مرة واحدة
ل...في قبل كل تمريرة 0 قراءة مفاتيح الكائن
لـ... قبل كل تمريرة 0 قراءة قيم مصفوفة أو سلسلة نصية

لحلقة

بناء الجملة:

for(statement1; statement2; statment3)
{
lines of code to be executed
}
  1. يتم تنفيذ العبارة 1 أولاً، حتى قبل تنفيذ العبارة looping الكود. لذا، تُستخدم هذه العبارة عادةً لتعيين قيم للمتغيرات التي سيتم استخدامها داخل الحلقة.
  2. البيان 2 هو شرط تنفيذ الحلقة.
  3. يتم تنفيذ العبارة 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سيناريو لتحديد مكان حفظ النص النهائي.

الأسئلة الشائعة

تختبر حلقة while الشرط قبل المرور الأول، لذا قد لا يتم تنفيذ الجزء الرئيسي منها أبدًا. أما حلقة do…while فتختبر الشرط بعد المرور الأول، مما يضمن تنفيذ الكتلة مرة واحدة على الأقل.

نعم. تُكمل الحلقة الداخلية كل دورة من دورات الحلقة الخارجية، وهي الطريقة التي تُبنى بها الجداول والشبكات. استخدم أسماء عدادات مختلفة لتجنب الكتابة فوق الفهرس الخارجي.

أغلق علامة التبويب المتأثرة، ثم صحّح الشرط أو عبارة التحديث قبل إعادة التحميل. إضافة عداد يتوقف بعد عدد محدد من التكرارات يمنع تكرار المشكلة أثناء التطوير.

تُعدّ حلقة التكرار التقليدية (for loop) أسرع قليلاً مع المصفوفات الكبيرة لأنها تتجنب تكلفة استدعاء الدوال. ويكون الفرق ضئيلاً عند التعامل مع المصفوفات التي تحتوي على أقل من بضعة آلاف من العناصر، لذا يُفضّل التركيز على سهولة القراءة بدلاً من ذلك.

عادةً ما يتم استخدام "for" أو "of" أو "map" كخيار افتراضي. Revانظر إلى الاقتراح عندما تحتاج المهمة إلى فهرس أو خروج مبكر أو مرور أول مضمون، لأن هذه الحالات تتطلب شكلاً مختلفاً.

تقوم حلقة for await…of بقراءة أجزاء من استجابة متدفقة وإلحاق كل جزء بالصفحة. وهي النظير غير المتزامن لحلقة for…of وتتطلب دالة غير متزامنة.

تلخيص هذه التدوينة بـ: