مسیرها
/
Cairo
Cairo
/
تمرین‌ها
/
سیستم سفارش نانوایی
سیستم سفارش نانوایی

سیستم سفارش نانوایی

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

مقدمه

«کنترل جریان» در Cairo به شما امکان می‌دهد مسیر اجرای برنامه‌هایتان را بر اساس شرط‌ها و تکرار کنترل کنید.

اجرای شرطی

از عبارت‌های if برای اجرای کد بر اساس شرط‌ها استفاده کنید:

let number = 42;
if number > 0 {
    println!("Positive number");
} else if number < 0 {
    println!("Negative number");  
} else {
    println!("Zero");
}

if یک عبارت است، بنابراین می‌تواند مقدار برگرداند:

let result = if condition { 5 } else { 10 };

حلقه

از loop برای تکرار کد استفاده کنید. یک حلقه بی‌پایان اجرا می‌شود مگر اینکه آن را متوقف کنید؛ برای خروج از حلقه وقتی شرطی برقرار می‌شود، از break استفاده کنید.

let mut counter = 0;
loop {
    if counter == 5 {
        break;
    }
    println!("Counter: {}", counter);
    counter += 1;
}

حلقه می‌تواند با استفاده از break مقدار برگرداند:

let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2; // Returns 20
    }
};

از continue برای پرش به تکرار بعدی استفاده کنید:

let mut i = 0;
loop {
    i += 1;
    if i % 2 == 0 {
        continue; // Skip even numbers
    }
    if i > 10 {
        break;
    }
    println!("{}", i); // Only prints odd numbers
}

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

در این تمرین به مدیریت عملیات روزانه‌ی یک نانوایی کوچک با استفاده از ساختارهای کنترل جریان Cairo کمک می‌کنید.

1. محاسبه‌ی مبلغ کل سفارش

calculate_total را پیاده‌سازی کنید که هزینه‌ی یک سفارش را بر اساس نوع شیرینی و تعداد آن محاسبه می‌کند:

  • کروسان: هر کدام ۳ سکه
  • مافین: هر کدام ۲ سکه
  • کوکی: هر کدام ۱ سکه
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. اعمال تخفیف‌های حجمی

apply_discount را پیاده‌سازی کنید که بر اساس مبلغ کل سفارش تخفیف اعمال می‌کند. درصد تخفیف را روی مبلغ کل اعمال کنید و سپس آن را به نزدیک‌ترین عدد صحیح سکه گرد کنید (گرد کردن به پایین).

  • سفارش‌های ۲۰ سکه و بیشتر: ۱۰٪ تخفیف
  • سفارش‌های ۱۰ سکه و بیشتر: ۵٪ تخفیف
  • سفارش‌های کمتر از ۱۰ سکه: بدون تخفیف
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. ساخت برنامه‌ی پخت

baking_schedule را پیاده‌سازی کنید که برنامه‌ی پخت روزانه را می‌سازد. نانوایی در دسته‌های ۵ سفارشی در هر ساعت می‌پزد:

baking_schedule(18) // Returns: [5, 5, 5, 3] (3 full batches + 3 remaining)
baking_schedule(10) // Returns: [5, 5] (2 full batches)
baking_schedule(3)  // Returns: [3] (1 partial batch)

برای حل کارآمد هر مسئله از ساختارهای کنترل جریان مناسب (if/else، loop) استفاده کنید.

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

آماده‌اید سیستم سفارش نانوایی را شروع کنید؟

در Exercism ثبت‌نام کنید تا Cairo را همراه با 25 مفهوم68 تمرین و مربی‌گری انسانی واقعی یاد بگیرید و در آن استاد شوید، همه‌ی این‌ها رایگان.