الشروط if و else في Java

📖 الدرس 4 من 16 ⏱ 8 دقيقة قراءة 🎬 14:00 دقائق ✓ مجاني

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

ما هي الشروط؟

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

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

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

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

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

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

1

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

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

Main.java
int age = 18;

if (age >= 18) {
    System.out.println("مسموح لك بالدخول");
} else {
    System.out.println("غير مسموح لك بالدخول");
}
🖥️

الناتج (age = 18):

مسموح لك بالدخول

🔍 شرح بنية if / else

if (شرط)

الكلمة المحجوزة + الشرط بين قوسين دائريين — إذا كان الشرط صحيحًا نُنفّذ ما بداخل الأقواس المعقوفة.

{ }

الأقواس المعقوفة تحدد "مجموعة الأوامر" التي تُنفّذ معًا إذا تحقق الشرط.

else

اختياري — يُنفَّذ فقط إذا كان الشرط خاطئًا.

2

المقارنات — كيف نكتب الشرط؟

الشروط عادةً تكون "مقارنة" بين قيمتين. هذه أشهر عمليات المقارنة في Java:

الرمز المعنى مثال النتيجة
== يساوي 5 == 5 true
!= لا يساوي 5 != 3 true
> أكبر من 10 > 5 true
< أصغر من 3 < 10 true
>= أكبر من أو يساوي 18 >= 18 true
<= أصغر من أو يساوي 5 <= 10 true
⚠️

تنبيه مهم جداً

❌ للتعيين فقط

age = 18

يعطي قيمة للمتغير

✅ للمقارنة

age == 18

يقارن قيمة المتغير

3

المنطق 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("تحتاج إلى درجات أكثر");
}
4

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 لا يتحقق من بقية الشروط — توقف عند أول شرط صحيح.
5

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

خطأ ١

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

❌ خطأ

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 في نفس الوقت!

6

من واقع عملي: عادتان تجنّبانك أخطاء الشروط

الشروط بسيطة في فكرتها، لكن من خبرتي في قراءة أكواد كثيرة، هناك عادتان صغيرتان تفرّقان بين كود نظيف وكود مليء بالأخطاء الخفيّة.

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

العادة الثانية: لا تُعمّق التداخل كثيرًا. إن وجدت شرطًا داخل شرط داخل شرط، فهذه إشارة لإعادة التفكير — غالبًا يمكن تبسيطه بدمج الشروط أو بالخروج المبكّر. ولاحقًا ستتعرّف على الصيغة المختصرة (ternary) المفيدة للحالات البسيطة، لكن لا تبالغ فيها حتى يبقى الكود مقروءًا.

📋 ملخص الدرس

if (شرط) { } ينفّذ الكود إذا كان الشرط صحيحاً

else { } ينفّذ إذا كان الشرط خاطئاً

== للمقارنة، و = للتعيين فقط

&& يعني (و)، و || يعني (أو)

⏭️ في الدرس القادم:

سنتعلم الحلقات (Loops) — كيف نكرّر تنفيذ الأوامر باستخدام for و while.

✍️ كتبه: أ. يوسف
معلّم حاسب آلي وأخصائي تقنية معلومات، حاصل على الماجستير في تقنية المعلومات، بخبرة تتجاوز 20 عامًا في تطوير البرمجيات وأمن المعلومات. تعرّف على خبرتي كاملة ←