Documentos de Académico
Documentos de Profesional
Documentos de Cultura
GROHMANN
PRACTICA N 02
AUTMATAS FINITOS
NOMBRE DEL CURSO:
DOCENTES :
Tercero
7am-9am
AUTMATAS FINITOS
1.
2.
3.
4.
OBJETIVOS
FUNDAMENTO TERICO
PROCEDIMIENTO
ANLISIS DE RESULTADO
4.1.Se desea disear un dispositivo que, dada una cadena formada por
nmeros binarios, encuentre las ocurrencias de la palabra clave 1011 y
sirva de base para un recuento de sus apariciones. Ntese que si la
cadena fuera, por ejemplo, 0101011011011, se detectara dos
ocurrencias de la palabra clave (subrayadas), no considerando el 1 de
la sptima posicin como inicio de otra ocurrencia. Se pide construir el
Autmata Finito Determinista correspondiente.
5. INVESTIGACIN COMPLEMENTARIA
Disee un autmata finito que reciba una cadena y reconozca si esta es un
nmero del tipo flotante. Considere lo siguiente:
El alfabeto del autmata estar formado por los dgitos del 0 al 9, y signo
menos (-) y el punto decimal (.).
La cantidad ingresada puede ser positiva o negativa, adems puede ser o no
entera.
5.1.JFLAP
5.1.1. Cadena 3
5.1.2. Cadena -3
5.1.5. Cadena 6
5.2.En C++
#include<iostream.h>
#include<conio.h>
#include<string.h>
int simular_af(char c[]);
void main(void)
{
char op,cadena[50];
do
{
cout<<"\nIngrese la cadena a analizar: ";
cin>>cadena;
if (simular_af(cadena)==0)
cout<<"Error: Identificador no valido"<<endl;
else
cout<<"La cadena "<<cadena<<" es un identificador
valido"<<endl;
cout<<"Desea continuar? (S/N): "; cin>>op;
}while(op=='s'||op=='S');
}
int simular_af(char c[])
{
int pos=0;
int estado=0;
int longitud=strlen(c);
while((estado==0||estado==1)&&pos<longitud)
{
switch(estado)
{
case 0:
switch(c[pos])
{
case '-':
estado=1;
break;
case '0':
estado=1;
break;
case '1':
estado=1;
break;
case '2':
estado=1;
break;
case '3':
estado=1;
break;
case '4':
estado=1;
break;
case '5':
estado=1;
break;
case '6':
estado=1;
break;
case '7':
estado=1;
break;
case '8':
estado=1;
break;
case '9':
estado=1;
break;
default:
return 0;
};
break;
case 1:
if(c[pos]=='.')
estado=1;
else
{
switch(c[pos])
{
case '0':
estado=1;
break;
case '1':
estado=1;
break;
case '2':
estado=1;
break;
case '3':
estado=1;
break;
case '4':
estado=1;
break;
case '5':
estado=1;
break;
case '6':
estado=1;
break;
case '7':
estado=1;
break;
case '8':
estado=1;
break;
case '9':
estado=1;
break;
default:
return 0;
};
}
break;
default:
return 0;
};
pos++;
}
if(estado==1)
return 1;
else
return 0;
}