الجمل الشرطية في Javaالنص: إذا، وإلا، وإلا إذا
⚡ ملخص ذكي
العبارات الشرطية في Javaيحدد البرنامج النصي أي كتلة من التعليمات البرمجية يتم تشغيلها عن طريق اختبار شرط معين، وتغطي صيغ if و if…else و if…else if…else تقريبًا كل قرار تفرع قد يحتاجه البرنامج النصي المبتدئ.
Javaعبارات شرطية في البرنامج النصي
هناك ثلاثة أنواع رئيسية من البيانات الشرطية في Javaسيناريو.
- إذا البيان: عبارة "if" تنفذ التعليمات البرمجية بناءً على الشرط.
- if… else البيان: عبارة if...else تتكون من كتلتين من التعليمات البرمجية؛ عندما يكون الشرط صحيحًا، فإنه ينفذ المجموعة الأولى من التعليمات البرمجية، وعندما يكون الشرط خاطئًا، فإنه ينفذ المجموعة الثانية من التعليمات البرمجية.
- إذا…إلا إذا…بيان آخر: عندما يلزم اختبار شروط متعددة وتنفيذ كتل مختلفة من التعليمات البرمجية بناءً على الشرط الصحيح، يتم استخدام عبارة if…else if…else.
سيتم شرح كل شكل من الأشكال الثلاثة أدناه مع توضيح صيغته ومثال عملي قابل للتنفيذ. تنطبق القواعد نفسها سواء كان البرنامج النصي موجودًا في مكان معين داخل الصفحة أو في ملف خارجيوما إذا كان الشرط مكتوبًا في المستوى الأعلى أو داخل وظيفة.
كيفية استخدام العبارات الشرطية
تُستخدم العبارات الشرطية لتحديد تدفق التنفيذ بناءً على شروط مختلفة. إذا كان الشرط صحيحًا، فيمكنك تنفيذ إجراء واحد، وإذا كان الشرط خاطئًا، فيمكنك تنفيذ إجراء آخر.
يوضح الرسم البياني أدناه هذه الفكرة على أنها مفترق طرق: يتم تقييم شرط واحد مرة واحدة، وينتقل التحكم إما عبر الفرع الصحيح أو الفرع الخاطئ، وليس كليهما.
إذا البيان
بناء الجملة:
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()orNumber()يحولهم. - الفروع التي لا يمكن الوصول إليها: في
else ifفي سلسلة الاختبارات، ضع الشرط الأضيق أولاً، وإلا فإن الاختبار الأوسع نطاقاً في وقت سابق سيفوز دائماً.

