Luis Garcia STAFF TEAM
Mensajes : 64 Puntos : 112
| Tema: Programa de un automata Lun Mar 21, 2011 7:12 pm | |
| En este programa se muestra como implementar un automata, se utiliza un tipo de lógica abstracta con respecto a datos. Veamos: Se hará un programa que valide una cadena del lenguaje 10*1+0, (1,0). autómata: [Tienes que estar registrado y conectado para ver esa imagen]En un proyecto de tipo consola: Dentro de nuestra clase main crearemos una matriz: - Código:
-
// 0 1 int [,]estados=new int[,] { {-1, 1}, //0 --->filas representan los estados> { 1, 2}, //1 ->estado 1 { 3, 2}, //2 ->estado 2 { -1,-1} //3 ->estado 3 };
En esta matriz se puede observar que colocamos los posibles estados que nuestro lenguaje puede tener es decir, cada fila representa un estado y las dos columnas representan mis caracteres del lenguaje, en la primera fila tenemos que en el estado "0" el carácter "0" no lleva a ningún estado y representamos el error con "-1", en cambio si insertamos el carácter "1" seguiremos al estado 1, y así con los demás hasta llegar a nuestro estado de aceptación (el estado 3). - Código:
-
int estado=0,estadofinal=3;//estado 3 string cadena=""; Console.WriteLine("Introduce Una Cadena Del Lenguaje 10*1+0"); cadena=Console.ReadLine(); /*Lee la cadena introducida y valida caracter por caracter */
foreach(char i in cadena.ToCharArray()) { if( i=='0' || i=='1'){ if(estado==-1){break;}else{ estado=estados[estado,Convert.ToInt64(i)- '0' ]; }
/*Esta es la instrucción que le dará vida a la matriz y en si a todo el programa, la idea es simple asignar a que estado es el actual, tomando como valor el dato de la matriz*/
} } if(estado==estadofinal){Console.WriteLine("correcto");} else {Console.WriteLine("incorrecto ");} /* Se pregunta si se llego al estado de aceptacion*/ Console.ReadKey(true); // Espera una pulsación
Descarga: [Tienes que estar registrado y conectado para ver este vínculo]Mas ejemplos de autómatas utilizando el mismo procedimiento: [Tienes que estar registrado y conectado para ver este vínculo] | |
|