jueves, 22 de octubre de 2009

Automata de Examen =]

Instruccion:
Lenguaje sobre {0,1} en el que las palabras no vacias empiezen o terminen con 0.

Diagrama:


Tabla de Transiciones


Lo procedemos hacer como el anterior en el java class agregamos el siguiente codigo:

public class cod {
/**
*
* @author Gus
*/
public String st(String pal)
{
String nuca=pal+'&';
String resul=null;
int val=nuca.length();

int tt [][]=new int [4][4];
//[0] [1] fc[&]
tt[0][0]=2; tt[0][1]=1; tt[0][2]=100;
tt[1][0]=3; tt[1][1]=1; tt[1][2]=100;
tt[2][0]=2; tt[2][1]=2; tt[2][2]=200;
tt[3][0]=2; tt[3][1]=1; tt[3][2]=200;
int est=0,col=0;
try
{
for(int a=0; a*val; a++) //* signo menor que
{
if((nuca.charAt(a)=='0'))
{
col=0;
est=tt[est][col];
}
if((nuca.charAt(a))=='1')
{
col=1;
est=tt[est][col];
}


if(nuca.charAt(a)=='&')
{
nuca=pal;
col=2;
if(tt[est][col]==200)
{

resul="Palabra Valida";
}
else

resul="Palabra Invalida";
}
}
}
catch (ArrayIndexOutOfBoundsException exc){}
return resul;

}


}

y al boton del applet le agregamos el siguiente codigo:

JOptionPane.showMessageDialog(null,jTextField1.getText());
cod co = new cod();
jTextField2.setText(co.st(jTextField1.getText()));

Resultado



Segundo Automata (Tarea) ñ_ñ

Empezamos por

ER(-|l)(l|n|-)*

Lo que quiere decir el lenguaje regular es que el automata tiene que inicar con guion o letra y porteriormente con letra, numero o guion las veces que se desee.

Diagrama


Tabla de Tansiciones:



Este codigo el maestro lo pidio que lo hicieramos con un applet

Primer paso. El proyecto es igual como los que hemos hecho
segundo paso. Le damos clic derecho al paquete new y si no encontramos la opcion de JApplet Form, tenemos que darle en other, swing GUI Forms, JApplet Form, finish.

Tercer paso. Lo que hacemos aqui en el applet es que empezamos a arrastrar 2 label, 2 cajas de texto y un boton



Cuarto paso. Una vez creado la ventana del applet lo que procedemos hacer es agregar un java class en el cual va ir el siguiente codigo:

package autpak;

/**
*
* @author EsMy PrInCeSs
*/
public class automatiux {
public String pt(String pal)
{
String nuca=pal+'&';
String valor=null;
int val=nuca.length();

int tt [][]=new int [3][4];
//[a-z] [0-9] - fc[&]
tt[0][0]=1; tt[0][1]=2; tt[0][2]=1; tt[0][3]=100;
tt[1][0]=1; tt[1][1]=1; tt[1][2]=1; tt[1][3]=200;
tt[2][0]=2; tt[2][1]=2; tt[2][2]=2; tt[2][3]=100;
int est=0,col=0;
try
{
for(int a=0; a*val; a++) *= al signo menor que
{
if(Character.isLetter(nuca.charAt(a)))
{
col=0;
est=tt[est][col];
}
if(Character.isDigit(nuca.charAt(a)))
{
col=1;
est=tt[est][col];
}
if(nuca.charAt(a)=='-')
{
col=2;
est=tt[est][col];
}

if(nuca.charAt(a)=='&')
{
nuca=pal;
col=3;
if(tt[est][col]==200)
{

valor="Palabra Valida";
}
else

valor="Palabra Invalida";
}
}
}catch (ArrayIndexOutOfBoundsException exc){}
return valor;
}
}


Quinto paso. Lo que hacemos en la ventana del applet es programar el boton, le damos doble clic al boton y le ponemos el siguiente codigo:

JOptionPane.showMessageDialog(null,jTextField1.getText());
automatiux au = new automatiux();
jTextField2.setText(au.pt(jTextField1.getText()));

a pero eso si lo que nos debemos de serciorar es que tus jTextField sean los del numero que correspondan.




Primer Automata ñ_ñ

Holaaaa este es un trabajo que nos dejaron para la materia de Teoria de Computacion y aqui esta el codigo del primer automata.



Primero que nada abrimos el NetBeans en este caso en lo personal yo utilize el NetBeans IDE 6.5.1 .



Creamos un nuevo proyecto con el nombre que ustedes gusten y le deshabilitan las opciones de create main class y la de set as main project, le asignamos el nombre que nosotros querramos y le damos finish.



posteriormente lo que hacemos es en el pauqte que tenemos del proyecto le damos new y en la opcion de java package.



despies de hacer el paquete le damos clic derecho, new java class.



y este es el codigo:


package automat;
mport java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

/**
*
* @author Gus
*/
public class lenguaje_1 {
public static void main(String args[]) throws IOException
{
String cad;


try
{

BufferedReader entrada=new BufferedReader(new FileReader("lenguaje.txt"));
while((cad=entrada.readLine())!=null){
read(cad);
}

}
catch(FileNotFoundException e)
{
System.out.println("No se encuentra el archivo");
}
}
public static void read(String pa)
{
String nuca=pa+'&';
int lar=nuca.length();

int tt [][]=new int [7][5];
//[a-z] [0-9] + * FC(&)
tt[0][0]=1; tt[0][1]=1; tt[0][2]=3; tt[0][3]=3; tt[0][4]=90;
tt[1][0]=4; tt[1][1]=5; tt[1][2]=2; tt[1][3]=2; tt[1][4]=100;
tt[2][0]=1; tt[2][1]=1; tt[2][2]=6; tt[2][3]=6; tt[2][4]=90;
tt[3][0]=3; tt[3][1]=3; tt[3][2]=3; tt[3][3]=3; tt[3][4]=90;
tt[4][0]=4; tt[4][1]=4; tt[4][2]=4; tt[4][3]=4; tt[4][4]=90;
tt[5][0]=5; tt[5][1]=5; tt[5][2]=5; tt[5][3]=5; tt[5][4]=90;
tt[6][0]=6; tt[6][1]=6; tt[6][2]=6; tt[6][3]=6; tt[6][4]=90;

int est=0,col=0;
try
{
for(int a=0;a*lar;a++)el *significa menor que
{
if(Character.isLetter(nuca.charAt(a)))
{
col=0;
est=tt[est][col];
}
if(Character.isDigit(nuca.charAt(a)))
{
col=1;
est=tt[est][col];
}
if(nuca.charAt(a)=='+')
{
col=2;
est=tt[est][col];
}
if(nuca.charAt(a)=='*')
{
col=3;
est=tt[est][col];
}
if(nuca.charAt(a)=='&')
{
nuca=pa;
col=4;
if(tt[est][col]==100)
{
System.out.print(nuca+" Palabra Valida");
}
else
System.out.print(nuca +" Palabra Invalida");
}
}
}catch (ArrayIndexOutOfBoundsException exc){}
}

}