📘 شرح الدرس الوحدة 3: القرار والتكرار وتشخيص الأخطاء · الدرس 6 من 17
الدرس 6
📋 في الخطة: الوحدة 5. العبارات الشرطية وحلقات التكرار

العبارات الشرطية

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

if true ✓ false → else
بعد هذا الدرس ستستطيع أن:
  • تكتب جملة الشرط if و if…else.
  • تبني سلسلة if…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.

تأمل الكود التالي،

snippet
int grade = 95;if (grade >= 90)    System.out.println("ممتاز");else if (grade >= 80)    System.out.println("جيد جدًا");else if (grade >= 70)    System.out.println("جيد");else    System.out.println("مقبول");

كم رسالة تُطبع عند تنفيذه؟

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

تأمل الكود التالي،

snippet
if (age >= 18){    if (hasTicket)        System.out.println("تفضّل بالدخول");}

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

يمكن كتابتها أيضًا بشرط واحد: 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("الدرجة فردية");    }}

🧪 تدريبات المذكرة العملية

التدريب العملي 11: زوجي أم فرديمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 12: ناجح أم راسبمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 13: التقدير من المجموع النهائيمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 14: الرقم الأكبر من ثلاثةمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 15: القسمة بشرط ألا يكون المقسوم عليه صفرًامن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 16: مقارنة العدد بالعدد 10من مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 17: عمولة المبيعاتمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 18: موجب أم سالب أم صفرمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 19: حساب قيمة y من المعادلةمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 20: رموز الكلياتمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 21: هل العدد ضمن المجال من 1 إلى 20؟من مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 22: آلة حاسبة بسيطةمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 23: القسمة على 3 أو 4من مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←التدريب العملي 24: خصم المشترياتمن مذكرة العملي: المسألة، والخوارزمية، والمخرجات، والحل.افتح التدريب ←انتقل إلى تقييم الدرسأسئلة الاختيار، وصح وخطأ، وأكمل الفراغات، والأسئلة العملية.ابدأ التقييم ←