المسارات
/
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 التي تحسب تكلفة الطلب بناءً على نوع المعجنات والكمية:

  • كرواسون: 3 عملات لكل قطعة
  • مافن: عملتان لكل قطعة
  • بسكويت: عملة واحدة لكل قطعة
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. طبّق خصومات الكمية

نفّذ الدالة apply_discount التي تطبّق الخصومات بناءً على إجمالي الطلب. طبّق نسبة الخصم على الإجمالي، ثم قرّب النتيجة إلى أقرب عملة كاملة نحو الأسفل (floor).

  • الطلبات ≥ 20 عملة: خصم بنسبة 10%
  • الطلبات ≥ 10 عملات: خصم بنسبة 5%
  • الطلبات < 10 عملات: بلا خصم
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. أنشئ جدول الخَبز

نفّذ الدالة baking_schedule التي تنشئ خطة خَبز يومية. تُخبز الطلبات في دفعات من 5 طلبات كل ساعة:

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 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.