النوعان الأكثر شيوعًا من الأعداد في Ruby هما:
-6 و0 و1 و25 و976 و500000.-2.4 و0.1 و3.14 و16.984025 و1024.0.وهي مُنفَّذة عبر الصنفين Integer وFloat.
تحتوي هذه الأصناف على طُرق تُحوِّل القيم من نوع إلى آخر. أعداد Integer دقيقة حتى وحدة كاملة، أما دقة Float فهي كسرية بالنسبة إلى عدد صحيح:
Integer#to_f: التحويل إلى عدد عشري جديدFloat#ceil: التقريب لأعلى إلى أقرب عدد صحيحFloat#floor: التقريب لأسفل إلى أقرب عدد صحيحFloat#round: التقريب إلى أقرب عدد صحيحFloat#to_i: الاقتطاع إلى أقرب عدد صحيحتضم Ruby ما يُعرف بتعبيرات التحكم في سير البرنامج، وهي تُستخدم للتحكم في كيفية تشغيل البرنامج، وتأخذ قيمة صحيحة أو خاطئة. وهناك عوامل يمكن استخدامها لإنشاء قيم صحيحة أو خاطئة، وهذه تُعرف بـعوامل المقارنة.
وهناك تعبيرا تحكم رئيسيان يُستخدمان لتحديد أي كود سيعمل وأيّه لن يعمل، أي أي فرع من الفروع المعطاة سيعمل.
وهما: تعبير if وتعبير unless.
تُستخدم عوامل المقارنة لمقارنة القيم وإرجاع قيمة true أو false.
تتطلب العوامل التالية قيمتين من النوع نفسه لمقارنتهما.
وإذا لم تكونا من النوع نفسه فسيُطلق المترجم خطأً.
وفيما يلي قائمة بالعوامل ومثال على الحالة التي تُرجع فيها قيمة true:
| الطريقة | الوصف | المثال |
|---|---|---|
| < | أصغر من | 4 < 5 |
| <= | أصغر من أو يساوي | 4 <= 4 |
| > | أكبر من | 3 > 1 |
| >= | أكبر من أو يساوي | 2 >= 2 |
يمكن استخدام عاملي التساوي وعدم التساوي لمقارنة أي نوع من القيم، خلافًا للعوامل المذكورة سابقًا.
يُستخدم العامل == للتحقق مما إذا كانت قيمتان متساويتين، ويشمل ذلك التحقق من نوع القيمة.
ويعمل العامل != بالكيفية ذاتها، لكنه سيُرجع true إذا لم تكن القيمتان متساويتين وfalse إذا كانتا متساويتين.
وفيما يلي قائمة بعاملي التساوي وعدم التساوي ومثال على الحالة التي يُرجعان فيها قيمة true:
| الطريقة | الوصف | المثال |
|---|---|---|
| == | يساوي | 4 == 4 |
| != | لا يساوي | 5 != 4 |
if
تُستخدم جملة if للتحقق مما إذا كان شرط معطى "صحيحًا" أو "خاطئًا".
إذا كان الشرط صحيحًا فسيعمل الكود الموجود داخل جملة if.
وتنتهي جملة if بالكلمة المفتاحية end.
value = 1
if value == 1
"1 is equal to 1"
end
# => "1 is equal to 1"
if value > 2
"1 is greater than 2"
end
# => nil
unless
تعمل جملة unless بشكل مشابه جدًا لجملة if، لكنها ستشغّل الكود داخل جملة unless إذا كان الشرط خاطئًا.
value = 1
unless value == 1
"1 is not equal to 1"
end
# => nil
unless value > 2
"1 is not greater than 2"
end
# => "1 is not greater than 2"
else
يمكن استخدام جملة else بالاقتران مع جملة if.
وتُنفَّذ جملة else إذا لم يُنفَّذ فرع if.
value = 1
if value == 1
"1 is equal to 1"
else
"1 is not equal to 1"
end
# => "1 is equal to 1"
يمكن استخدام جملة elsif بالاقتران مع جملة if.
وتُنفَّذ جملة elsif إذا لم يُنفَّذ فرع if وكان شرط جملة elsif صحيحًا.
ويمكن ربط جمل elsif معًا، وسيُنفَّذ أول شرط صحيح.
ويمكن أيضًا وجود جملة else في نهاية جملة if، تُنفَّذ إذا لم تكن أيٌّ من الجمل السابقة صحيحة.
value = 1
if value != 1
"1 is not equal to 1"
elsif value > 2
"1 is greater than 2"
else
"1 is not equal to 1 and 1 is not greater than 2"
end
# => "1 is not equal to 1 and 1 is not greater than 2"
في هذا التمرين ستكتب كودًا لتحليل الإنتاج في خط تجميع في مصنع سيارات.
يمكن أن تتراوح سرعة خط التجميع من 0 (متوقف) إلى 10 (الحد الأقصى).
عند أبطأ سرعة له (1)، يُنتَج 221 سيارة في الساعة.
يزيد الإنتاج خطيًا مع السرعة.
لذلك عندما تكون السرعة مضبوطة على 4، ينبغي أن ينتج 4 * 221 = 884 سيارة في الساعة.
غير أن السرعات الأعلى تزيد احتمالية إنتاج سيارات معيبة، يجب التخلص منها بعد ذلك.
يوضح الجدول التالي كيف تؤثر السرعة في نسبة النجاح:
1 إلى 4: نسبة نجاح 100%.5 إلى 8: نسبة نجاح 90%.9: نسبة نجاح 80%.10: نسبة نجاح 77%.لديك مهمتان.
نفّذ الطريقة AssemblyLine#production_rate_per_hour لحساب معدل إنتاج خط التجميع في الساعة، مع مراعاة نسبة النجاح.
لاحظ أن القيمة المُرجَعة نسخة من Float.
AssemblyLine.new(6).production_rate_per_hour
#=> 1193.4
نفّذ الطريقة AssemblyLine#working_items_per_minute لحساب عدد السيارات المكتملة العاملة التي تُنتَج في الدقيقة.
لاحظ أن القيمة المُرجَعة نسخة من Integer.
AssemblyLine.new(6).working_items_per_minute
#=> 19
سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.