مسیرها
/
Julia
Julia
/
تمرین‌ها
/
مونتاژ خودرو
مونتاژ خودرو

مونتاژ خودرو

تمرین یادگیری

مقدمه

عملگرهای مقایسه

عملگرهای مقایسه در Julia مانند بسیاری از زبان‌های دیگر هستند، هرچند چند گزینه‌ی اضافه هم برای علاقه‌مندان به ریاضی دارند.

برای بررسی برابری، عملگرها == (برابر) و != یا ≠ (نابرابر) هستند.

txt = "abc"
txt == "abc"  # true
txt != "abc"  # false
txt ≠ "abc"  # false (synonym for !=)

علاوه بر این، عملگرهای متعددی برای کوچک‌تر و بزرگ‌تر بودن هم داریم.

1 < 3  # true
3 > 3  # false
3 <= 3  # true
3 ≤ 3  # true (synonym for <=)
4 >= 3  # true
4 ≥ 3  # true (synonym for >=)

همان‌طور که اغلب در Julia می‌بینیم، یک ویرایشگر مناسب استفاده از نمادهای ریاضی را آسان می‌کند. \ne، \le یا \ge را تایپ کنید و سپس TAB را بزنید تا ≠، ≤ یا ≥ را به دست آورید.

مثال قبلی فقط از اعداد استفاده می‌کند، اما در بخش‌های دیگر برنامه‌ی درسی خواهیم دید که انواع دیگری هم مفهوم ترتیب دارند و می‌توان کوچک‌تر یا بزرگ‌تر بودن آن‌ها را بررسی کرد.

عملگرهای مقایسه را می‌توان زنجیره‌ای به کار برد که نحوه‌ی نگارشی روشن و موجز را ممکن می‌کند:

n = 3
1 ≤ n ≤ 5  # true (n "between" two limits)

مثال قبلی معادل 1 ≤ n && n ≤ 5 است.

انشعاب با if

این شکل کامل یک دستور شرطی if است:

if conditional1
    statements...
elseif conditional2
    statements...
else
    statements...
end

نیازی به پرانتز () یا آکولاد {} نیست و تورفتگی «فقط» برای بهتر شدن خوانایی است (اما خوانایی بسیار مهم است!).

هم elseif و هم else اختیاری‌اند و می‌توان چند بلوک elseif نوشت. اما end الزامی است.

می‌توان دستورهای شرطی if را تودرتو کرد، هرچند ممکن است بخواهید با استفاده‌ی سنجیده از پرانتز، تورفتگی و کامنت، به خوانایی کمک کنید.

کوتاه‌ترین شکل یک دستور شرطی if به این صورت است:

if n < 0
    n = 0
end

یادآوری: تنها عبارت‌هایی می‌توانند به عنوان شرط به کار روند که به true یا false ارزیابی شوند. Julia آگاهانه از هرگونه مفهوم «درست‌نمایی» پرهیز می‌کند، بنابراین مقدارهای صفر، رشته‌های خالی و آرایه‌های خالی معادل false نیستند.

عملگر سه‌تایی

یک موقعیت ساده و رایج، انتخاب یکی از دو مقدار بر اساس یک شرط است.

Julia هم مانند بسیاری از زبان‌ها یک عملگر سه‌تایی دارد تا این کار را موجزتر کند.

نحوه‌ی نگارش آن conditional ? value_if_true : value_if_false است.

پس مثال قبلی را می‌توان این‌گونه بازنویسی کرد:

n = n < 0 ? 0 : n

کامپایلر پرانتز را الزامی نمی‌داند، اما پرانتزها ممکن است خوانایی را بهتر کنند.

دستورالعمل‌ها

در این تمرین، کدی می‌نویسید که تولید یک خط مونتاژ را در یک کارخانه‌ی خودروسازی تحلیل می‌کند. سرعت خط مونتاژ می‌تواند از 0 (خاموش) تا 10 (حداکثر) باشد.

در کمترین سرعت خط مونتاژ (1)، هر ساعت 221 خودرو تولید می‌شود. تولید به‌صورت خطی با سرعت افزایش می‌یابد. پس وقتی سرعت روی 4 تنظیم شود، باید هر ساعت 4 * 221 = 884 خودرو تولید کند. با این حال، سرعت‌های بالاتر احتمال تولید خودروهای معیوب را بیشتر می‌کنند؛ خودروهایی که در نتیجه باید دور انداخته شوند.

سه وظیفه دارید. هر یک از توابع موردنیاز یک پارامتر عدد صحیح می‌گیرد: سرعت خط مونتاژ.

1. نرخ موفقیت را محاسبه کنید

متد success_rate() را پیاده‌سازی کنید تا احتمال تولید یک محصول بدون خطا را در یک سرعت مشخص محاسبه کند. جدول زیر نشان می‌دهد سرعت چگونه بر نرخ موفقیت اثر می‌گذارد:

  • 0: نرخ موفقیت ۰٪.
  • 1 تا 4: نرخ موفقیت ۱۰۰٪.
  • 5 تا 8: نرخ موفقیت ۹۰٪.
  • 9: نرخ موفقیت ۸۰٪.
  • 10: نرخ موفقیت ۷۷٪.
julia> success_rate(10)
0.77

2. نرخ تولید در هر ساعت را محاسبه کنید

متد production_rate_per_hour() را پیاده‌سازی کنید تا نرخ تولید ساعتی خط مونتاژ را با در نظر گرفتن نرخ موفقیت آن محاسبه کند.

julia> production_rate_per_hour(6)
1193.4

توجه کنید که مقدار برگردانده‌شده از نوع اعشاری است.

3. تعداد محصول‌های سالم تولیدشده در هر دقیقه را محاسبه کنید

متد working_items_per_minute() را پیاده‌سازی کنید تا محاسبه کند در هر دقیقه چند خودروی سالم تولید می‌شود:

julia> working_items_per_minute(6)
19

توجه کنید که مقدار برگردانده‌شده یک عدد صحیح است: محصول‌های ناقص در نظر گرفته نمی‌شوند.

ویرایش از طریق GitHub این لینک در پنجره یا زبانه‌ی جدیدی باز می‌شود
Julia Exercism

آماده‌اید مونتاژ خودرو را شروع کنید؟

در Exercism ثبت‌نام کنید تا Julia را همراه با 35 مفهوم128 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.