المسارات
/
C#
C#
/
التمارين
/
لازانيا لوسيان الشهيّة
لازانيا لوسيان الشهيّة

لازانيا لوسيان الشهيّة

تمرين تعلّمي

مقدمة

الأساسيات

C# هي لغة ذات أنواع ثابتة، مما يعني أن لكل شيء نوعًا في وقت الترجمة. يُشار إلى إسناد قيمة إلى اسم بتعريف متغير. يمكن تعريف المتغير إما بتحديد نوعه صراحةً، وإما بترك مترجم C# يستنتج نوعه بناءً على القيمة المُسندة (وتُعرف هذه العملية بـ استنتاج النوع). لذلك، فإن التعريفين التاليين لمتغير متكافئان:

int explicitVar = 10; // Explicitly typed
var implicitVar = 10; // Implicitly typed

يتم تحديث قيمة المتغير عبر العامل =. بمجرد تعريفه، لا يمكن أن يتغير نوع المتغير أبدًا.

var count = 1; // Assign initial value
count = 2;     // Update to new value

// Compiler error when assigning different type
// count = false;

C# هي لغة كائنية التوجه وتتطلب أن تُعرَّف جميع الدوال داخل صنف. تُستخدم الكلمة المفتاحية class لتعريف صنف. تُنشأ الكائنات (أو المثيلات) باستخدام الكلمة المفتاحية new.

class Calculator
{
    // ...
}

var calculator = new Calculator();

يُشار إلى الدالة الموجودة داخل صنف باسم طريقة. يمكن أن يكون لكل طريقة صفر أو أكثر من المعاملات. يجب تحديد نوع جميع المعاملات صراحةً، فلا يوجد استنتاج للنوع بالنسبة للمعاملات. وبالمثل، يجب أيضًا تحديد نوع الإرجاع صراحةً. تُرجع القيم من الطرق باستخدام الكلمة المفتاحية return. للسماح باستدعاء طريقة من كود في ملفات أخرى، يجب إضافة معدّل الوصول public.

class Calculator
{
    public int Add(int x, int y)
    {
        return x + y;
    }
}

تُستدعى الطرق باستخدام صيغة النقطة (.) على مثيل، مع تحديد اسم الطريقة المطلوب استدعاؤها وتمرير الوسائط لكل معامل من معاملات الطريقة. يمكن للوسائط اختياريًا تحديد اسم المعامل المقابل.

var calculator = new Calculator();
var sum_v1 = calculator.Add(1, 2);
var sum_v2 = calculator.Add(x: 1, y: 2);

يُعرَّف النطاق في C# بين المحرفين { و}.

تدعم C# نوعين من التعليقات. تسبق التعليقات أحادية السطر بـ //، وتُدرج التعليقات متعددة الأسطر بين /* و*/.

التعليمات

صديقة لوسيان في طريقها إلى المنزل، ولم يُعدّ عشاء الذكرى السنوية لهما بعد!

في هذا التمرين، ستكتب بعض الكود لمساعدة لوسيان على طهي لازانيا شهية من كتاب الطبخ المفضّل لديه.

لديك أربع مهام، كلها تتعلق بالوقت المستغرق في طهي اللازانيا.

1. حدّد الزمن المتوقّع في الفرن بالدقائق

عرّف الطريقة Lasagna.ExpectedMinutesInOven() التي لا تأخذ أي معاملات وتُرجع عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الطبخ، الزمن المتوقّع في الفرن بالدقائق هو 40:

var lasagna = new Lasagna();
lasagna.ExpectedMinutesInOven();
// => 40

2. احسب الزمن المتبقّي في الفرن بالدقائق

عرّف الطريقة Lasagna.RemainingMinutesInOven() التي تأخذ عدد الدقائق الفعلية التي قضتها اللازانيا في الفرن كمعامل، وتُرجع عدد الدقائق التي ما زال على اللازانيا أن تبقاها في الفرن، استنادًا إلى الزمن المتوقّع في الفرن بالدقائق من المهمة السابقة.

var lasagna = new Lasagna();
lasagna.RemainingMinutesInOven(30);
// => 10

3. احسب زمن التحضير بالدقائق

عرّف الطريقة Lasagna.PreparationTimeInMinutes() التي تأخذ عدد الطبقات التي أضفتها إلى اللازانيا كمعامل، وتُرجع عدد الدقائق التي استغرقتها في تحضير اللازانيا، بافتراض أن تحضير كل طبقة يستغرق منك دقيقتين.

var lasagna = new Lasagna();
lasagna.PreparationTimeInMinutes(2);
// => 4

4. احسب الزمن المنقضي بالدقائق

عرّف الطريقة Lasagna.ElapsedTimeInMinutes() التي تأخذ معاملين: المعامل الأول هو عدد الطبقات التي أضفتها إلى اللازانيا، والمعامل الثاني هو عدد الدقائق التي قضتها اللازانيا في الفرن. ينبغي أن تُرجع الدالة عدد الدقائق التي عملتها في طهي اللازانيا، وهو مجموع زمن التحضير بالدقائق، والوقت بالدقائق الذي قضته اللازانيا في الفرن حتى هذه اللحظة.

var lasagna = new Lasagna();
lasagna.ElapsedTimeInMinutes(3, 20);
// => 26
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
C# Exercism

مستعد لبدء لازانيا لوسيان الشهيّة؟

سجّل في Exercism لتتعلّم وتتقن C# عبر 62 مفهومًا178 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.