الدرس 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 تُرجع S من 90 إلى 100
  2. الدالة grade صحيحة عند الحدود بين الرتب
  3. الدالة grade تُرجع «غير صالح» لما خارج المدى من 0 إلى 100
  4. الدالة direction تعرف المفاتيح w وs وa وd
  5. الدالة direction تعامل الحرف الكبير مثل الصغير
  6. الدالة direction تُرجع «ثابت» لأي مفتاح آخر
03

تلميحات

0/3
دروس المسارأتممت 0 من 10

تُكتب بلغة C++ محرّكات الألعاب والمتصفحات وأنظمة التشغيل، لأنها سريعة وتمنحك تحكّمًا كاملًا.

مستواه مبتدئ، وفيه 10 دروس مجموع مدّتها ساعتان.

main.cpp
المخرجاتC++17 (GCC 9, Judge0)

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

–/6

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

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

دروس المسارأتممت 0 من 10

تُكتب بلغة C++ محرّكات الألعاب والمتصفحات وأنظمة التشغيل، لأنها سريعة وتمنحك تحكّمًا كاملًا.

مستواه مبتدئ، وفيه 10 دروس مجموع مدّتها ساعتان.