InicioCiencia EducacionMi primer Automata en java

Las tablas de transición de estados:

Son normalmente tablas de dos dimensiones. Hay dos formas comunes para construirlas.

La dimensión vertical: Indica los Estados Actuales,
La dimensión horizontal: indica eventos, y las celdas (intersecciones fila/columna) de la tabla contienen el siguiente estado si ocurre un evento (y posiblemente la acción enlazada a esta transición de estados)


En el siguiente código se muestra un autómata con su tabla de transición.
Tabla de Dos dimensiones: 
Mi primer Automata en java



Estados:



primer



el codigo esta elaborado en netbeans 6.9

package automatas;


public class Automata {

    int cont;
    boolean aceptada;/*para guardar los caratcteres y los va ir separando*/
    char [] car;

     public static void main(String[]args){
        Automata aut= new Automata();
        String cadena = "abab";
        aut.car=cadena.toCharArray();
        aut.inicio();
    }
     public void inicio (){ /*metodo*/
         cont = 0;
         aceptada = false;
         q0();/*irnos al codigo 0 */
     }
     public void q0(){
         System.out.println("En q0";/*imprimimos y decimos que estamos en q0*/
         if(cont < car.length){/*cuantos espacios tiene mi arreglo*/
             if(car[cont]=='a'){/*el arreglo car en el contador 0 lo vamos a comparar si es = a*/

             cont++;/*incrememnto mi contador*/
             q0();/*si no lo dejo en 0*/
             }else if (car[cont]=='b'){/*si es una b me muevo al q1*/
                 cont++;
                 q1();/*nos va a mover al estado uno*/
             }
             }


     }
     public void q1(){
     System.out.println("En q1";
         if(cont < car.length){/*cuantos espacios tiene mi arreglo*/
             if(car[cont]=='a'){/*el arreglo car en el contador 0 lo vamos a comparar si es = a*/

             cont++;
             q1();
             }else if (car[cont]=='b'){
                 cont++;
                 q2();/*nos va a mover al estado uno*/
             }
             }
     }
     public void q2(){
     System.out.println("En q2";
         if(cont < car.length){/*cuantos espacios tiene mi arreglo*/
             if(car[cont]=='a'){/*el arreglo car en el contador 0 lo vamos a comparar si es = a*/

             cont++;
             q2();
             }else if (car[cont]=='b'){
                 cont++;
                 q3();/*nos va a mover al estado uno*/
             }
             }
     }
     public void q3(){
     System.out.println("En q3 cadena aceptada";
     aceptada = true;/*que es aceptada*/
         if(cont < car.length){/*cuantos espacios tiene mi arreglo*/
             if(car[cont]=='a'){/*el arreglo car en el contador 0 lo vamos a comparar si es = a*/

             cont++;
             q3();
             }else if (car[cont]=='b'){
                 cont++;
                 qError();/*nos va a mover al estado uno*/
             }
             }
     }
     public void qError(){
     System.out.println("Error";
     aceptada = false;/*restablecemos nuestra bandera */
     return;/*regresamos*/
     }

}
automata





ESPERO LES SIRVA ESTE PEQUEÑO AUTÓMATA.

NOTA: el código esta bastante fácil, la cadena de caracteres se puede mostrar la que su profesor les pida o ustedes ingresen.

Explicación tabla y codigo
Estoy en q0 y llega una a me quedo en q0, si entra una b avanzo a q1
estoy en q1 y llega una a me quedo en q1, si entra una b avanzo a q2
Estoy en q2 y llega una a me quedo en q2, si entra una b avanzo a q3

Estoy en q3 y llega una a me quedo en q3, si entra una b avanzo a qerror

Estoy en qerror y llega cualquier instrucción me marca error

Datos archivados del Taringa! original
23puntos
1,814visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

p
princesitavs🇦🇷
Usuario
Puntos0
Posts2
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.