Ficha Nº3
Exercício Nº4
2008.03.11

A Cabine Telefónica


Pretende-se que utilize a ferramenta flex para implementar uma máquina de es- tados que modele a interacção dum utilizador com um telefone numa cabine pública.

O telefone reage aos seguintes comandos:
LEVANTAR
levantar o auscultador; marca o início duma interacção.

POUSAR
pousar o auscultador; fim da interacção; deverá ser indicado o montante a ser devolvido.

MOEDA <lista de valores>
inserção de moedas (só deverá aceitar moedas válidas, para valores inválidos deverá ser gerada uma mensagem de erro): lista de valores = num, num, ..., num.

T=numero
disca o número ( o número deve ter 9 dígitos excepto se for iniciado por "00"); as diferentes chamadas deverão ser tratadas da seguinte maneira:
  • para números iniciados por "601" ou "641" a chamada é "barrada";
  • para chamadas internacionais (iniciadas por "00") o utilizador tem que ter um saldo igual ou superior a 1,5 euros, caso contrário deverá ser avisado que o saldo é insuficiente e a máquina volta ao estado anterior; a chamada se for realizada tem um custo de 1,5 euros;
  • para chamadas nacionais (iniciadas por "2") o saldo mínimo e custo de chamada é de 25 cêntimos;
  • para chamadas verdes (iniciadas por "800") o custo é 0;
  • para chamadas azuis (iniciadas por "808") o custo é de 10 cêntimos.

ABORTAR
interromper a interacção; a máquina devolve as moedas.


Como extra pode ainda detalhar como é que é devolvido o troco: quantas moedas e de que espécie compõem o troco.

A seguir apresenta-se uma possível interacção exemplo.
LEVANTAR 
maq: "Introduza moedas." 
MOEDA 10c, 30c, 50c, 2e. 
maq: "30c - moeda inválida; saldo = 2e60c" 
T=601181818 
maq: "Os números vermelhos estão proibidos!" 
T=253604470 
maq: "saldo = 2e35c" 
POUSAR 
maq: "troco=2e35c; Volte sempre!" 
					ou 
maq: "troco = 1x2e, 1x20c, 1x10c, 1x5c; Volte sempre!"