الوحدة 3: اتّخاذ القرار · الموضوع 7 من 13
الموضوع 7

جملة الشرط if

حتى الآن كان البرنامج ينفّذ كل سطر من الأعلى إلى الأسفل. الآن يتّخذ قرارًا: إذا تحقّق شرط فافعل كذا.

if true ✓ false → else
بعد هذا الدرس ستستطيع أن:
  • كتابة جملة if بمفردها و if…else.
  • اختبار عدّة شروط بالترتيب باستخدام else if.
  • كتابة if متداخلة لفحص شرط بعد آخر.
  • تجنّب خطأَي = بدل == والفاصلة المنقوطة بعد الشرط.

١الفكرة

نضع شرطًا نتيجته true أو false، فيُنفَّذ الكود المرتبط به فقط عند تحقّقه.

الشرطgrade >= 60 «ناجح» else: «راسب» يكمل البرنامج true false

٢الصور الأربع لجملة if

١. if بمفردها: نفّذ أو تجاوز

Main.java
int age = 20; if (age >= 18){    System.out.println("مسموح لك بالدخول");}
Output – JavaApplication (run)×
run:
مسموح لك بالدخول
BUILD SUCCESSFUL (total time: 0 seconds)

لو كان العمر أقل من 18 لا يُطبع شيء.

٢. if … else: اختر بين مسارين

Main.java
int grade = 50; if (grade >= 60){    System.out.println("ناجح");}else{    System.out.println("راسب");}
Output – JavaApplication (run)×
run:
راسب
BUILD SUCCESSFUL (total time: 0 seconds)

٣. if … else if … else: عدّة شروط بالترتيب

يُنفَّذ أوّل شرط يتحقّق فقط، ثم يخرج. و else الأخيرة لبقية الحالات.

حرّك الدرجة وراقب المسار
int
snippet
int grade = 75; if (grade >= 90) {    System.out.println("ممتاز");}else if (grade >= 80) {    System.out.println("جيد جدًا");}else if (grade >= 70) {    System.out.println("جيد");}else {    System.out.println("راسب");}
الناتج
الشروط التي فُحصت

٤. if المتداخلة: شرط داخل شرط

جرّب الشرطين
int;
snippet
int age = 20;boolean hasTicket = true; if (age >= 18) {    if (hasTicket) {        System.out.println("تفضّل بالدخول");    }}
الناتج

٣أخطاء شائعة

✗ خطأ
snippet
if (x = 5)
✓ صواب
snippet
if (x == 5)

= إسناد، و == مقارنة. داخل الشرط نحتاج المقارنة.

✗ خطأ
snippet
if (age >= 18);{    System.out.println("مسموح");}
✓ صواب
snippet
if (age >= 18){    System.out.println("مسموح");}

الفاصلة المنقوطة بعد الشرط تُنهي جملة if فارغة، فتُنفَّذ الكتلة دائمًا مهما كان الشرط.

توقّع وتحقّق

أجب قبل أن تنظر إلى الشرح. التصحيح فوري، وإجاباتك تُحفظ.

ما الناتج؟

snippet
int x = 10;if (x > 15)    System.out.println("كبير");else    System.out.println("صغير");
10 > 15 خطأ، فيُنفَّذ else.

إذا كانت grade = 95 في سلسلة التقديرات أعلاه، كم رسالة تُطبع؟

أوّل شرط متحقّق فقط يُنفَّذ، ولو تحقّقت الشروط التالية أيضًا.

متى تُطبع «تفضّل بالدخول» في مثال if المتداخلة؟

يمكن كتابتها أيضًا بشرط واحد: age >= 18 && hasTicket.

أي سطر صحيح؟

الخلاصة

تحدٍّ برمجي: مُقدِّر الدرجات

متوسط

حوّل الدرجة إلى تقدير، ثم حدّد هل الدرجة زوجية أم فردية.

المطلوب:
  • 90 فأكثر ممتاز، 80 جيد جدًا، 70 جيد، 60 مقبول، وأقل من 60 راسب.
  • استخدم سلسلة if … else if … else.
  • استخدم % 2 لمعرفة الزوجي والفردي.

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

Grader.java
public class Grader{    public static void main(String[] args)    {        int grade = 67;         // 1) التقدير         // 2) زوجي أم فردي    }}
Output – المطلوب×
التقدير: مقبول
الدرجة فردية
💡 تلميح 1
رتّب الشروط من الأعلى إلى الأدنى: >= 90 ثم >= 80 …
💡 تلميح 2
الرقم زوجي إذا كان grade % 2 == 0.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

Grader.java
public class Grader{    public static void main(String[] args)    {        int grade = 67;         if (grade >= 90)            System.out.println("التقدير: ممتاز");        else if (grade >= 80)            System.out.println("التقدير: جيد جدًا");        else if (grade >= 70)            System.out.println("التقدير: جيد");        else if (grade >= 60)            System.out.println("التقدير: مقبول");        else            System.out.println("التقدير: راسب");         if (grade % 2 == 0)            System.out.println("الدرجة زوجية");        else            System.out.println("الدرجة فردية");    }}

أسئلة التقييم

ورقة العمل: جملة الشرط if. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) الشرط داخل if نتيجته دائمًا:

2) لاختيار بين مسارين نستخدم:

3) لاختبار عدّة شروط بالترتيب نستخدم:

4) يُوضع الشرط بين:

2السؤال الثاني: صح أم خطأ

1) يُوضع الكود المرتبط بـ if بين قوسين معقوفين { }.
الصواب: صح
2) في else if يُنفَّذ أوّل شرط يتحقّق فقط.
الصواب: صح
3) نضع ; مباشرة بعد شرط if.
الصواب: خطأ
4) else تُنفَّذ عند عدم تحقّق الشرط.
الصواب: صح
5) if تُكرّر الكود مثل الحلقة.
الصواب: خطأ

3السؤال الثالث: أكمل الفراغات

1) الصيغة: if ( ) { ... }

💡 ما يوضع بين القوسين ونتيجته true أو false.

الإجابة: الشرط

2) الجزء الذي يُنفَّذ عند فشل الشرط هو .

💡 كلمة من أربعة أحرف.

الإجابة: else

3) نستخدم لاختبار عدّة حالات مرتّبة.

💡 كلمتان: else ثم …

الإجابة: else if

4) نتيجة الشرط من نوع .

💡 النوع الذي قيمته true أو false.

الإجابة: boolean

5) خطأ شائع: استخدام = بدل في المقارنة.

💡 رمز المقارنة المكوّن من علامتين.

الإجابة: ==

4السؤال الرابع: التوصيل

طابِق كل عنصر في العمود (أ) بما يناسبه في العمود (ب):

  1. 1) if
  2. 2) if…else
  3. 3) else if
  4. 4) if المتداخلة
  5. 5) ==
  1. أ. مقارنة المساواة.
  2. ب. تنفيذ عند تحقّق شرط فقط.
  3. ج. اختيار بين مسارين.
  4. د. فحص شرط داخل شرط.
  5. هـ. عدّة حالات مرتّبة.
المفتاح: (1) ب (2) ج (3) هـ (4) د (5) أ

5السؤال الخامس: أسئلة عملية

1) تتبّع الناتج:

snippet
int g = 50;if (g >= 60) System.out.print("ناجح");else System.out.print("راسب");
الناتج الصحيح:
Output×
راسب

2) اكتب شرط if يطبع "بالغ" إذا كان age >= 18:

إجابة نموذجية:
snippet
if (age >= 18) {    System.out.println("بالغ");}

3) صحّح الخطأ في الشرط:

snippet
if (x = 5) { ... }
إجابة نموذجية:
snippet
if (x == 5) { ... }
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».