Next: Simulação do funcionamento de
Up: AFDs com acções semânticas Previous:
AFDs com acções semânticas
Vamos agora tentar modelar, por meio de um AFD reactivo, uma máquina de vender café. Vamos considerar que cada café custa 80$00; que se aceitam moedas de 10$00, 20$00 e 50$00; que a máquina é capaz de dar o troco; e por fim produzir um café saboroso. Outras moedas, que não as aceites, devem ser devolvidas. Neste caso S é o conjunto das moedas; a palavra de entrada será uma sequência de moedas que chega à máquina; os estados corresponderão ao total de dinheiro inserido na máquina até ao momento. O estado inicial será então o estado 0$00 e os estados finais todos aqueles que correspondem a uma quantidade D de dinheiro igual ou superior ao preço do café: . Quando se alcança um estado final D, serão despoletadas as seguintes duas acções (acções semânticas): dar o troco D - 80$00; preparar e dar o café. As acções semânticas são indicadas nos arcos do diagrama do autómato entre . O autómato cafe encontra-se descrito pelo seguinte programa Prolog: (não deixe de fazer o diagrama correspondente)
estadoInicial(cafe,0). estadoFinal(cafe,D) :- D >= 80, actua(D). actua(80) :- fazCafe. actua(D) :- daTroco(D), fazCafe. daTroco(D) :- T is D - 80, write('Troco = '), write(T), write('Esc.'), nl. fazCafe :- write('Espero que goste do cafe...'). delta(cafe,EC,10,PE) :- PE is EC + 10. delta(cafe,EC,20,PE) :- PE is EC + 20. delta(cafe,EC,50,PE) :- PE is EC + 50. delta(cafe,EC,M,_) :- % M e' uma moeda na~o aceite pela m'aquina D is EC + M, % D e' o dinheiro a devolver erro(D),!, % devolve moedas fail. % a sequencia de moedas na~o e' reconhecida erro(D) :- write('Fica com o teu dinheiro = '), write(D), write('Esc.'), nl.
Eis alguns exemplos de ``utilização da máquina de café'':
?- aceita(cafe,[50,50]). Troco = 20Esc. Espero que goste do cafe... Yes ?- aceita(cafe,[20,10,20,20,10]). Espero que goste do cafe... Yes ?- aceita(cafe,[20,100]). Fica com o teu dinheiro = 120Esc. No
Next: Simulação do funcionamento de Up: AFDs com acções semânticas Previous: AFDs com acções semânticas