Потік керування в 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.
Реалізуйте функцію calculate_total, яка обчислює вартість замовлення залежно від типу випічки та кількості:
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10) // Returns: 10 (10 * 1)
Реалізуйте функцію apply_discount, яка застосовує знижки залежно від підсумку замовлення.
Застосуйте відсоткову знижку до підсумку, а потім округліть у менший бік до найближчої цілої монети (округлення вниз).
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8) // Returns: 8
Реалізуйте функцію 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).
Зареєструйтеся на Exercism, щоб вивчати й опановувати Cairo, а також 25 концепцій68 вправ та справжнє наставництво від людей, і все це безкоштовно.