# # Classe que modela os estados do automato # Autor: Douglas Rodrigues # class Estado # Estado de erro dos automaros @@ERRO = Estado.new # Método contrutor def initialize @transicoes = Hash.new end # Adiciona uma transicao no estado def adicionarTransicao (condicaoTransacao, proximoEstado) # Só adiciona se o estado atual não for o estado de erro if(self != @@ERRO)then @transicoes[condicaoTransacao] = proximoEstado end end def executarTransicao (condicaoTransacao) # Se estado atual for o estado de erro, permanece nele, ou se não existir transacao cadastrada. return @@ERRO if self == @@ERRO or not @transicoes.has_key? condicaoTransacao # Executa a transacao return @transicoes[condicaoTransacao] end end require 'estado.rb' estado0 = Estado.new estado1 = Estado.new estado0.adicionarTransicao '0', estado0 estado0.adicionarTransicao '1', estado1 estado1.adicionarTransicao '0', estado1 estado1.adicionarTransicao '1', estado0 estadoIteracao = estado0 estadoFinal = estado0 for c in (['0', '1', '0', '1', '0', '0']) estadoIteracao = estadoIteracao.executarTransicao c end puts estadoFinal == estadoIteracao