|
|
# تمرین آرایهها و حلقهها
|
|
|
|
|
|
## دستورالعملها
|
|
|
|
|
|
تمرینهای زیر را برای تمرین کار با آرایهها و حلقهها انجام دهید. هر تمرین بر مفاهیم درس بنا شده و شما را ترغیب میکند که از انواع مختلف حلقهها و روشهای آرایه استفاده کنید.
|
|
|
|
|
|
### تمرین ۱: تولید الگوی عددی
|
|
|
برنامهای بنویسید که هر سومین عدد از بین 1 تا 20 را فهرست کند و در کنسول نمایش دهد.
|
|
|
|
|
|
**الزامات:**
|
|
|
- استفاده از حلقهٔ `for` با افزایش سفارشی
|
|
|
- نمایش اعداد به شکل کاربرپسند
|
|
|
- افزودن کامنتهای توضیحدهنده منطق کد
|
|
|
|
|
|
**خروجی مورد انتظار:**
|
|
|
```
|
|
|
3, 6, 9, 12, 15, 18
|
|
|
```
|
|
|
|
|
|
> **نکته:** عبارت تکرار در حلقهٔ for خود را تغییر دهید تا اعداد را رد کنید.
|
|
|
|
|
|
### تمرین ۲: تحلیل آرایه
|
|
|
آرایهای شامل حداقل ۸ عدد مختلف ایجاد کنید و توابعی برای تحلیل دادهها بنویسید.
|
|
|
|
|
|
**الزامات:**
|
|
|
- آرایهای به نام `numbers` با حداقل ۸ مقدار بسازید
|
|
|
- تابعی به نام `findMaximum()` بنویسید که بیشترین عدد را برگرداند
|
|
|
- تابعی به نام `findMinimum()` بنویسید که کمترین عدد را برگرداند
|
|
|
- تابعی به نام `calculateSum()` بنویسید که مجموع همهٔ اعداد را برگرداند
|
|
|
- هر تابع را تست و نتایج را نمایش دهید
|
|
|
|
|
|
**چالش اضافه:** تابعی بسازید که دومین عدد بزرگترین را در آرایه پیدا کند.
|
|
|
|
|
|
### تمرین ۳: پردازش آرایه رشتهای
|
|
|
آرایهای از فیلمها/کتابها/آهنگهای مورد علاقه خود بسازید و با انواع حلقهها تمرین کنید.
|
|
|
|
|
|
**الزامات:**
|
|
|
- آرایهای با حداقل ۵ مقدار رشتهای ایجاد کنید
|
|
|
- از حلقهٔ سنتی `for` برای نمایش موارد همراه با شماره (1. نام مورد) استفاده کنید
|
|
|
- از حلقهٔ `for...of` برای نمایش موارد با حروف بزرگ استفاده کنید
|
|
|
- از متد `forEach()` برای شمارش و نمایش مجموع کاراکترها استفاده کنید
|
|
|
|
|
|
**مثال خروجی:**
|
|
|
```
|
|
|
Traditional for loop:
|
|
|
1. The Matrix
|
|
|
2. Inception
|
|
|
3. Interstellar
|
|
|
|
|
|
For...of loop (uppercase):
|
|
|
THE MATRIX
|
|
|
INCEPTION
|
|
|
INTERSTELLAR
|
|
|
|
|
|
Character count:
|
|
|
Total characters across all titles: 42
|
|
|
```
|
|
|
|
|
|
### تمرین ۴: فیلتر دادهها (پیشرفته)
|
|
|
برنامهای بسازید که آرایهای از اشیاء دانشآموزان را پردازش کند.
|
|
|
|
|
|
**الزامات:**
|
|
|
- آرایهای با حداقل ۵ شیء دانشآموز شامل ویژگیهای: `name`، `age`، `grade` بسازید
|
|
|
- از حلقهها برای یافتن دانشآموزانی که ۱۸ سال یا بیشتر دارند استفاده کنید
|
|
|
- میانگین نمرات همه دانشآموزان را محاسبه کنید
|
|
|
- آرایهٔ جدیدی ایجاد کنید که فقط شامل دانشآموزان با نمره بالاتر از ۸۵ باشد
|
|
|
|
|
|
**ساختار نمونه:**
|
|
|
```javascript
|
|
|
const students = [
|
|
|
{ name: "Alice", age: 17, grade: 92 },
|
|
|
{ name: "Bob", age: 18, grade: 84 },
|
|
|
// دانشآموزان بیشتری اضافه کنید...
|
|
|
];
|
|
|
```
|
|
|
|
|
|
## آزمون کد شما
|
|
|
|
|
|
کدهای خود را به صورت زیر تست کنید:
|
|
|
1. اجرای هر تمرین در کنسول مرورگرتان
|
|
|
2. بررسی تطابق خروجی با نتایج مورد انتظار
|
|
|
3. آزمایش با مجموعه دادههای مختلف
|
|
|
4. اطمینان از اینکه کد شما موارد لبهای را مدیریت میکند (آرایههای خالی، تک عنصر)
|
|
|
|
|
|
## دستورالعمل ارسال
|
|
|
|
|
|
موارد زیر را در ارسال خود بگنجانید:
|
|
|
- کد جاوااسکریپت با کامنتهای کامل برای هر تمرین
|
|
|
- اسکرینشات یا خروجی متنی برنامههای در حال اجرا
|
|
|
- توضیح کوتاه درباره انتخاب نوع حلقه در هر وظیفه و دلیل انتخاب آن
|
|
|
|
|
|
## معیار ارزشیابی
|
|
|
|
|
|
| معیار | نمونه عالی (۳ امتیاز) | قابل قبول (۲ امتیاز) | نیاز به بهبود (۱ امتیاز) |
|
|
|
| -------- | -------------------- | ------------------- | --------------------------- |
|
|
|
| **عملکرد** | همه تمرینها به درستی انجام شده با چالشهای جایزه | همه تمرینهای لازم به درستی کار میکنند | برخی تمرینها ناقص یا دارای خطا هستند |
|
|
|
| **کیفیت کد** | کد تمیز و ساختیافته با نامهای متغیر توصیفی | کد کارا است اما میتوان تمیزتر بود | کد بینظم یا سخت فهم است |
|
|
|
| **کامنتها** | کامنتهای جامع که منطق و تصمیمها را توضیح میدهند | کامنتهای پایهای موجود است | کامنت کم یا اصلاً ندارد |
|
|
|
| **استفاده از حلقهها** | درک مناسب از انواع مختلف حلقهها را نشان میدهد | حلقهها به درستی استفاده شده ولی تنوع کم است | استفاده نادرست یا ناکارآمد از حلقهها |
|
|
|
| **تست** | شواهد تست دقیق با چندین سناریو | تست پایه نشان داده شده | شواهد کمی از تست |
|
|
|
|
|
|
## سوالات تأملی
|
|
|
|
|
|
پس از اتمام تمرینها، به موارد زیر فکر کنید:
|
|
|
1. کدام نوع حلقه طبیعیتر و راحتتر برای شما بود و چرا؟
|
|
|
2. هنگام کار با آرایهها با چه چالشهایی مواجه شدید؟
|
|
|
3. این مهارتها چگونه میتوانند در پروژههای واقعی توسعه وب کاربردی باشند؟
|
|
|
4. اگر بخواهید کد خود را برای عملکرد بهتر بهینه کنید، چه تغییراتی انجام میدهید؟
|
|
|
|
|
|
---
|
|
|
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
|
|
|
**توضیح مهم**:
|
|
|
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است دارای اشتباهات یا نادرستیهایی باشند. سند اصلی به زبان بومی آن به عنوان منبع معتبر محسوب میشود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که از استفاده از این ترجمه ناشی شود، نیستیم.
|
|
|
<!-- CO-OP TRANSLATOR DISCLAIMER END --> |