Está en la página 1de 10

UNIVERSIDAD NACIONAL JORGE BASADRE

GROHMANN

FACULTAD DE INGENIERA- ESCUELA


ACADMICO PROFESIONAL DE INGENIERA EN
INFORMTICA Y SISTEMAS

PRACTICA N 02

AUTMATAS FINITOS
NOMBRE DEL CURSO:
DOCENTES :

Compiladores y Teora de Lenguaje

Ing. Deissy Valle Castro


Ing. Manuel Barraza

NOMBRES y APELLIDOS: Cristian Peralta Segura


CDIGO:
2013-39069
AO:
HORARIO:

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.

4.2.Construir un autmata finito que reconozca los nmeros mltiplos de 3.


La entrada ser en binario empezando por el dgito ms significativo. La
entrada tendr tamao indefinido, y puede empezar por ceros.
4.2.1. Nmero 15=1111 en binario

4.2.2. Nmero en binario

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.3. Cadena 1.3

5.1.4. Cadena -3.2

5.1.5. Cadena 6

5.1.6. Cadena ..4

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;
}

También podría gustarte