الدرس 3 من 10

الجمل الشرطية

هدف الدرس

التفرّع بـ if وswitch والعامل الثلاثي

01

الشرح

تنفّذ if الكود التابع لها إذا كان شرطها صحيحًا، وتضيف else if شرطًا آخر، وتأخذ else كل ما بقي. وتفحص Java الفروع بالترتيب وتنفّذ أول فرع صحيح فقط، ولذلك ابدأ بالحدّ الأعلى، فلو بدأت بـ score >= 60 لحصل صاحب الدرجة 95 على D. وتجمع الشروط بـ && (و) و|| (أو).

أما switch فتقارن قيمة واحدة بقيم ثابتة مثل case 'w':، ويجب أن تختم كل فرع بـ break، وإلا انتقل التنفيذ إلى الفرع التالي (fall-through) ونفّذه أيضًا. وهذا الانتقال سبب معروف للأخطاء، لكنه مفيد حين تريد أن تشترك عدّة قيم في فرع واحد، مثل case 'w': case 'W':، وتأخذ default كل قيمة لم تطابق شيئًا.

وإذا أردت أن تختار بين قيمتين في سطر واحد فاستعمل العامل الثلاثي (ternary operator) cond ? a : b، مثل int lives = hardMode ? 1 : 3;.

02

المطلوب

اكتب grade(score) بسلسلة من if بحيث تُرجع A من 90، وB من 80، وC من 70، وD من 60، وF لما دون ذلك، وتُرجع "?" إذا كانت الدرجة خارج المدى من 0 إلى 100. ثم اكتب move(key) لمفاتيح WASD باستعمال switch، فيُرجع w «أعلى»، وs «أسفل»، وa «يسار»، وd «يمين»، سواء كان الحرف صغيرًا أو كبيرًا، وأي مفتاح آخر يُرجع «ثابت». وأخيرًا اكتب damage(base, critical) بالعامل الثلاثي لتُرجع ضعف base في الضربة الحرجة، وbase نفسه في غيرها.

الفحوص

6 فحوص
  1. الدالة grade تُرجع A من 90 إلى 100
  2. الدالة grade تفحص الحدود بالترتيب الصحيح
  3. الدالة grade تُرجع F تحت 60، و"?" خارج المدى
  4. الدالة move تعمل بالحرف الصغير والكبير
  5. الدالة move تُرجع «ثابت» لأي مفتاح آخر
  6. الدالة damage تضاعف الضرر في الضربة الحرجة
03

تلميحات

0/3
Main.java
المخرجاتJava 13 (Judge0)

يُترجَم كودك الآن ويُشغَّل على الخادم.

–/6

يُترجَم كودك الآن ويُشغَّل على الخادم.

تجد 6 فحوص في بطاقة «المطلوب».