الشروط if و else
كيف يتخذ البرنامج قرارًا؟ ما معنى if و else؟ وكيف نكتب المقارنات والمنطق؟ مع أمثلة عملية كثيرة.
ما هي الشروط؟
تخيّل أنك تقول لشخص: "إذا كانت الساعة بعد العصر، اذهب للمشي، وإلا ابقَ في البيت". هذا بالضبط ما تفعله الشروط في البرمجة.
البرنامج في الأصل ينفّذ الأوامر من الأعلى إلى الأسفل سطرًا بعد سطر — لكن أحيانًا نحتاج أن نجعله يختار بين طريقين حسب حالة معيّنة. هنا نستخدم if و else.
إذا كان الشرط صحيحًا
نفّذ الكود داخل if
إذا كان الشرط خاطئًا
نفّذ الكود داخل else (إن وُجد)
المثال الأول — قرار بسيط
سنخزّن عمر شخص في متغير اسمه age ونقرر: هل عمره 18 أو أكثر؟
int age = 18; if (age >= 18) { System.out.println("مسموح لك بالدخول"); } else { System.out.println("غير مسموح لك بالدخول"); }
الناتج (age = 18):
مسموح لك بالدخول
🔍 شرح بنية if / else
if (شرط)
الكلمة المحجوزة + الشرط بين قوسين دائريين — إذا كان الشرط صحيحًا نُنفّذ ما بداخل الأقواس المعقوفة.
{ }
الأقواس المعقوفة تحدد "مجموعة الأوامر" التي تُنفّذ معًا إذا تحقق الشرط.
else
اختياري — يُنفَّذ فقط إذا كان الشرط خاطئًا.
المقارنات — كيف نكتب الشرط؟
الشروط عادةً تكون "مقارنة" بين قيمتين. هذه أشهر عمليات المقارنة في Java:
| الرمز | المعنى | مثال | النتيجة |
|---|---|---|---|
== |
يساوي | 5 == 5 |
true |
!= |
لا يساوي | 5 != 3 |
true |
> |
أكبر من | 10 > 5 |
true |
< |
أصغر من | 3 < 10 |
true |
>= |
أكبر من أو يساوي | 18 >= 18 |
true |
<= |
أصغر من أو يساوي | 5 <= 10 |
true |
تنبيه مهم جداً
❌ للتعيين فقط
age = 18
يعطي قيمة للمتغير
✅ للمقارنة
age == 18
يقارن قيمة المتغير
المنطق AND و OR — أكثر من شرط
أحيانًا لا يكفي شرط واحد — قد تريد مثلاً: "إذا كان العمر 18 أو أكثر وكان لديه بطاقة". هنا نستخدم العمليات المنطقية:
&&
AND (و)
يجب أن يتحقق الشرطان معاً — إذا كان أحدهما خاطئاً فالنتيجة خاطئة.
true && true = true
true && false = false
false && true = false
||
OR (أو)
يكفي أن يتحقق أحد الشرطين — تكون خاطئة فقط إذا كان كلاهما خاطئاً.
true || false = true
false || true = true
false || false = false
مثال باستخدام AND &&:
int age = 20; boolean hasId = true; if (age >= 18 && hasId == true) { System.out.println("مرحبًا، يمكنك الدخول"); } else { System.out.println("لا يمكنك الدخول"); }
مثال باستخدام OR ||:
int score = 50; if (score >= 60 || score == 59) { System.out.println("قريب من النجاح"); } else { System.out.println("تحتاج إلى درجات أكثر"); }
else if — أكثر من حالة
إذا كان لديك أكثر من احتمالين، استخدم else if لإضافة حالات وسطية:
int grade = 85; if (grade >= 90) { System.out.println("ممتاز"); } else if (grade >= 80) { System.out.println("جيد جدًا"); } else if (grade >= 70) { System.out.println("جيد"); } else { System.out.println("بحاجة إلى تحسين"); }
الناتج (grade = 85):
جيد جدًا
🔄 كيف يعمل البرنامج؟
85 >= 90؟ — لا، تجاوز.
85 >= 80؟ — نعم! ✅ يطبع "جيد جداً" ويتوقف.
أخطاء شائعة يجب الانتباه لها ⚠️
استخدام = بدل == داخل الشرط
❌ خطأ
if (age = 18)
✅ صحيح
if (age == 18)
نسيان الأقواس الدائرية حول الشرط
❌ خطأ
if age >= 18
✅ صحيح
if (age >= 18)
نسيان الأقواس المعقوفة عند أكثر من سطر
❌ خطأ
if (x > 0)
x = x + 1;
x = x * 2;
السطر الثاني لن يكون داخل if
✅ صحيح
if (x > 0) {
x = x + 1;
x = x * 2;
}
شرط متناقض منطقياً
❌ مستحيل التحقق
if (age > 18 && age < 10)
لا يمكن أن يكون العمر أكبر من 18 وأصغر من 10 في نفس الوقت!
📋 ملخص الدرس
if (شرط) { } ينفّذ الكود إذا كان الشرط صحيحاً
else { } ينفّذ إذا كان الشرط خاطئاً
== للمقارنة، و = للتعيين فقط
&& يعني (و)، و || يعني (أو)
⏭️ في الدرس القادم:
سنتعلم الحلقات (Loops) — كيف نكرّر تنفيذ الأوامر باستخدام for و while.