لبات ASPLلبات 0.7.0

البحث في التوثيق

يبدأ البحث بالتوثيق الحالي بالعربية · لبات 0.7.0

اكتب اسما كاملا مثل read_line أو كلمات عن الموضوع.

    English
    ملفات المصدر

    افتح ملف .aspl أو .لبات بترميز UTF-8، حتى 1 MiB، في مسودة جديدة. يبقى الملف في هذا المتصفح ولا يُشغّل تلقائياً.

    اختياري: نقل مساعد الاختبار إلى وحدة

    لبات 0.7.0 · الإصدار الحالي

    صدر دالة فحص الإجابة واستدعها عبر وحدة أصلية وأصلح مرجعا خاصا.

    محتويات الصفحة

    ما الذي ستتعلمه

    ينقل هذا الدرس الاختياري للمضيف الأصلي فقط دالة فحص الإجابة إلى إجابات.لبات ويصدرها صراحة ويستدعيها باسم الوحدة إجابات. احتفظ باختبار المتصفح المكتمل في ملف واحد ومسودته الأصلية.

    قبل أن تبدأ

    افهم الاختبار المكتمل وأنهِ التثبيت والتشغيل محليا. اختر لبات 0.7.0 الأصلي. لا يحمل المتصفح وحدات مصدر المستخدم؛ لا تتيح إضافة إجابات.لبات كملف تشغيل افتراضي الاستيراد. تجد القواعد الأوسع في دليل وحدات المصدر والمرجع.

    انقل الدالة المساعدة وصدرها

    أبق سؤال وقائمتها والعدادات والتحليل وملخص في الجذر. عدل هل_صحيح لتأخذ العدد المتوقع بدلا من سؤال، فلا يحتاج توقيعها العام إلا إلى أنواع قياسية. يمرر الجذر السؤال::جواب. احذف الدالة القديمة من الجذر واحفظ هذا المساعد الإنجليزي الكامل باسم answers.aspl:

    مقطع توضيحي

    share fn is_correct(expected: i64, answer: i64) -> bool {
        return answer matches expected;
    }

    احفظ المساعد العربي المطابق باسم إجابات.لبات. يقدم العملية نفسها:

    مقطع توضيحي

    شارك دالة هل_صحيح(متوقع: ص64, جواب: ص64) -> منطقي {
        أرجع جواب يطابق متوقع.
    }

    التصريحات خاصة افتراضيا. تجعل share / شارك هذه الدالة متاحة للجذر المستورد. تستخدم النسخة العربية أسماء دوال ومتغيرات عربية، والنسخة الإنجليزية أسماء إنجليزية. تبديل لغة القراءة يحافظ على نسخة المصدر المختارة.

    استورد واستدع من الجذر

    في أعلى الجذر، يحمل استورد إجابات.لبات بسم إجابات. / import answers.aspl as answers; ملف المصدر نسبة إلى ملف الجذر ويربط نطاق الأسماء إجابات. استبدل الاستدعاء السابق بـ إجابات::هل_صحيح(السؤال::جواب, محلل::قيمة) / answers::is_correct(question::answer, parsed::value) داخل فرع نجاح التحليل.

    لا ينفذ استيراد المصدر أي كود. تعمل الدالة المساعدة فقط عندما يستدعيها الجذر. للجذر وحده start_main / ابدأ_الرئيسية؛ لا مدخل في ملف المساعد. وحدة المصدر ملف مصدر محلي، تختلف عن مكتبة مقدمة مثل core::http وعن بيانات تشغيل المتصفح.

    نزّل الجذر وإجابات.لبات المطابق أدناه إلى مجلد جديد. افصل النسختين العربية والإنجليزية في مجلدين واستخدم إجابات.لبات مع الجذر العربي وanswers.aspl مع الجذر الإنجليزي. يعرض الفهرس هاتين النسختين المقدمتين فقط مع البايتات الدقيقة وهوية المصدر ومرجع الإصدار. لا أصول بيانات. يحافظ الجذر الكامل على الأسئلة الخمسة وسلوك الإدخال والعد في الملف الواحد.

    المضيف الأصلي فقط · لبات 0.7.0 · مصدر عربي

    التنفيذ: المضيف الأصلي فقط · لبات 0.7.0

    المتطلبات السابقة:
    • المضيف الأصلي فقط. اختر لبات 0.7.0. نزّل الجذر وanswers.aspl المطابق إلى مجلد واحد. افصل المفردات والمثال الخاص والمصدّر في مجلدات مستقلة. لا ملفات بيانات مطلوبة.

    أسطر الإدخال: ["5","5","12","4","15"]

    مصدر عربي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    مصدر إنجليزي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    استورد إجابات.لبات بسم إجابات.
    سجل سؤال { سؤال_نصي: نص, جواب: ص64 }
    دالة ملخص(عنوان: نص, صحيح: ص64, عدد_المجاب: ص64, إجمالي: ص64) -> وحدة {
        اطبع(عنوان + ". Correct: " + نسق_ص64(صحيح) + "; answered: " + نسق_ص64(عدد_المجاب) + "; total: " + نسق_ص64(إجمالي) + ".\س").
    }
    دالة ابدأ_الرئيسية() -> ص64 {
        دع أسئلة: قائمة<سؤال> = [
            سؤال { سؤال_نصي: "2 + 3?", جواب: 5 },
            سؤال { سؤال_نصي: "9 - 4?", جواب: 5 },
            سؤال { سؤال_نصي: "3 * 4?", جواب: 12 },
            سؤال { سؤال_نصي: "12 / 3?", جواب: 4 },
            سؤال { سؤال_نصي: "7 + 8?", جواب: 15 }
        ].
        دع إجمالي: ص64 = طول(أسئلة).
        متغير فهرس: ص64 = 0.
        متغير عدد_المجاب: ص64 = 0.
        متغير صحيح: ص64 = 0.
        اطبع("Quiz: " + نسق_ص64(إجمالي) + " questions. Type q to stop.\س").
        طالما (فهرس < إجمالي) {
            دع السؤال: سؤال = أسئلة[فهرس].
            اطبع("Question " + نسق_ص64(فهرس + 1) + "/" + نسق_ص64(إجمالي) + ": " + السؤال::سؤال_نصي + " ").
            دع سطر: نص = اقرأ_سطر().
            إذا (سطر يطابق "q") {
                ملخص("Stopped early", صحيح, عدد_المجاب, إجمالي).
                أرجع 0.
            }
            دع محلل: نتيجة<ص64> = حلل_ص64(سطر).
            إذا (محلل::نجاح) {
                إذا (إجابات::هل_صحيح(السؤال::جواب, محلل::قيمة)) {
                    اطبع("Correct.\س").
                    صحيح = صحيح + 1.
                } وإلا {
                    اطبع("Wrong. Expected " + نسق_ص64(السؤال::جواب) + ".\س").
                }
                عدد_المجاب = عدد_المجاب + 1.
                فهرس = فهرس + 1.
            } وإلا {
                اطبع("Retry: " + محلل::الخطأ::الرمز + ". Use ASCII digits, for example 5, or q.\س").
            }
        }
        ملخص("Completed", صحيح, عدد_المجاب, إجمالي).
        أرجع 0.
    }
    

    اتبع تعليمات Linux لتنفيذ هذا المثال. نزّل المصدر لحفظه.

    تنزيل الرئيسية.لبات

    النتائج المتوقعة
    {
      "native": {
        "check": 0,
        "status": 0,
        "output": "Quiz: 5 questions. Type q to stop.\nQuestion 1/5: 2 + 3? Correct.\nQuestion 2/5: 9 - 4? Correct.\nQuestion 3/5: 3 * 4? Correct.\nQuestion 4/5: 12 / 3? Correct.\nQuestion 5/5: 7 + 8? Correct.\nCompleted. Correct: 5; answered: 5; total: 5.\n"
      }
    }

    توقع وافحص وشغل

    من مجلد الزوج الإنجليزي:

    aspl check main.aspl
    aspl run main.aspl
    echo $?

    للزوج العربي استخدم أوامر الجذر الدقيقة التالية في مجلده المنفصل:

    aspl check الرئيسية.لبات
    aspl run الرئيسية.لبات
    echo $?

    توقع الإخراج للأسطر 5 و5 و12 و4 و15. ينجح الفحص بحالة 0 دون إخراج؛ يطبع التشغيل خمسة أسطر Correct. ثم Completed. Correct: 5; answered: 5; total: 5. وسطر نهاية بحالة 0، دون قراءة سادسة. مع 12x و6 وq يعيد السؤال الأول المحاولة ويتقدم العدد الخاطئ ويبلغ التوقف المبكر عن صفر صحيح وإجابة معدودة واحدة ومجموع خمسة. يبقى EOF فخ input-exhausted؛ ويبقى إيقاف المتصفح إلغاء في نسخة الملف الواحد. لا يغير نقل المساعد العد ولا مفاهيم الإدخال والإخراج وحالة العملية.

    شاهد فشل مرجع خاص

    توقع ما يحدث دون share. للزوج الكامل الفاشل المنفصل أدناه الجذر نفسه وهل_صحيح خاصة. احفظه في مجلد مستقل عن الزوج المصدّر. تظهر الملفات المطلوبة قبل مصدر الجذر. يفشل فحصه وتشغيله بحالة 1 وتشخيص private-member دون إخراج للاختبار أو قراءة إدخال.

    المضيف الأصلي فقط · لبات 0.7.0 · مصدر عربي

    التنفيذ: المضيف الأصلي فقط · لبات 0.7.0

    المتطلبات السابقة:
    • المضيف الأصلي فقط. اختر لبات 0.7.0. نزّل الجذر وanswers.aspl المطابق إلى مجلد واحد. افصل المفردات والمثال الخاص والمصدّر في مجلدات مستقلة. لا ملفات بيانات مطلوبة.

    الإدخال: لا يحتاج إلى أسطر إدخال.

    مصدر عربي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    مصدر إنجليزي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    استورد إجابات.لبات بسم إجابات.
    سجل سؤال { سؤال_نصي: نص, جواب: ص64 }
    دالة ملخص(عنوان: نص, صحيح: ص64, عدد_المجاب: ص64, إجمالي: ص64) -> وحدة {
        اطبع(عنوان + ". Correct: " + نسق_ص64(صحيح) + "; answered: " + نسق_ص64(عدد_المجاب) + "; total: " + نسق_ص64(إجمالي) + ".\س").
    }
    دالة ابدأ_الرئيسية() -> ص64 {
        دع أسئلة: قائمة<سؤال> = [
            سؤال { سؤال_نصي: "2 + 3?", جواب: 5 },
            سؤال { سؤال_نصي: "9 - 4?", جواب: 5 },
            سؤال { سؤال_نصي: "3 * 4?", جواب: 12 },
            سؤال { سؤال_نصي: "12 / 3?", جواب: 4 },
            سؤال { سؤال_نصي: "7 + 8?", جواب: 15 }
        ].
        دع إجمالي: ص64 = طول(أسئلة).
        متغير فهرس: ص64 = 0.
        متغير عدد_المجاب: ص64 = 0.
        متغير صحيح: ص64 = 0.
        اطبع("Quiz: " + نسق_ص64(إجمالي) + " questions. Type q to stop.\س").
        طالما (فهرس < إجمالي) {
            دع السؤال: سؤال = أسئلة[فهرس].
            اطبع("Question " + نسق_ص64(فهرس + 1) + "/" + نسق_ص64(إجمالي) + ": " + السؤال::سؤال_نصي + " ").
            دع سطر: نص = اقرأ_سطر().
            إذا (سطر يطابق "q") {
                ملخص("Stopped early", صحيح, عدد_المجاب, إجمالي).
                أرجع 0.
            }
            دع محلل: نتيجة<ص64> = حلل_ص64(سطر).
            إذا (محلل::نجاح) {
                إذا (إجابات::هل_صحيح(السؤال::جواب, محلل::قيمة)) {
                    اطبع("Correct.\س").
                    صحيح = صحيح + 1.
                } وإلا {
                    اطبع("Wrong. Expected " + نسق_ص64(السؤال::جواب) + ".\س").
                }
                عدد_المجاب = عدد_المجاب + 1.
                فهرس = فهرس + 1.
            } وإلا {
                اطبع("Retry: " + محلل::الخطأ::الرمز + ". Use ASCII digits, for example 5, or q.\س").
            }
        }
        ملخص("Completed", صحيح, عدد_المجاب, إجمالي).
        أرجع 0.
    }
    

    اتبع تعليمات Linux لتنفيذ هذا المثال. نزّل المصدر لحفظه.

    تنزيل الرئيسية.لبات

    النتائج المتوقعة
    {
      "native": {
        "check": 1,
        "status": 1,
        "output": "",
        "reason": "private-member"
      }
    }

    من مجلد الزوج الإنجليزي الفاشل نفذ aspl check main.aspl أو aspl run main.aspl؛ ولزوجه العربي استخدم الرئيسية.لبات. يوجد نطاق الاستيراد لكن إجابات::هل_صحيح لا يستطيع تسمية عضو خاص. لا يصلح تبديل لغة القراءة الإتاحة.

    صدر وأعد المحاولة

    أضف شارك قبل دالة هل_صحيح في إجابات.لبات الفاشل. للزوج الإنجليزي أضف share قبل fn is_correct في answers.aspl. أبق مرجع الجذر إجابات::هل_صحيح والوسيطين الرقميين. افحص الجذر مجددا ثم شغل وأدخل 5 و5 و12 و4 و15. توقع الإكمال بخمس إجابات صحيحة وحالة 0 كما في الزوج المصدّر.

    أصلح تصدير المساعد الخاص دون تغيير استدعاء الجذر المؤهل باسم الوحدة. اشرح متى تعمل الدالة فعلا.

    تلميح: لا يجعل اسم الوحدة التصريحات عامة. أضف share / شارك إلى تصريح المساعد وأبق إجابات::هل_صحيح ثم افحص الجذر.

    اعرض الإجابة المشروحة

    يصدر المساعد المصحح هل_صحيح بمعاملين من ص64 ونتيجة منطقي. يمرر الجذر الإجابة المتوقعة في السجل والعدد المحلل عبر إجابات::هل_صحيح. يفحص الاستيراد التصريح ويتيحه دون استدعاء أو قراءة إدخال. ينفذ الاستدعاء الصريح في فرع نجاح التحليل الدالة المساعدة. ينجح فحص الزوج المصدّر الكامل أدناه ويحافظ على إخراج الاختبار وحالته.

    المضيف الأصلي فقط · لبات 0.7.0 · مصدر عربي

    التنفيذ: المضيف الأصلي فقط · لبات 0.7.0

    المتطلبات السابقة:
    • المضيف الأصلي فقط. اختر لبات 0.7.0. نزّل الجذر وanswers.aspl المطابق إلى مجلد واحد. افصل المفردات والمثال الخاص والمصدّر في مجلدات مستقلة. لا ملفات بيانات مطلوبة.

    أسطر الإدخال: ["5","5","12","4","15"]

    مصدر عربي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    مصدر إنجليزي · وحدات المصدر المطلوبة، احفظ كل نسخة في مجلد منفصل:

    استورد إجابات.لبات بسم إجابات.
    سجل سؤال { سؤال_نصي: نص, جواب: ص64 }
    دالة ملخص(عنوان: نص, صحيح: ص64, عدد_المجاب: ص64, إجمالي: ص64) -> وحدة {
        اطبع(عنوان + ". Correct: " + نسق_ص64(صحيح) + "; answered: " + نسق_ص64(عدد_المجاب) + "; total: " + نسق_ص64(إجمالي) + ".\س").
    }
    دالة ابدأ_الرئيسية() -> ص64 {
        دع أسئلة: قائمة<سؤال> = [
            سؤال { سؤال_نصي: "2 + 3?", جواب: 5 },
            سؤال { سؤال_نصي: "9 - 4?", جواب: 5 },
            سؤال { سؤال_نصي: "3 * 4?", جواب: 12 },
            سؤال { سؤال_نصي: "12 / 3?", جواب: 4 },
            سؤال { سؤال_نصي: "7 + 8?", جواب: 15 }
        ].
        دع إجمالي: ص64 = طول(أسئلة).
        متغير فهرس: ص64 = 0.
        متغير عدد_المجاب: ص64 = 0.
        متغير صحيح: ص64 = 0.
        اطبع("Quiz: " + نسق_ص64(إجمالي) + " questions. Type q to stop.\س").
        طالما (فهرس < إجمالي) {
            دع السؤال: سؤال = أسئلة[فهرس].
            اطبع("Question " + نسق_ص64(فهرس + 1) + "/" + نسق_ص64(إجمالي) + ": " + السؤال::سؤال_نصي + " ").
            دع سطر: نص = اقرأ_سطر().
            إذا (سطر يطابق "q") {
                ملخص("Stopped early", صحيح, عدد_المجاب, إجمالي).
                أرجع 0.
            }
            دع محلل: نتيجة<ص64> = حلل_ص64(سطر).
            إذا (محلل::نجاح) {
                إذا (إجابات::هل_صحيح(السؤال::جواب, محلل::قيمة)) {
                    اطبع("Correct.\س").
                    صحيح = صحيح + 1.
                } وإلا {
                    اطبع("Wrong. Expected " + نسق_ص64(السؤال::جواب) + ".\س").
                }
                عدد_المجاب = عدد_المجاب + 1.
                فهرس = فهرس + 1.
            } وإلا {
                اطبع("Retry: " + محلل::الخطأ::الرمز + ". Use ASCII digits, for example 5, or q.\س").
            }
        }
        ملخص("Completed", صحيح, عدد_المجاب, إجمالي).
        أرجع 0.
    }
    

    اتبع تعليمات Linux لتنفيذ هذا المثال. نزّل المصدر لحفظه.

    تنزيل الرئيسية.لبات

    النتائج المتوقعة
    {
      "native": {
        "check": 0,
        "status": 0,
        "output": "Quiz: 5 questions. Type q to stop.\nQuestion 1/5: 2 + 3? Correct.\nQuestion 2/5: 9 - 4? Correct.\nQuestion 3/5: 3 * 4? Correct.\nQuestion 4/5: 12 / 3? Correct.\nQuestion 5/5: 7 + 8? Correct.\nCompleted. Correct: 5; answered: 5; total: 5.\n"
      }
    }

    تحقق من فهمك

    اشرح لماذا يبقى السجل خاصا في الجذر ولماذا يستخدم المساعد عددين ولماذا لا يتيح اسم الوحدة وحده تصريحا خاصا ولماذا لا يشغل الاستيراد الاختبار. لا درجة ولا تقدم مخزنا، والتنقل مفتوح. عد إلى الخطوات التالية أو نسخة المتصفح في ملف واحد.

    تصفح الصفحات