0% encontró este documento útil (0 votos)
423 vistas4 páginas

Maquina de Turing Java

Este documento presenta una clase Java que simula una máquina de Turing. Permite al usuario introducir una cadena binaria inicial y configurar los movimientos y cambios de estado para cada símbolo (0 y 1). Luego ejecuta los pasos de la máquina de Turing según la configuración proporcionada hasta completar la simulación o abortarla.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
423 vistas4 páginas

Maquina de Turing Java

Este documento presenta una clase Java que simula una máquina de Turing. Permite al usuario introducir una cadena binaria inicial y configurar los movimientos y cambios de estado para cada símbolo (0 y 1). Luego ejecuta los pasos de la máquina de Turing según la configuración proporcionada hasta completar la simulación o abortarla.
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

import import import import

java.io.*; java.awt.Component; javax.swing.JDialog; javax.swing.JOptionPane;

/** * Version: 1.0 * Uziel Esau Mercado * Instituto Tecnologico de Aguascalientes */ // este programa nos permite hacer una simulacin de la maquina de turing // la cual procesa datos binarios. public class maquinaTuring { public static int direccion(int dir) { int seleccion=-1; boolean errorAsignacion = true; while (errorAsignacion == true ) { seleccion = JOptionPane.showOptionDialog( null, "Selecciona la opcion para el movimiento "+dir, "Selector de opciones" , JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, // null para icono por defecto. new Object[] { "Avanzar", "Retroseder"}, // null para YES, NO y CANCEL "opcion 1"); if (seleccion != -1) { errorAsignacion = false; } else { errorAsignacion = true; } } return seleccion; } /** * */ public static void main (String [] args) throws IOException { boolean error = true; //Llenado de la cintilla. int cuantos=0; String cadenaCintilla=""; while (error == true) { cuantos=Integer.parseInt(JOptionPane.showInputDialog("Cuantos nmeros deseas que tenga la cintilla?")); cadenaCintilla = JOptionPane.showInputDialog("Dame los datos de la c intilla?"); // System.out.println(cuantos + " " + cadenaCintilla.length()); if (cuantos == cadenaCintilla.length()) error = false; else

{ error = true; JOptionPane.showMessageDialog(null, "No coloc los datos correctos ", "Datos Incorrectos", JOptionPane.ERROR_MESSAGE); } } int[] cinta = new int[cuantos]; int[] resultado = new int[cuantos]; for (int i=0; i<cuantos; i++) { cinta[i] = Integer.parseInt(cadenaCintilla.substring(i,i+1)); } int tipomov0 = -1; tipomov0 = JOptionPane.showOptionDialog(null, "Selecciona la opcion para el movimiento ","Selector de opciones" ,JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,null, // null para icono por defecto. new Object[] { "Avanza y modifica", "Modifica y avanza"}, // null para YES, NO y CANCEL "opcion 1"); // movimiento 0 int movimiento0 = direccion(0); System.out.println(movimiento0); // salto que tendr 0 int salto0=Integer.parseInt(JOptionPane.showInputDialog("Cuantos saltos desea que de la posicin 0?")); // valor que pondra cuando aparezca }0 int poner0 = Integer.parseInt(JOptionPane.showInputDialog("Que valor qui eres poner cuando sea 0?")); // movimiento 1 int tipomov1 = -1; tipomov1 = JOptionPane.showOptionDialog(null, "Selecciona la opcion para el movimiento ","Selector de opciones" ,JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,null, // null para icono por defecto. new Object[] { "Avanza y modifica", "Modifica y avanza"}, // null para YES, NO y CANCEL "opcion 1"); int movimiento1 = direccion(1); // salto que tendr 1 int salto1=Integer.parseInt(JOptionPane.showInputDialog("Cuntos saltos de sea que de la posicn 1?")); // valor que pondra cuando salga 1 int poner1 = Integer.parseInt(JOptionPane.showInputDialog("Que valor qui eres poner cuando sea 1?")); System.out.println("Valores de la cintilla"); for (int i=0; i<cuantos; i++) { System.out.print(cinta[i] + " "); } String mensajeMov0=""; String mensajeMov1=""; System.out.println("\n"); System.out.println(" " + " movimiento" + " " + "salto" + " ocar"); if (movimiento0==0) mensajeMov0="DER"; else mensajeMov0="IZQ";

" + "col

if (movimiento1==0) mensajeMov1="DER"; else mensajeMov1="IZQ"; System.out.print("0 " + poner0 + "\n"); System.out.print("1 " + poner1 + "\n"); // " + mensajeMov0 + " " + mensajeMov1 + " " + salto0 + " " + salto1 + "

int indice = 0; System.out.println(cinta.length); while (indice < cinta.length && indice >= 0) { for (int i=0; i<cinta.length; i++) { System.out.print(cinta[i] + " "); } switch (cinta[indice]) { case 0: { if (tipomov0 == 0) { if (movimiento0 == 0 ) indice = indice + salto0; else indice = indice - salto0; if (indice >=0 && indice < cinta.length) cinta[indice]=poner0; } else { cinta[indice]=poner0; if (movimiento0 == 0) indice = indice + salto0; else indice = indice - salto0; } break; } case 1: { if (tipomov1 == 0 ) { if (movimiento1 == 0) indice = indice + salto1; else indice = indice - salto1; if (indice >= 0 && indice < cinta.length ) cinta[indice]=poner1; } else { cinta[indice]=poner1; if (movimiento1 == 0) indice = indice + salto1; else

indice = indice - salto1; } break; } } } if (indice < 0 ) // System.out.println("El programa fue ABORTADO"); JOptionPane.showMessageDialog(null, "El programa no trmino porque fue ABORTADO", "Programa ABORTADO", JOptionPane.ERROR_MESSAGE); else { // System.out.println("Resultados Nuevos"); JOptionPane.showMessageDialog(null, "El programa ha FINALIZADO", "Nuevos Resultados", JOptionPane.PLAIN_MESSAGE); String res = ""; for (int i=0; i<cuantos; i++) { System.out.print( cinta[i] + " "); // System.out.print(cinta[i] + " "); } // JOptionPane.showMessageDialog(null, res, "Nuevos Resultados", JOptionP ane.PLAIN_MESSAGE); } }

También podría gustarte