sexta-feira, 7 de setembro de 2007

Poscomp 2002 -Q25 Fundamentos

Questão 25 Fundamentos 2002
25 Assinale quantas seqüências de caracteres a seguir são reconhecidas pelo automato abaixo as quatro seqüências de caracteres (separadas por vírgulas) são: 0, +567, -89.5, -3e3.


a) 0
b) 1
c) 2
d) 3
e) 4

Como podemos ver, temos um automato finito não determinístico, que reconhece uma string com sinal que representa um número inteiro (e ainda aceita a notação de números inteiros múltiplos de 10) ou seja, necessariamente precisa de sinal (passagem do estado A para o B), depois do sinal, obrigatoriamente precisa de ter algum algarismo (de B para C). No estado C temos 3 opções, continuar recebendo algarismos,(Loop), receber um caracter 'e' ou ainda ir para E [estado de aceitação, quando chega aqui, pode-se afirmar que a string é um número inteiro]. Caso ele va para D [se o estado "ler" um 'e'] ele precisa de ler um outro algarismo[D para E] para chegar ao estado de aceitação.

Vamos as sequências : 0 não vai ser identificado como inteiro, já que ele não tem sinal, nunca vai passar do A para o B. +567 o + passa o automato do A para o B, depois o 5 passa do B para o C, vai para o estado de aceitação e entra no loop 6 e 7. Terminou no estado de aceitação então é a primeira a ser reconhecida. -89.5, o - leva do A para o B, o 8 passa do B para o C, o 9 continua no C (Loop), mas o . (ponto) não permite o automato a ir para lugar algum. O -3e3, o - passa A para B, 3 do B para o C, o 'e' do C para o D, o outro 3 do D para o estado de aceitação E. O que nos deu 2 strings reconhecidas pelo automato :-) letra c)