Autômato Finito
AutomatoFinito(estado, entrada, MatrizTransiçao, MatrizAçao) =>
execução do diagrama de estados
Matriz
de transições
| estados\entradas |
1 |
2 |
3 |
4 |
5 |
| ligado | |||||
| preparo |
espera | ligado | |||
| espera |
|||||
| ligado |
ligado | ||||
| operação |
Matriz
de ações
| estados\entradas |
1 |
2 |
3 |
4 |
5 |
| LigaAparelho | |||||
| preparo |
espera | ligado | |||
| espera |
|||||
| ligado |
ligado | ||||
| operação |
ExecutarAcao(acao)
{
switch(acao) {
case 'LigaAparelho':
instruçaoA;
instruçaoF;
break;
case 'FazerAlgo':
instruçaoS;
instruçaoF;
instruçaoA;
instruçaoD;
break;
case 'OutraCoisa':
instruçaoX;
instruçaoY;
instruçaoZ;
break;
default:
executar ações se não foi alguma ação definida} }
Condições
=> entrada // pode ser tabela(s) de decisões
PegarEntrada
if (cond1) return 1;
if (cond2) return 2;
...
if (condn) return n;
return 99;
talvez
ajude a pensar:
MatrizTransiçao + Tabela de decisões + Matriz de ações
| estados |
condição |
novo estado |
ações |
|
desligado
(inicio)
|
|
||
| 1 0 0 0 0 | espera |
|
|
| espera |
|
||
| 1 0 |
Ligado |
Informa: equipamento ligado | |
| 0 0 |
espera | Informa motivo de espera | |
| ligado (termino) |
|
||
| 0 0 |
Termina | Desligar Tomada |
|
| 0 1 |
espera | Informa motivo de espera |
|
| em operação |
|
||
| 0 . . . . . . . . 0 . . . . . . . . 1 . . . . . . . . 1 . . . . . . . . 1 . . . . . . . . 1 . . . . . . . . 1 . . . . . . . . 1 |
espera | Informa motivo de espera | |