الدرس 3 من 10

الشروط

هدف الدرس

if و else if و switch

01

الشرح

if تنفّذ كتلتها إن صحّ شرطها، وelse if تعرض شرطًا آخر إن لم يصحّ ما قبله، وelse لما بقي. الشرط بين قوسين والكتلة بين معقوفين، والفروع تُفحص بالترتيب فيُنفَّذ أوّل فرع صحيح وحده؛ لذا ابدأ بالحالة الشاذّة ثم انزل من الحدّ الأعلى. وتجمع الشروط بـ && (و) و|| (أو) و! (ليس): if (hp < 0 || hp > maxHp).

وفخّان تقبلهما C++ بلا اعتراض. الأول = مكان ==: if (hp = 0) لا تقارن بل تُسند، فتصير الصحة صفرًا ويصير الشرط خاطئًا دائمًا. والثاني السلسلة الرياضية: if (50 <= score <= 74) تحسب 50 <= score أوّلًا فتصير 0 أو 1، وكلاهما أصغر من 74، فيصحّ الشرط دائمًا. اكتبها شرطين: score >= 50 && score <= 74.

وswitch تقارن قيمة واحدة — عددًا صحيحًا أو حرفًا — بقائمة ثوابت: لكل قيمة case، وdefault لما لم يطابق شيئًا. والتنفيذ ينطلق من الـ case المطابق ويمضي إلى ما تحته حتى يلقى break أو return، فإن نسيتهما نُفّذت الحالة التالية أيضًا. وهذا نفسه ما يتيح تكديس حالتين على كتلة واحدة: case 'w': case 'W':. ولا تعمل switch مع std::string.

02

المطلوب

أكمل std::string grade(int score) بسلسلة if: "S" من 90 إلى 100، و"A" من 75، و"B" من 50، و"C" لما دون ذلك حتى الصفر، و"غير صالح" لما خرج عن 0–100. وأكمل std::string direction(char key) بـ switch لمفاتيح الحركة: w «أعلى»، وs «أسفل»، وa «يسار»، وd «يمين»، والحرف الكبير كالصغير، وأي مفتاح آخر «ثابت».

معايير التصحيح

6 معايير
  1. grade: من 90 إلى 100 رتبة S
  2. grade: الحدود بين الرتب
  3. grade: ما خارج 0–100 «غير صالح»
  4. direction: w و s و a و d
  5. direction: الحرف الكبير كالصغير
  6. direction: أي مفتاح آخر «ثابت»
main.cpp
المخرجاتC++17 · GCC 9 · Judge0

يُترجَم الكود ويعمل على السيرفر…

–/6

يُترجَم الكود ويعمل على السيرفر…

6 معايير في بطاقة «المطلوب».