Percursos
/
Cairo
Cairo
/
Exercícios
/
Sistema de encomendas de pastelaria
Sistema de encomendas de pastelaria

Sistema de encomendas de pastelaria

Exercício de aprendizagem

Introdução

O fluxo de controlo em Cairo permite-te controlar o caminho de execução dos teus programas com base em condições e repetição.

Execução condicional

Usa 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, por isso pode devolver valores:

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

Ciclos

Usa loop para repetir código. Um ciclo corre indefinidamente a menos que o pares; usa break para sair do ciclo quando uma condição se verifica.

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

Os ciclos podem devolver valores com break:

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

Usa continue para saltar para a iteração seguinte:

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 vais ajudar a gerir as operações diárias de uma pequena pastelaria, usando as estruturas de controlo de fluxo de Cairo.

1. Calcular o total da encomenda

Implementa calculate_total, que calcula o custo de uma encomenda com base no tipo de pastelaria e na quantidade:

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

2. Aplicar descontos de volume

Implementa apply_discount, que aplica descontos com base no total da encomenda. Aplica a percentagem de desconto ao total e arredonda depois para baixo, para o número inteiro de moedas mais próximo (floor).

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

3. Criar o horário de cozedura

Implementa baking_schedule, que cria um plano diário de cozedura. A pastelaria coze em lotes de 5 encomendas 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)

Usa as estruturas de controlo de fluxo adequadas (if/else, loop) para resolveres cada problema de forma eficiente.

Editar via GitHub A ligação abre numa nova janela ou separador
Cairo Exercism

Estás pronto para começar Sistema de encomendas de pastelaria?

Inscreve-te no Exercism para aprenderes e dominares Cairo com 25 conceitos68 exercícios, e mentoria humana real, tudo grátis.