الجمل الشرطية في Javaالنص: إذا، وإلا، وإلا إذا

⚡ ملخص ذكي

العبارات الشرطية في Javaيحدد البرنامج النصي أي كتلة من التعليمات البرمجية يتم تشغيلها عن طريق اختبار شرط معين، وتغطي صيغ if و if…else و if…else if…else تقريبًا كل قرار تفرع قد يحتاجه البرنامج النصي المبتدئ.

  • 🔘 بناء الجملة: لا يتم تنفيذ كتلة عبارة if إلا عندما يكون الشرط الموجود داخل الأقواس صحيحًا.
  • ☑️ فرعان: يوفر شكل if…else كتلة احتياطية يتم تشغيلها كلما كان الشرط خاطئًا.
  • فروع عديدة: يقوم التسلسل الشرطي "else if" باختبار عدة شروط بالترتيب ويتوقف عند أول تطابق.
  • 🧪 الاختزال: يقوم عامل التشغيل الثلاثي بتكثيف عبارة if…else البسيطة إلى تعبير واحد يُرجع قيمة.
  • 🛠️ البديل: تقارن عبارة switch قيمة واحدة بالعديد من الخيارات الثابتة بشكل أكثر دقة من سلسلة طويلة.
  • 📊 المزالق: تتسبب القيم الخاطئة، وعامل التعيين غير المقصود، والأقواس المفقودة في معظم أخطاء الشروط.

الجمل الشرطية في Javaسيناريو

Javaعبارات شرطية في البرنامج النصي

هناك ثلاثة أنواع رئيسية من البيانات الشرطية في Javaسيناريو.

  1. إذا البيان: عبارة "if" تنفذ التعليمات البرمجية بناءً على الشرط.
  2. if… else البيان: عبارة if...else تتكون من كتلتين من التعليمات البرمجية؛ عندما يكون الشرط صحيحًا، فإنه ينفذ المجموعة الأولى من التعليمات البرمجية، وعندما يكون الشرط خاطئًا، فإنه ينفذ المجموعة الثانية من التعليمات البرمجية.
  3. إذا…إلا إذا…بيان آخر: عندما يلزم اختبار شروط متعددة وتنفيذ كتل مختلفة من التعليمات البرمجية بناءً على الشرط الصحيح، يتم استخدام عبارة if…else if…else.

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

كيفية استخدام العبارات الشرطية

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

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

مخطط انسيابي يوضح Javaشرط البرنامج النصي يتفرع إلى مسار صحيح ومسار خاطئ

إذا البيان

بناء الجملة:

if(condition)
{
	lines of code to be executed if condition is true
}

يمكنك استخدام if استخدم هذا البيان للتحقق من شرط محدد فقط. عندما يتم تقييم التعبير داخل الأقواس إلى trueيتم تنفيذ الكتلة؛ وعندما يتم تقييمها إلى false، يتخطى المترجم ذلك مباشرة ويستمر النص في تنفيذ العبارة التالية.

جرب هذا بنفسك:

<html>
<head>
	<title>IF Statments!!!</title>
	<script type="text/javascript">
		var age = prompt("Please enter your age");
		if(age>=18)
		document.write("You are an adult <br />");
		if(age<18)
		document.write("You are NOT an adult <br />");
	</script>
</head>
<body>
</body>
</html>

يطلب المثال من الزائر إدخال عمره، ثم يختبر هذه القيمة مرتين: مرة لمن يبلغ 18 عامًا فأكثر، ومرة ​​لمن يقل عمره عن 18 عامًا. وذلك لأن هناك عمليتين منفصلتين if يتم استخدام العبارات بدلاً من elseيتم تقييم كلا الشرطين في كل مرة يتم فيها تحميل الصفحة.

المكافئ الحديث: تم الاحتفاظ بالكود أعلاه كما هو منشور تماماً. في الوضع الحالي Javaعادةً ما تُكتب نفس المنطق باستخدام البرنامج النصي let or const بدلا من var، مع console.log() or textContent بدلا من document.write()، وبدون type="text/javascript" السمة التي يجعلها HTML5 اختيارية.

عبارة if…Else

بناء الجملة:

if(condition)
{
	lines of code to be executed if the condition is true
}
else
{
	lines of code to be executed if the condition is false
}

يمكنك استخدام if...else إذا كان عليك التحقق من شرط واحد وتنفيذ جزء مختلف من التعليمات البرمجية لكل نتيجة، فسيتم تنفيذ جزء واحد فقط من الجزأين دائمًا، لذا لا حاجة لاختبار ثانٍ منفصل.

جرب هذا بنفسك:

<html>
<head>
	<title>If...Else Statments!!!</title>
	<script type="text/javascript">
		// Get the current hours
		var hours = new Date().getHours();
		if(hours<12)
		document.write("Good Morning!!!<br />");
		else
		document.write("Good Afternoon!!!<br />");
	</script>
</head>
<body>
</body>
</html>

هنا new Date().getHours() تُعيد هذه الدالة الساعة الحالية لساعة المتصفح كرقم من 0 إلى 23. أي قيمة أقل من 12 تُنتج تحية الصباح، وأي قيمة أخرى تُعرض بشكل صحيح. else فرع شجرة.

عبارة if…Else if…Else

بناء الجملة:

if(condition1)
{
	lines of code to be executed if condition1 is true
}
else if(condition2)
{
	lines of code to be executed if condition2 is true
}
else
{
	lines of code to be executed if condition1 is false and condition2 is false
}

يمكنك استخدام if...else if...else يمكنك استخدام هذا البيان للتحقق من أكثر من شرطين. يتم تقييم الشروط من الأعلى إلى الأسفل، ويتوقف التنفيذ عند أول شرط صحيح، ثم الشرط الأخير. else يُستخدم كحل شامل عندما لا يتطابق أي منها.

جرب هذا بنفسك:

<html>
<head>
	<script type="text/javascript">
		var one = prompt("Enter the first number");
		var two = prompt("Enter the second number");
		one = parseInt(one);
		two = parseInt(two);
		if (one == two)
			document.write(one + " is equal to " + two + ".");
		else if (one<two)
			document.write(one + " is less than " + two + ".");
		else
			document.write(one + " is greater than " + two + ".");
	</script>
</head>
<body>
</body>
</html>

لاحظ الاتصالين بـ parseInt()القيم التي تُرجعها prompt() هي سلاسل نصية، لذا فإن مقارنتها بدون تحويل ستقارن النص بدلاً من الأرقام وستبلغ عن "9" على أنها أكبر من "10".

ثلاثي Operaتور: اختصار لعبارة if…else

عندما if...else يختار المربع بين قيمتين فقط، بينما يعبّر عامل الشرط (الثلاثي) عن نفس القرار الذي يعبّر عنه تعبير واحد. وهو الوحيد Javaعامل نصي يأخذ ثلاثة معاملات: شرط، وعلامة استفهام، والقيمة المستخدمة عندما يكون الشرط صحيحًا، ونقطتين رأسيتين، والقيمة المستخدمة عندما يكون الشرط خاطئًا.

// if...else form
let message;
if (age >= 18) {
  message = "adult";
} else {
  message = "minor";
}

// same decision as a ternary expression
let label = age >= 18 ? "adult" : "minor";

استخدم عامل التشغيل الثلاثي عندما يحسن من سهولة القراءة، وليس لمجرد توفير عدد الأسطر:

  • ملاءمة جيدة: اختيار إحدى القيمتين لتعيينها أو إرجاعها أو إسقاطها في سلسلة القالب.
  • غير مناسب: الفروع التي تقوم بتشغيل عدة عبارات، أو تستدعي وظائف لتأثيراتها الجانبية، أو تحتاج إلى متغيرات محلية خاصة بها.
  • تجنب التعشيش: من الصعب قراءة العلاقة الثلاثية داخل العلاقة الثلاثية مقارنةً بـ else if السلسلة.

عبارة switch مقابل عبارة if…else if…else

على طول else if عادةً ما تكون السلسلة التي تستمر في مقارنة نفس المتغير بقيم ثابتة مختلفة أكثر وضوحًا كـ switch العبارة. يقوم المفتاح بتقييم تعبيره مرة واحدة، ثم ينتقل إلى العبارة المطابقة. case; break يمنع تنفيذ الحكم في القضية التالية، و default يلعب دور النهائي else.

switch (day) {
  case "Sat":
  case "Sun":
    document.write("Weekend");
    break;
  default:
    document.write("Weekday");
}

لا يمكن استبدال الهيكلين في كل الحالات:

نقطة المقارنة إذا…إلا إذا…إلا تحول
نوع الاختبار أي تعبير منطقي، بما في ذلك نطاقات مثل hours<12 المساواة مقابل القيم الثابتة فقط
المقارنة المستخدمة أيًا كان المعامل الذي تكتبه مقارنة دقيقة، إذن "5" غير مطابق 5
قراءة أفضل لبعض الشروط غير ذات الصلة أفضل للعديد من قيم متغير واحد
خطأ شائع نسيان اللاحق else النسيان breakمما يسمح بفشل التنفيذ

القيم الحقيقية والزائفة في Javaشروط البرنامج النصي

لا يشترط أن يكون الشرط مقارنة. Javaيقوم البرنامج النصي بتحويل أي شيء يجده داخل الأقواس إلى قيمة منطقية أولاً، ولهذا السبب if (name) هذا رمز صحيح. ست قيم فقط تتحول إلى خطأ: false, 0السلسلة الفارغة، null, undefinedو NaNكل شيء آخر صحيح، بما في ذلك السلسلة "0"، ومصفوفة فارغة، وكائن فارغ.

معظم الأخطاء الشرطية في البرامج النصية للمبتدئين ناتجة عن قائمة قصيرة من الأخطاء:

  • التخصيص بدلاً من المقارنة: if (x = 5) يُسند المهام ويكون صادقاً دائماً؛ if (x === 5) يقارن.
  • مفاجآت المساواة غير المؤكدة: == يقوم بتحويل الأنواع قبل المقارنة، لذلك "" == 0 هذا صحيح. يُفضّل ===.
  • الأقواس المفقودة: بدون {} العبارة التالية فقط هي التي تنتمي إلى الفرع، تمامًا كما في الأمثلة أعلاه.
  • المدخلات غير المحولة: قيم من prompt() وتكون حقول النموذج عبارة عن سلاسل نصية حتى parseInt() or Number() يحولهم.
  • الفروع التي لا يمكن الوصول إليها: في else if في سلسلة الاختبارات، ضع الشرط الأضيق أولاً، وإلا فإن الاختبار الأوسع نطاقاً في وقت سابق سيفوز دائماً.

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

A واحد = يُسند قيمة ويجعل الشرط صحيحاً عن طريق الصدفة. == تتم المقارنة بعد تحويل الأنواع، لذلك "" == 0 صحيح. === يقارن بين القيمة والنوع معًا، وهو الخيار الافتراضي الأكثر أمانًا.

يمكن للمساعدين الذين يعملون بالذكاء الاصطناعي إعادة صياغة شيء غير مألوف else if اشرح سلسلة التعليمات البرمجية بلغة بسيطة، واقترح قيم الإدخال التي تصل إلى كل فرع، وحدد شرطًا لا يمكن أن يكون صحيحًا أبدًا. شغّل الكود بنفسك دائمًا، لأن الشرح مجرد اقتراح وليس برهانًا قاطعًا.

نعم في كثير من الأحيان. مساعد الطيار جيثب يُكمل تنفيذ التعليمات البرمجية المتفرعة من تعليق أو شرط جزئي. تحقق من قيم الحدود التي يختارها، نظرًا لأنها مُولّدة > حيثما كنت بحاجة >= من السهل تفويتها.

لا توجد قيود على اللغة. يمكن أن يظهر أي بيان داخل فرع، بما في ذلك المزيد ifبعد مستويين، يصبح المنطق صعب الفهم، لذا ادمج الاختبارات مع && أو العودة مبكراً بدلاً من ذلك.

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

&& لا يكون ذلك صحيحاً إلا عندما يكون كلا الجانبين صادقين، || يكون هذا صحيحًا عندما يكون أي من الجانبين صحيحًا. كلاهما يُسبب قصر الدائرة: لا يتم تقييم الجانب الأيمن أبدًا بمجرد تحديد النتيجة مسبقًا.

getHours() يقوم بإرجاع الساعة الحالية لساعة الزائر كرقم من 0 إلى 23، لذا فإن المقارنة مع 12 تقسم اليوم إلى صباح ومساء دون أي تحليل إضافي.

رقم Javaيستخدم البرنامج النصي كلمتين رئيسيتين منفصلتين، else if، مع وجود مسافة بينهما. الكلمة المفردة elseif ينتمي إلى لغة PHP وبعض لغات القوالب، ويؤدي إلى ظهور خطأ في بناء الجملة في المتصفح.

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