الشروط if و else

14:00 دقائق مجاني

كيف يتخذ البرنامج قرارًا؟ ما معنى if و else؟ وكيف نكتب المقارنات والمنطق؟ مع أمثلة عملية كثيرة.

ما هي الشروط؟

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

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

إذا كان الشرط صحيحًا

نفّذ الكود داخل if

إذا كان الشرط خاطئًا

نفّذ الكود داخل else (إن وُجد)

المثال الأول — قرار بسيط

سنخزّن عمر شخص في متغير اسمه age ونقرر: هل عمره 18 أو أكثر؟

Main.java
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 &&:

AND_Example.java
int     age   = 20;
boolean hasId = true;

if (age >= 18 && hasId == true) {
    System.out.println("مرحبًا، يمكنك الدخول");
} else {
    System.out.println("لا يمكنك الدخول");
}

مثال باستخدام OR ||:

OR_Example.java
int score = 50;

if (score >= 60 || score == 59) {
    System.out.println("قريب من النجاح");
} else {
    System.out.println("تحتاج إلى درجات أكثر");
}

else if — أكثر من حالة

إذا كان لديك أكثر من احتمالين، استخدم else if لإضافة حالات وسطية:

Grades.java
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):

جيد جدًا

🔄 كيف يعمل البرنامج؟

1 يتحقق من الشرط الأول: هل 85 >= 90؟ — لا، تجاوز.
2 يتحقق من الثاني: هل 85 >= 80؟ — نعم! ✅ يطبع "جيد جداً" ويتوقف.
3 لا يتحقق من بقية الشروط — توقف عند أول شرط صحيح.

أخطاء شائعة يجب الانتباه لها ⚠️

خطأ ١

استخدام = بدل == داخل الشرط

❌ خطأ

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.