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

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

تمرين تعلّمي

مقدمة

الأساسيات 1

الثوابت والدوال

تُعرَّف القيمة الثابتة بـ name = expression، وفي Elm يكون كل شيء تعبيرًا ما عدا التعريفات.

five = 5

six = 3 + 3

تُعرَّف الدوال بـ name parameters... = expression، وتُفصل المعاملات بمسافة فقط.

add number1 number2 = number1 + number2

استدعاء دالة هو أيضًا تعبير، ويتم بتحديد اسم الدالة وتمرير الوسائط لكل معامل من معاملاتها، مفصولة بمسافة، تمامًا كما في تعريف الدالة.

five = add 2 3

يمكن استخدام الأقواس الهلالية لتحديد ترتيب تقييم التعبير.

six = add 2 (1 * 4)

twelve = add 2 1 * 4

الإزاحة / المسافات المهمة

لا يستخدم Elm علامات نحوية مثل الأقواس المعقوفة أو الأقواس الهلالية أو الفواصل المنقوطة لتحديد حدود الكود. بل يستخدم المسافات البيضاء والإزاحة بدلًا منها.

  • يجب أن تبدأ تعريفات الوحدات والاستيراد والدوال على المستوى الأعلى من العمود الأيسر تمامًا.
  • إذا قُسِّم التعبير على عدة أسطر، فيجب إزاحة الكود الذي يمثل جزءًا من ذلك التعبير أسفله بمسافة واحدة على الأقل.
  • يجب إزاحة أجزاء التعبير المجمّعة معًا بعدد متساوٍ من المسافات.
-- A function split over multiple lines, so subsequent lines must be indented
add number1 number2 =
    number1 + number2

https://elmprogramming.com/indentation.html

الوحدات

كل ملف في Elm هو وحدة، ويجب أن يحتوي على عبارة module قبل كل الكود الآخر. يجب أن تتطابق أسماء الوحدات مع أسماء ملفاتها، لذا يجب أن تكون الوحدة Calculator في الملف Calculator.elm. وكل ما يُعرَّف داخل وحدة يكون نطاقه خاصًا بها ولا يمكن الوصول إليه من خارج هذه الوحدة، إلا إذا ذُكر في exposing.

-- Define the Calculator module, and expose the `add` function
module Calculator exposing (add)

six = 3 + 3

add number1 number2 = number1 + number2
-- Define the Calculator module, and expose everything within: `six` and `add`
module Calculator exposing (..)

six = 3 + 3

add number1 number2 = number1 + number2

https://elm-lang.org/docs/syntax#modules

التعليقات

التعليق نص داخل ملف Elm لا يُفسَّر ككود. والغرض منه أساسًا أن تقرأه أنت ومبرمجون آخرون. توجد صيغة بسيطة للتعليقات أحادية السطر، تعتمد على الشرطتين المتصلتين. كما يمكن كتابة تعليقات متعددة الأسطر باستخدام الزوجين {- و -} من المحددات الافتتاحية والختامية.

-- a single line comment
-- another single line comment

{- a multiline comment
   spawning multiple lines
-}

التنسيق

يوجد دليل الأسلوب، ويمكن استخدام elm-format لتنسيق الكود تلقائيًا.

التعليمات

في هذا التمرين ستكتب بعض الكود لمساعدتك في طهي لازانيا رائعة من كتاب الوصفات المفضل لديك.

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

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

عرّف expectedMinutesInOven لحساب عدد الدقائق التي ينبغي أن تبقى فيها اللازانيا في الفرن. وفقًا لكتاب الوصفات، زمن الفرن المتوقع بالدقائق هو 40:

expectedMinutesInOven
    --> 40

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

عرّف preparationTimeInMinutes التي تأخذ عدد طبقات اللازانيا كمعامل وتُرجع عدد الدقائق اللازمة لتحضير اللازانيا، بافتراض أن كل طبقة تستغرق 2 دقائق للتحضير.

preparationTimeInMinutes 3
    --> 6

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

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

elapsedTimeInMinutes 3 20
    --> 26
تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
Elm Exercism

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

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