Trilhas
/
Cairo
Cairo
/
Exercícios
/
Sistema de pedidos de padaria
Sistema de pedidos de padaria

Sistema de pedidos de padaria

Exercício de aprendizagem

Introdução

O fluxo de controle em Cairo permite controlar o caminho de execução dos seus programas com base em condições e repetições.

Execução condicional

Use expressões if para executar código com base em condições:

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

if é uma expressão, então pode retornar valores:

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

Laços

Use loop para repetir código. Um laço roda indefinidamente, a menos que você o pare; use break para sair do laço quando uma condição for satisfeita.

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

Os laços podem retornar valores usando break:

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

Use continue para pular para a próxima iteração:

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
}

Instruções

Neste exercício, você vai ajudar a gerenciar as operações diárias de uma pequena padaria usando as estruturas de fluxo de controle de Cairo.

1. Calcular o total do pedido

Implemente calculate_total, que calcula o custo de um pedido com base no tipo de doce e na quantidade:

  • Croissant: 3 moedas cada
  • Muffin: 2 moedas cada
  • Cookie: 1 moeda cada
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. Aplicar descontos por volume

Implemente apply_discount, que aplica descontos com base no total do pedido. Aplique o desconto percentual ao total e depois arredonde para baixo até a moeda inteira mais próxima (floor).

  • Pedidos ≥ 20 moedas: 10% de desconto
  • Pedidos ≥ 10 moedas: 5% de desconto
  • Pedidos < 10 moedas: sem desconto
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. Criar o cronograma de fornadas

Implemente baking_schedule, que cria um plano diário de fornadas. A padaria assa em lotes de 5 pedidos por hora:

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)

Use as estruturas de fluxo de controle adequadas (if/else, loop) para resolver cada problema com eficiência.

Editar via GitHub O link abre em uma nova janela ou aba
Cairo Exercism

Tudo pronto para começar Sistema de pedidos de padaria?

Crie sua conta no Exercism para aprender e dominar Cairo com 25 conceitos68 exercícios e mentoria humana de verdade, tudo de graça.