Next: Autómatos Finitos
Não-Deterministas Up: AFDs com acções
semânticas Previous: Simulação do
funcionamento de
Pretende-se criar um modelo, muito simplificado, que descreva o funcionamento de um multi-banco. Tal modelo deve permitir uma interacção como a que se segue.
?- aceita(mb,[cartao,codigo,levantar,5,aceitar]). Retire os seus 5000$00 Retire o talao Retire o seu cartao Volte sempre Yes ?- aceita(mb,[cartao,codigo,consultar,movimentos,aceitar]). Retire o talao de movimentos Retire o seu cartao Volte sempre Yes ?- aceita(mb,[cartao,codigo,consultar,interromper]). Retire o seu cartao Volte sempre Yes ?- aceita(mb,[cartao,codigo,consultar]). No ?- aceita(mb,[cartao,codigo,consultar,aceitar]). No
. Eis o programa Prolog.
% simulacao do funcionamento de um multibanco por um automato reactivo % versao simplificada: 19/Maio/1999 estadoInicial(mb,0). estadoFinal(mb,0). delta(mb,0,cartao,1). delta(mb,1,codigo,2). delta(mb,2,levantar,3). delta(mb,3,15,4). % 15 contos delta(mb,4,aceitar,0) :- msg(15), msg. delta(mb,3,10,5). % 10 contos delta(mb,5,aceitar,0) :- msg(10), msg. delta(mb,3,5,6). % 5 contos delta(mb,6,aceitar,0) :- msg(5), msg. delta(mb,2,consultar,7). delta(mb,7,saldo,8). delta(mb,8,aceitar,0) :- write('Retire o talao'), nl, msg. delta(mb,7,movimentos,9). delta(mb,9,aceitar,0) :- write('Retire o talao de movimentos'), nl, msg. delta(mb,_,interromper,0) :- % em qualquer estado, msg. % podemos sempre cancelar msg(D) :- write('Retire os seus '), write(D), write('000$00'), nl, write('Retire o talao'), nl. msg :- write('Retire o seu cartao'), nl, write('Volte sempre'), nl.