الدرس 2 من 10
المتغيّرات والأنواع
- 11 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
الأنواع وفخّ القسمة الصحيحة
الشرح
في C++ يُعلن كل متغيّر نوعه مرّة واحدة ويبقى عليه: int lives = 3; عدد صحيح، وdouble speed = 4.5; عدد عشري، وchar rank = 'S'; حرف واحد بين علامتين مفردتين، وbool alive = true; صواب أو خطأ، وstd::string name = "ليان"; نصّ بين علامتين مزدوجتين من <string>. ومن هذا الدرس نكتب std:: صراحةً بدل using namespace std; كما يفعل أغلب الكود الاحترافي: يتّضح من أين جاء كل اسم، ولا يتصادم اسم من المكتبة مع اسم من أسمائك.
والنوع يحدّد الحساب نفسه: القسمة بين عددين صحيحين تبقى صحيحة وتُسقط الكسر بصمت، فـ 7 / 2 تساوي 3، و45 / 60 * 100 تساوي صفرًا لا 75، لأن 45 / 60 صارت صفرًا قبل أن يبدأ الضرب. والعلاج أن تحوّل أحد الطرفين إلى عشري قبل القسمة: static_cast<double>(total) / count، أو أن تضرب قبل أن تقسم. والفخّ أن تحوّل بعد فوات الأوان: static_cast<double>(7 / 2) تعطي 3.0، لأن الكسر ضاع قبل التحويل.
وstd::cout يطبع bool رقمًا: 1 للصواب و0 للخطأ. ضع std::boolalpha قبله في السلسلة فيطبع true أو false. و"\n" في آخر النصّ تنزل سطرًا كما تفعل std::endl.
المطلوب
أصلح double average(int total, int count) لتُرجع المتوسّط عشريًّا: average(45, 6) تساوي 7.5 لا 7. وأصلح int hpPercent(int hp, int maxHp) لتُرجع نسبة الصحة عددًا صحيحًا من 100: hpPercent(45, 60) تساوي 75 لا صفرًا. واكتب bool isLowHp(int hp, int maxHp) تُرجع true إن كانت النسبة أقلّ من 25. ثم أضف إلى main سطرًا ثالثًا: خطر: true من isLowHp(10, 60).
معايير التصحيح
6 معايير- average(45, 6) تساوي 7.5 لا 7
- average مع قيم أخرى ومع السالب
- hpPercent(45, 60) تساوي 75 لا صفرًا
- hpPercent مع الصحة الكاملة والصفر والكسر
- isLowHp: أقلّ من 25% خطر، و25% فأكثر لا
- طُبعت الأسطر الثلاثة: 7.5 و 75% و true