Você está na página 1de 5

ALGORITMO – “El caballo corre en el campo”

Iván Arturo Ramírez Rasgado – ISC


Lenguajes y Autómatas I
Instituto Tecnológico de Tapachula
ALGORITMO – “El caballo corre en el campo”

La siguiente aplicación detecta errores de tipo gramatical, tomando en este caso


como referencia la oración “El caballo corre en el campo”.
El programa funcionará de la siguiente manera, hablando en términos generales.
Se introducirá una oración y el programa determinará si la oración introducida está
correctamente escrita, tiene error de léxico (lenguaje), o si es error de Sintaxis, o
ambos.
La aplicación fue realizada en la plataforma NetBeans utilizando Java como
lenguaje de programación.
1.- DECLARACIÓN DE VARIABLES, CADENAS Y ARREGLOS A UTILIZAR.
String Palabras[]=new String [6]; ~ Arreglo que almancenará cada palabra por separado de la

oración original.

String Inputs[]=new String [6]; ~ Arreglo que almancenará las palabras ya separadas de la

cadena que ingrese el usuario.

String Entrada, ErrLex, ErrSint, MsjErr; ~ Cadenas para ingresar la oración por parte del usuario,

determinantes de error (Léxico y Sintáxis), y la última es


la cadena que almacenará el mensaje final para mostrar
al usuario.

int aux1=0, aux2=0, aux3=0, aux4=0, aux5=0, aux6=0,numErr; ~ Auxiliares para determinar si las

palabras ingresadas son correctas comparándolas con la oración original

2.- ASIGNACIÓN DE VALORES AL ARREGLO QUE SERVIRÁ COMO


REFERENCIA DE LAS PALABRAS INGRESADAS.
Se guardará en cada una de las primeras 6 casillas del arreglo Palabras, las
cadenas de texto que corresponden a la oración “El caballo corre en el campo”
dividido por palabras. La cual servirá de comparación contra la oración que ingrese
el usuario.

Palabras[0]="El";
Palabras[1]="caballo";
Palabras[2]="corre";
Palabras[3]="en";
Palabras[4]="el";
Palabras[5]="campo”;

Iván Arturo Ramírez Rasgado – ISC


Lenguajes y Autómatas I
Instituto Tecnológico de Tapachula
ALGORITMO – “El caballo corre en el campo”

3.- INTRODUCCIÓN DEL USUARIO, SEPARACIÓN DE LA CADENA,


TRANSFERENCIA A OTRO ARREGLO Y COMPARACIÓN HACIA LOS
AUXILIARES.

A continuación se le solicita al usuario que ingrese la oración, utilizando un


JOptionPane.showInputDialog y se guarda en la cadena Entrada , inmediatamente
después se utiliza la función Split(“ “) para que se separe la cadena por palabras y
corte cada vez que encuentre un espacio.

Entrada=JOptionPane.showInputDialog(null,"Introduzca la oración");

String[] bar = Entrada.split(" ");

Las separaciones realizadas por el comando Split se almacenaran en el arreglo


temporal bar, pero para ser llamados en algún otro método deben estar en un
arreglo dedicado, entonces transferimos los datos del arreglo temporal “bar” a el
arreglo Inputs.
Inputs[0]=bar[0];
Inputs[1]=bar[1];
Inputs[2]=bar[2];
Inputs[3]=bar[3];
Inputs[4]=bar[4];
Inputs[5]=bar[5];
A continuación se hace la comparativa, si las palabras ingresadas y separadas son
iguales a las palabras predeterminadas en la cadena “Palabras”, los auxiliares de
cada palabra toman el valor de “1”.

if (bar[0].equals(Palabras[0])){aux1=1;}
if (bar[1].equals(Palabras[1])){aux2=1;}
if (bar[2].equals(Palabras[2])){aux3=1;}
if (bar[3].equals(Palabras[3])){aux4=1;}
if (bar[4].equals(Palabras[4])){aux5=1;}
if (bar[5].equals(Palabras[5])){aux6=1;}

Iván Arturo Ramírez Rasgado – ISC


Lenguajes y Autómatas I
Instituto Tecnológico de Tapachula
ALGORITMO – “El caballo corre en el campo”

4.- DETERMINACIÓN DEL ERROR

Ponemos condicionales para determinar si hay o no hay error, y de qué tipo es.

La primera condicional indica que si todos los auxiliares están en 1, es decir, si todas
las palabras están escritas correctamente y en el orden adecuado, No se determina
ningún error.
if (aux1==1 && aux2==1 && aux3==1 && aux4==1 && aux5==1 && aux6==1)
{ numErr=0;
ErrLex="No";
ErrSint="No";
}

La siguiente condicional indica que si cualquiera de las 6 palabras se encuentra en cualquier


posición, es un error de sintáxis.
if (Inputs[0].equals(Palabras[1])||Inputs[0].equals(Palabras[3])||Inputs[0].equals(Palabras[5])
||Inputs[0].equals(Palabras[2])
||
Inputs[1].equals(Palabras[0])||Inputs[1].equals(Palabras[2])||Inputs[1].equals(Palabras[3])||Inputs[1].equals(Palabras
[4])||Inputs[1].equals(Palabras[5])
||
Inputs[2].equals(Palabras[0])||Inputs[2].equals(Palabras[1])||Inputs[2].equals(Palabras[3])||Inputs[2].equals(Palabras
[4])||Inputs[2].equals(Palabras[5])
||
Inputs[3].equals(Palabras[0])||Inputs[3].equals(Palabras[2])||Inputs[3].equals(Palabras[1])||Inputs[3].equals(Palabras
[4])||Inputs[3].equals(Palabras[5])
||
Inputs[4].equals(Palabras[0])||Inputs[4].equals(Palabras[2])||Inputs[4].equals(Palabras[3])||Inputs[4].equals(Palabras
[1])||Inputs[4].equals(Palabras[5])
||
Inputs[5].equals(Palabras[0])||Inputs[5].equals(Palabras[2])||Inputs[5].equals(Palabras[3])||Inputs[5].equals(Palabras
[4])||Inputs[5].equals(Palabras[1])

{ numErr=1;
ErrLex="No";
ErrSint="Si"; }

La última condicional indica que si ningún auxiliar marca 1, es decir, si las palabras no
coinciden para nada, ni en posición ni en lenguaje, se presentan ambos errores.

if (aux1!=1 && aux2!=1 && aux3!=1 && aux4!=1 && aux5!=1 && aux6!=1)
{ numErr=2;
ErrLex="Sí";
ErrSint="Sí";
}

Iván Arturo Ramírez Rasgado – ISC


Lenguajes y Autómatas I
Instituto Tecnológico de Tapachula
ALGORITMO – “El caballo corre en el campo”

INICIO

String Palabras[]=new String [6];


String Inputs[]=new String [6[;
String Entrada, ErrLex, ErrSint, MsjErr;
int aux1=0, aux2=0, aux3=0, aux4=0,
aux5=0, aux6=0,numErr;

Palabras[0]="El";
Palabras[1]="caballo";
Palabras[2]="corre";
Palabras[3]="en";
Palabras[4]="el";
Palabras[5]="campo";

Entrada=JOptionPane.showInputDialog(null,"Introduzca la oración");
String[] bar = Entrada.split(" ");

(aux1==1 && aux2==1 &&


aux3==1 && aux4==1 &&
aux5==1 && aux6==1)

numErr=0;
ErrLex="No";
ErrSint="No";
Inputs[0].equals(Palabras[1])||Inputs[0].equals(Pal
abras[3])||Inputs[0].equals(Palabras[5])
||Inputs[0].equals(Palabras[2])…….

||
Inputs[1].equals(Palabras[0])||Inputs[1].equals(Pal
abras[2])||Inputs[1].equals(Palabras[3])||Inputs[1]
numErr=1;
.equals(Palabras[4])||Inputs[1].equals(Palabras[5])
ErrLex="No";
|| ErrSint="Si";
Inputs[2].equals(Palabras[0])||Inputs[2].equals(Pal
abras[1])||Inputs[2].equals(Palabras[3])||Inputs[2]
.equals(Palabras[4])||Inputs[2].equals(Palabras[5])

|| (aux1!=1 && aux2!=1 &&


Inputs[3].equals(Palabras[0])||Inputs[3].equals(Pal aux3!=1 && aux4!=1 &&
abras[2])||Inputs[3].equals(Palabras[1])||Inputs[3] aux5!=1 && aux6!=1)
.equals(Palabras[4])||Inputs[3].equals(Palabras[5])

||
Inputs[4].equals(Palabras[0])||Inputs[4].equals(Pal numErr=2;
abras[2])||Inputs[4].equals(Palabras[3])||Inputs[4] ErrLex="Sí";
.equals(Palabras[1])||Inputs[4].equals(Palabras[5])
ErrSint="Sí";
||
Inputs[5].equals(Palabras[0])||Inputs[5].equals(Pal
abras[2])||Inputs[5].equals(Palabras[3])||Inputs[5]
MsjErr="Tu ingresaste:\n'"+Entrada+"'\n\nError de Léxico: "+ErrLex+"\nError De Sintaxis: "+ErrSint;
.equals(Palabras[4])||Inputs[5].equals(Palabras[1])
JOptionPane.showMessageDialog(null,MsjErr);

Iván Arturo Ramírez Rasgado – ISC


Lenguajes y Autómatas I FIN
Instituto Tecnológico de Tapachula

Você também pode gostar