lunes, 26 de octubre de 2009

Examen Unidad 1

Este es el codigo del analizador:

package analizador;
import java.io.*;
/**
*
* @author Miguel Falcon
*/
public class analizador {
public static void main(String args[]) throws IOException
{
String cadena;

try
{
BufferedReader n=new BufferedReader(new FileReader("C:/Users/Miguel Falcon/Desktop/cadenas.txt"));
while((cadena=n.readLine())!=null){
analizador(cadena);
}
}
catch(FileNotFoundException e)
{
System.out.println("No se encuentra el archivo");
}
}
public static void analizador(String palabra)
{
String cadena=palabra+'#';
int tam=cadena.length();
int matriz [][]=new int [5][4];
matriz [1][1]=2; matriz [1][2]=3; matriz [1][3]=90;
matriz [2][1]=2; matriz [2][2]=3; matriz [2][3]=100;
matriz [3][1]=2; matriz [3][2]=4; matriz [3][3]=100;
matriz [4][1]=4; matriz [4][2]=4; matriz [4][3]=90;
int fila=1, col=1;
try
{
for(int i=0;i{
if(cadena.charAt(i)=='a')
{
col = 1;
fila = matriz[fila][col];
}
if(cadena.charAt(i)=='b')
{
col = 2;
fila = matriz[fila][col];
}
if(cadena.charAt(i)=='#')
{
cadena=palabra;
col = 3;
if(matriz[fila][col]==100)
System.out.println(cadena+"\tPalabra Aceptada");
else
System.out.println(cadena+"\tPalabra No Aceptada");
}
}
}catch(ArrayIndexOutOfBoundsException exc){}
}
}

Este es el codigo de la instanciacion de la clase que contiene el analizador
y el codigo del boton y las cajas de texto para dirigir las impresiones de las validaciones:

clase_applet app = new clase_applet();
jTextField2.setText(app.analizador(jTextField1.getText()));

jueves, 15 de octubre de 2009

2do automata

package Applet;
 
/**
*
* @author Miguel Falcon
*/

/**

*Este es el codigo referente al analizador léxico que utilizamos para resolver el 2do autómata

*/


public class analApplet {
public String analizador(String palabra){
String cadena=palabra+'#';
String res = null;
int tam=cadena.length();
int arr1[][] = new int[4][5];
arr1[1][1]=2; arr1[1][2]=2; arr1[1][3]=3; arr1[1][4]=90;
arr1[2][1]=2; arr1[2][2]=2; arr1[2][3]=2; arr1[2][4]=100;
arr1[3][1]=3; arr1[3][2]=3; arr1[3][3]=3; arr1[3][4]=90;
 
int fila=1,col=1,a=0;
// try{
if(cadena.contentEquals("for#"))
{
fila=100;
a=tam;
}
if(cadena.equals("while#"))
{
fila=100;
a=tam;
}
if(cadena.equals("do#"))
{
fila=100;
a=tam;
}
if(cadena.equals("break#"))
{
fila=100;
a=tam;
}
for(int i=a;i

/*

*Este es el codigo que pertenece al botón, donde se crea la instanciacion de la clase de arriba

*y se manda por este medio el parámetro que analizara y el resultado a mostrar

*/
analApplet app = new analApplet();
jTextField2.setText(app.analizador(jTextField1.getText()));

martes, 13 de octubre de 2009

1er Codigo Analizador

package transiciones;

import java.io.*;
public class tarea
{
public static void main(String args[]) throws IOException
{
String cadena;


try
{

BufferedReader n=new BufferedReader(new FileReader("cadenas.txt"));
while((cadena=n.readLine())!=null){
comprueba(cadena);
}

}
catch(FileNotFoundException e)
{
System.out.println("No se encuentra el archivo");
}
}
public static void comprueba(String palabra)
{
String nuevacadena=palabra+'#';
int tam=nuevacadena.length();

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

int ren=0,col=0;
try
{
for(int i=0;i[menorque]tam;i++)
{
if(Character.isLetter(nuevacadena.charAt(i)))
{
col=0;
ren=matriz[ren][col];
}
if(Character.isDigit(nuevacadena.charAt(i)))
{
col=1;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='+')
{
col=2;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='*')
{
col=3;
ren=matriz[ren][col];
}
if(nuevacadena.charAt(i)=='#')
{
nuevacadena=palabra;
col=4;
if(matriz[ren][col]==100)
{
System.out.print(nuevacadena+"\tCadena Valida\n");
}
else
System.out.print(nuevacadena+"\tCadena Invalida\n");
}
}
}catch (ArrayIndexOutOfBoundsException exc){}
}
}

sábado, 19 de septiembre de 2009

Tutorial

Primeramente se tiene que compilar en un archivo vacio .java en NetBeans el código de la aplicación HolaMundo. Es recomendable que al momento de crear la aplicación en el proyecto, se desactive la opción de crear clase principal y después instanciar la clase para que pueda ejecutarse la compilación.
Una vez compilado, se dirige a la carpeta donde se encuentra guardado el proyecto, enseguida en la carpeta build>class y llegar al archivo de extensión .class.
Una vez que se tiene este archivo, se creará el archivo .html para que se ejecute como página web, para esto se abre el block de notas, y anota el siguiente código html:
(html)
(head)
(body)
(applet code="[ruta" width="[...]" height="[...]")
(/body)
(/head)
(/html)
Nota: Por fallas en la captura, todos los paréntesis del código, hacen referencia a los signos < >.
Una vez anotado el codigo, el archivo se guarda con extensión .html.
Ya hecho esto, solo se da click sobre el archivo .html para abrirlo y listo!!!

domingo, 30 de agosto de 2009

complejidad

La complejidad en los algoritmos computacionales, no hace otra cosa que estudiar, de manera teórica, los recursos requeridos durante el cómputo de un algoritmo para resolver un problema. Los recursos que son comúnmente estudiados son el tiempo (mediante una aproximación al número y tipo de pasos de ejecución de un algoritmo) y el espacio (mediante una aproximación a la cantidad de memoria utilizada para resolver un problema). De misma manera se pueden estudiar otros parámetros, tales como el número de procesadores necesarios para resolver el problema en paralelo.
Los problemas de decisión se clasifican en conjuntos de complejidad comparable llamados clases de complejidad.
La clase de complejidad P es el conjunto de los problemas de decisión que pueden ser resueltos en una máquina determinista en tiempo polinómico, lo que corresponde intuitivamente a problemas que pueden ser resueltos aún en el peor de sus casos.
La clase de complejidad NP es el conjunto de los problemas de decisión que pueden ser resueltos por una máquina no determinista en tiempo polinómico. Esta clase contiene muchos problemas que se desean resolver en la práctica, incluyendo el problema de satisfacibilidad booleana y el problema del viajante, un camino Hamiltoniano para recorrer todos los vértices una sola vez. Todos los problemas de esta clase tienen la propiedad de que su solución puede ser verificada efectivamente.
Esta complejidad se mide por medio de una función f(n) que da el tiempo y espacio de almacenamiento necesario para la ejecución del mismo. La n representa el tamaño de los datos de entrada. Dicho de otra manera, en lugar de calcular el tiempo exacto que tardará el algoritmo, se calcula la cantidad de operaciones en función del tamaño de la entrada (n).