Вы находитесь на странице: 1из 7

Lenguajes Y Autómatas Unidad 4: Maquinas De Turing

21/Abril/2018

INSTITUTO TECNOLOGICO DE NUEVO LEON


INGENIERIA EN SISTEMAS COMPUTACIONALES MODALIDAD
VIRTUAL

ALUMNO; JUAN PABLO JERONI

TUTOR; Ing. Fernando Ferrero Ramon

CORREO; fernando.ferrero@itnl.edu.mx

ALUMNO; Juan Pablo Jerónimo

CORREO; Pabloju86@gmail.com

MATERIA; Lenguaje Y Autómatas

UNIDAD 4; Maquinas De Turing

TEMA O ACTIVIDAD; Programa, Diagrama y matriz

NO CONTROL; 15480788
Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
PROGRAMA

1.- Haga un programa para una máquina de Turing que acepte cadenas de la forma a n bn |

n >= 1. Deje instalada la matriz de transición de la forma siguiente:

Maneje 3 matrices de 2 dimensiones para controlar el autómata:

La primera contiene el estado solamente en las casillas

La segunda contiene un carácter que determina si reescribe

o se deja el mismo carácter

Y la 3er. Matriz contiene un 1 si el avance es right

ó un 2 si el avance es left.

Maneje un ciclo principal controlando la longitud de la cadena a probar.

El archivo que suba contiene el código y diagrama de flujo además incluya también

.la matriz de transición

.y el autómata gráfico,

Lógica es similar al programa de la unidad anterior.

Cadenas que puede aceptar { ab, aabb, aaabbb, aaaabbbb,….}


Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
1.- Le envió el programa java funcionando

2.- El código del programa


import java.io.*;
import java.awt.Component;
import javax.swing.*;
import javax.swing.JOptionPane;
/*
* Juan Pablo Jeronimo
* Instituto Tecnologico De Nuevo Leon Modalidad Virtual
* Este programa nos permitira hacer una simulacion de la maquina de turing el cual su
* su fundamento principal es el anbn |»n=1
*/
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;
}
}
Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
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 números deseas que tenga la
cintilla?"));
cadenaCintilla = JOptionPane.showInputDialog("Dame los datos de la cintilla?");
// 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 posición
0?"));
// valor que pondra cuando aparezca }0
int poner0 = Integer.parseInt(JOptionPane.showInputDialog("Que valor quieres 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("Cuántos saltos de sea que de la posicón
1?"));
// valor que pondra cuando salga 1
int poner1 = Integer.parseInt(JOptionPane.showInputDialog("Que valor quieres poner cuando sea
1?"));

System.out.println("Valores de la cintilla");
for (int i=0; i<cuantos; i++)
{
System.out.print(cinta[i] + " ");
}
Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
String mensajeMov0="";
String mensajeMov1="";
System.out.println("\n");
System.out.println(" " + " movimiento" + " " + "salto" + " " + "colocar");
if (movimiento0==0)
mensajeMov0="DER";
else
mensajeMov0="IZQ";

if (movimiento1==0)
mensajeMov1="DER";
else
mensajeMov1="IZQ";

System.out.print("0 " + mensajeMov0 + " " + salto0 + " " + poner0 + "\n");
System.out.print("1 " + mensajeMov1 + " " + salto1 + " " + poner1 + "\n");

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;
}
Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
break;
}
}
}
if (indice < 0 )
// System.out.println("El programa fue ABORTADO");
JOptionPane.showMessageDialog(null, "El programa no término 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 resu = "";
for (int i=0; i<cuantos; i++)
{
System.out.print( cinta[i] + " ");
// System.out.print(cinta[i] + " ");
}
// JOptionPane.showMessageDialog(null, res, "Nuevos Resultados", JOptionPane.PLAIN_MESSAGE);

}
}
}

3.- El diagrama de flujo Java

4.- El autómata grafico


Lenguajes Y Autómatas Unidad 4: Maquinas De Turing
5.- La matriz de transición

Вам также может понравиться