# درس نمونه و برگهٔ پذیرش ارائهٔ کد

فایل کد همراه، تألیف مستقل و داده‌ها ساختگی‌اند. هدف، بررسی خوانایی و هماهنگی یک درس است، نه ساخت سامانهٔ واقعی یا ادعای محیط اجرای داخلی فاکسیمون.

## پیش‌نیاز و قرارداد

آرایه، شیء ساده، مقدار بولی و مقایسهٔ دقیق باید قبلاً معرفی شده باشند. تابع فقط عضوهایی را می‌شمارد که completed آن‌ها مقدار بولی true است.

| ورودی | انتظار | دلیل |
|---|---|---|
| فهرست خالی | صفر | هیچ عضو واجد شرط ندارد |
| true،false،true | دو | دو عضو دقیقاً مقدار بولی درست دارند |
| رشتهٔ "true" | صفر | نوع متن با مقدار بولی متفاوت است |
| شیء بدون فیلد completed | صفر | مقدار خوانده‌شده دقیقاً بولی true نیست |

## فایل‌ها و روش اجرای واقعی

این دو فایل را در یک پوشه نگه دارید: [کتابخانهٔ نمونه](./platform-for-programming-course-delivery-example.mjs) و [فایل اجرای چهار حالت](./platform-for-programming-course-delivery-run.mjs). فایل اول فقط تابع و داده را export می‌کند؛ برای دیدن نتیجه، فایل دوم را اجرا کنید. وابستگیِ بسته‌ای یا دسترسی شبکه لازم نیست. محیط آزموده‌شدهٔ این نمونه Node.js نسخهٔ 24.18.0 بوده است؛ این عدد حداقل نسخهٔ پشتیبانی همه محیط‌ها یا قابلیت اجرای داخلی فاکسیمون را اعلام نمی‌کند.

در ترمینالِ پوشهٔ حاوی همین دو فایل بنویسید:

```text
node platform-for-programming-course-delivery-run.mjs
```

فایل اجرا، واردکردن و فراخوانی را به این شکل انجام می‌دهد:

```javascript
import { countCompleted, sampleLessons } from './platform-for-programming-course-delivery-example.mjs';
console.log(countCompleted([]));
console.log(countCompleted(sampleLessons));
console.log(countCompleted([{ completed: 'true' }]));
console.log(countCompleted([{ id: 'sample-missing' }]));
```

این چهار فراخوانی به‌ترتیب 0، 2، 0 و 0 می‌دهند. نسخهٔ آمادهٔ فایل اجرا برای تشخیص هر حالت، نام آن را نیز چاپ می‌کند:

```text
empty: 0
sample: 2
text-value: 0
missing-field: 0
```

قرارداد ورودی آرایه‌ای از شیءهای ساده است؛ مدیریت null، نوع ورودی نامعتبر یا اعتبارسنجیِ سامانهٔ واقعی هدف این مثال نیست. در نوبت اول کد را تغییر ندهید؛ سپس یک مقدار بولی را تغییر دهید و پیش از اجرا، نتیجه را پیش‌بینی کنید.

## متن کوتاه ضبط

ابتدا دادهٔ سه‌عضوی را نشان دهید. از هنرجو بخواهید نتیجه را پیش‌بینی کند. سپس شرط را با متن خوانا نشان دهید و تفاوت نوع را توضیح دهید. یک ورودی با متن به‌جای مقدار بولی اضافه و قبل از اجرا دربارهٔ انتظار سؤال کنید. در پایان، هنرجو یک تغییر کوچک بدهد و دلیل نتیجه را بنویسد.

## معیار ارائه

- خط شرط روی گوشی هدف خوانده می‌شود.
- ویدیو و فایل همان نسخه‌اند.
- ابزار اجرای بیرونی و پیش‌نیاز واقعی توضیح داده شده است.
- هنرجو فایل درست را پیدا و نتیجهٔ یک ورودی تازه را توضیح می‌دهد.
- کمک AI در محدودهٔ قواعد فعالیت است؛ اجرای خودکار یا تصحیح کد در محصول فرض نشده است.
- پرسش هنرجو به نام درس، نسخه و ورودی کوچکِ بی‌نام وصل می‌شود.

## ماتریس خوانایی موبایل

نتایج هنوز ثبت نشده‌اند؛ اجرای کد در رایانه، آزمون نمایش گوشی محسوب نمی‌شود. در «کیفیت مشاهده‌شده» فقط چیزی را بنویسید که پلیر یا شاهد معتبر واقعاً نشان می‌دهد؛ مقدار حدسی نسازید. اگر خط شرط خوانده نمی‌شود، قاب، اندازه متن یا متن همراه را اصلاح و همان قسمت را دوباره مشاهده کنید.

| نسخه ویدیو | دستگاه و اندازه نمایش | شرایط شبکه و کیفیت مشاهده‌شده | خط یا بخش کلیدی | خوانایی واقعی | شاهد یا اصلاح لازم |
|---|---|---|---|---|---|
|  |  |  | `lesson.completed === true` |  |  |
|  |  |  | مقدار متنی `'true'` در ورودی |  |  |
|  |  |  | تفاوت صفر و دو در خروجی |  |  |
|  |  |  | تطبیق نام فایل و نسخه درس |  |  |

این جدول برای اجرای مجاز روی دستگاه هدف تکمیل می‌شود؛ هیچ ردیفِ قبولیِ انجام‌نشده از پیش پر نشده است.
