المسارات
/
Java
Java
/
التمارين
/
سيارات، تجمّعوا!
سيارات، تجمّعوا!

سيارات، تجمّعوا!

تمرين تعلّمي

مقدمة

الأعداد

يوجد في Java نوعان مختلفان من الأعداد:

  • الأعداد الصحيحة: أعداد لا تحتوي على أي أرقام بعد الفاصلة العشرية (أعداد كاملة). من أمثلتها -6 و0 و1 و25 و976 و-500000.
  • الأعداد العشرية: أعداد تحتوي على صفر أو أكثر من الأرقام بعد الفاصلة العشرية. من أمثلتها -20.4 و0.1 و2.72 و16.984025 و1024.0.

أكثر نوعين عدديين شيوعًا في Java هما int وdouble. النوع int عدد صحيح بسعة 32 بت، والنوع double عدد عشري بسعة 64 بت.

تُجرى العمليات الحسابية باستخدام عوامل الحساب المعيارية. يمكن مقارنة الأعداد باستخدام عوامل المقارنة العددية المعيارية (مثل 5 > 4 و4 <= 5) وعاملي التساوي (==) وعدم التساوي (!=).

يوجد في Java نوعان من التحويلات العددية:

  1. التحويلات الضمنية: لن تُفقد أي بيانات ولن تُطلب أي صياغة إضافية.
  2. التحويلات الصريحة: قد تُفقد البيانات وتُطلب صياغة إضافية على شكل تحويل قسري.

ولأن النوع int أقل دقة من النوع double، فإن التحويل من int إلى double آمن، لذلك فهو تحويل ضمني. أما التحويل من double إلى int فقد يعني فقدان بيانات، لذا فهو يتطلب تحويلًا صريحًا.

عبارات if-else

عبارة if-then

أبسط عبارة للتحكم في التدفق في Java هي عبارة if-then. تُستخدم هذه العبارة لتنفيذ مقطع من الكود فقط عندما يكون شرط معيّن هو true. تُعرَّف عبارة if-then باستخدام جملة if:

class Car {
    void drive() {
        // the "if" clause: the car needs to have fuel left to drive
        if (fuel > 0) {
            // the "then" clause: the car drives, consuming fuel
            fuel--;
        }
    }
}

في المثال أعلاه، إذا نفد وقود السيارة، فلن يؤدي استدعاء الطريقة Car.drive إلى أي شيء.

عبارة if-then-else

توفّر عبارة if-then-else مسارًا بديلًا للتنفيذ عندما تكون نتيجة الشرط في جملة if هي false. يأتي هذا المسار البديل للتنفيذ بعد جملة if، ويُعرَّف باستخدام جملة else:

class Car {
    void drive() {
        if (fuel > 0) {
            fuel--;
        } else {
            stop();
        }
    }
}

في المثال أعلاه، إذا نفد وقود السيارة، فسيؤدي استدعاء الطريقة Car.drive إلى استدعاء طريقة أخرى لإيقاف السيارة.

تدعم عبارة if-then-else أيضًا تعدد الشروط باستخدام جملة else if:

class Car {
    void drive() {
        if (fuel > 5) {
            fuel--;
        } else if (fuel > 0) {
            turnOnFuelLight();
            fuel--;
        } else {
            stop();
        }
    }
}

في المثال أعلاه، قيادة السيارة عندما يكون الوقود أقل من 5 أو يساويها ستُحرّك السيارة، لكنها ستُضيء مصباح الوقود. وعندما يصل الوقود إلى 0، تتوقف السيارة عن السير.

التعليمات

في هذا التمرين ستكتب كودًا لتحليل الإنتاج في خط تجميع في مصنع سيارات. يمكن أن تتراوح سرعة خط التجميع بين 0 (متوقف) و10 (الحد الأقصى).

عند أدنى سرعة له (1)، يُنتَج 221 سيارة كل ساعة. ويزداد الإنتاج خطيًا مع السرعة. لذا عندما تكون السرعة 4، ينبغي أن يُنتِج 4 * 221 = 884 سيارة في الساعة. غير أن السرعات الأعلى تزيد احتمال إنتاج سيارات معيبة، لا بد من التخلص منها لاحقًا. يوضح الجدول التالي كيف تؤثر السرعة في معدل النجاح:

  • من 1 إلى 4: معدل نجاح 100%.
  • من 5 إلى 8: معدل نجاح 90%.
  • 9: معدل نجاح 80%.
  • 10: معدل نجاح 77%.

لديك مهمتان.

1. احسب معدل الإنتاج في الساعة

نفّذ الطريقة CarsAssemble.productionRatePerHour() لحساب معدل إنتاج خط التجميع في الساعة، مع مراعاة سرعة خط التجميع الحالية ومعدل النجاح:

CarsAssemble.productionRatePerHour(6)
// => 1193.4

لاحظ أن القيمة المُرجَعة من النوع double.

2. احسب عدد السيارات الصالحة المنتَجة في الدقيقة

نفّذ الطريقة CarsAssemble.workingItemsPerMinute() لحساب عدد السيارات الصالحة المنتَجة في الدقيقة:

CarsAssemble.workingItemsPerMinute(6)
// => 19

لاحظ أن القيمة المُرجَعة من النوع int.

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Java Exercism

مستعد لبدء سيارات، تجمّعوا!؟

سجّل في Exercism لتتعلّم وتتقن Java عبر 26 مفهومًا158 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.