Vous êtes sur la page 1sur 7

Shell de ejecucin y verificacin de sentencias matemticas Resumen: El siguiente proyecto describe el proceso para desarrollar una Shell que

permite reconocer y ejecutar sentencias matemticas validando su sintaxis para cada expresin, en este proyecto se primero se definir un lenguaje el cual incluir la definicin de las palabras pertenecientes al lenguaje mediante expresiones regulares para identificarlas, como por ejemplo: sin, cos, log, +, -, etc, para identificar las palabras se utilizara un autmata de pila determinista (AFD). El segundo paso ser transformar las expresiones de notacin infija a notacin posfija para finalmente evaluar la expresin usando una maquina posfija representado por un autmata de pila. La aplicacin ser implementada en lenguaje de programacin java y para el reconocimiento de las se utilizara un reconocedor lxico con el nombre de JFLEX que ara la funcin de autmata de finito determinista. Abstract: This project describes the process of developing a Shell to recognize and enforce judgments validating mathematical syntax for each expression, this Project will first define a language which will include the definition of words belonging to language using regular expressions to identify them as for example: sin, cos, log, +, -, etc., to identify the words used deterministic stack automata(DSA). The second step is to convert infix expressions to postfix notation to finally evaluate the postfix expression using a machine represented by a stack automaton. The application will be implemented in Java programming language and the recognition of the use of a lexicn recognizer JFLEX name Plowing function deterministic finite automaton. Indice. INTRODUCCION Un programa para el anlisis de expresiones matemticas presenta principalmente 2 dificultades, la primera es saber en qu notacin se recibir la entrada para ser analizada; este punto se considera importante por la razn de que la notacin utilizada presentara un ventaja al momento de analizar la expresin y tomando en cuenta esta condicin, la opcin que mejor facilita esta labor es utilizar notaciones posfijas. El segundo problema presente en el anlisis de expresiones matemticas est presente al momento de evaluar las variables, ya que al utilizar variables en las expresiones, se deben evaluar su sintaxis para detectar errores como por ejemplo la raz cuadrada de una variable cuando su valor es negativo.

Para poder solucionar estos problemas se utiliza una maquina postfija que evala expresiones en dicha notacin, esta mquina puede ser reemplazada por autmata de pila que ejecuta la misma funcin que adems de analizar la sintaxis arrojara el resultado de la expresin matemtica si este lo tuviera. Antecedente: 1. Java Mathematical Expression Parser (JEP). Descripcion: JEP fue diseado por NathanFunk. Estudiante graduado en Ciencias de la Computacin en la Universidad Alberta en Canad. JEP es un Java API (Interfaz de programacin de aplicaciones de Java) diseado para la evaluacin de expresiones matemticas. Las expresiones son pasadas como argumentos de tipo cadena (String) y pueden ser evaluadas instantneamente. Aporte: Uso de variables en las expresiones. Uso de funciones matemticas (seno, coseno, tangente, logaritmo, factorial, etc).

2. Paper: Una clase Parser en Java para evaluar expresiones algebraicas Descripcin: El artculo presenta una clase parser en Java para evaluar expresiones algebraicas empleando algoritmos fundamentales para la construccin de compiladores, pasando por la conversin de expresiones de infija a postfija, la evaluacin de expresiones en notacin postfija, el algoritmo de evaluacin por precedencia de operadores, el algoritmo parsing de precedencia y el algoritmo de construccin de funciones de precedencia. El objetivo del artculo es escribir un analizador lxico en un lenguaje convencional de programacin de sistemas, utilizando las posibilidades de entrada y salida del lenguaje Java para leer las expresiones a evaluar desde la entrada; procesarlas y enviar los resultados a la salida. Aporte: Utilizacin de notacin posfija. Utilizacin de maquina posfija

Realidad problemtica: En la actualidad los mtodos de analizar ecuaciones y expresiones matemtica se ven limitados al uso de calculadoras, o la misma intuicin personal, pero ya que la intuicin requiere experiencia y en muchos casos puede fallar y una calculadora de carcter cientfico tiene altos costos. Otro caso presente relacionado con este tema es de la educacin y las dificultades que se pueden presentar al momento de enseanza a los alumnos, las definiciones algebraicas y las funciones geomtricas presentan un alto grado de dificultad para el alumno que se inicia en las matemticas. Objetivos: Objetivos generales: Desarrollar un Shell de que permita ejecutar y verificar sentencias matemticas Objetivos especficos: Definir un lenguaje y sus palabras asociado a las sentencias matemticas. Implementar un autmata finito determinista que reconozca las palabras incluidas en la sentencia matemtica Implementar un algoritmo que transforme las expresiones matemticas de notacin infija a posfija. Implementar un autmata de pila que sirva de maquina posfija para el reconocimiento y ejecucin de las sentencias matemticas Marco Terico: Autmata Finito determinista: Es un modelo matemtico que realiza cmputos en forma automtica sobre una entrada para producir una salida. Este modelo est conformado por un alfabeto, un conjunto de estados y un conjunto de transiciones entre dichos estados. Su funcionamiento se basa en una funcin de transicin, que recibe a partir de un estado inicial una cadena de caracteres pertenecientes al alfabeto (la entrada), y que va leyendo dicha cadena

a medida que el autmata se desplaza de un estado a otro, para finalmente detenerse en un estado final o de aceptacin, que representa la salida. La finalidad de los autmatas finitos es la de reconocer lenguajes regulares, que corresponden a los lenguajes formales ms simples segn la Jerarqua de Chomsky. Formalmente, un autmata finito es una 5-tupla (Q, , q0, , F) donde:6

es un conjunto finito de estados; es un alfabeto finito; es el estado inicial; es una funcin de transicin; es un conjunto de estados finales o de aceptacin.

Autmata Finito Determinista:


Esun autmata finito que adems es un sistema determinista; es decir, para cada estado en que se encuentre el autmata, y con cualquier smbolo del alfabeto ledo, existe siempre a lo ms una transicin posible desde ese estado y con ese smbolo.

Formalmente, se define como una 5-tupla (Q, , q0, , F) donde:1


es un conjunto de estados; es un alfabeto; es el estado inicial; es una funcin de transicin; es un conjunto de estados finales o de aceptacin.

En un AFD no pueden darse ninguno de estos dos casos:


Que existan dos transiciones del tipo (q,a)=q1 y (q,a)=q2, siendo q1 q2; Que existan transiciones del tipo (q, ), donde es la cadena vaca, salvo que q sea un estado final, sin transiciones hacia otros estados.

Autmata de Pila:
Un autmata con pila, autmata a pila o autmata de pila es un modelo matemtico de un sistema que recibe una cadena constituida por smbolos de un alfabeto y determina si

esa cadena pertenece al lenguaje que el autmata reconoce. El lenguaje que reconoce un autmata con pila pertenece al grupo de los lenguajes libres de contexto en la clasificacin de la Jerarqua de Chomsky.

Formalmente, un autmata finito es una 5-tupla (Q, , q0, , F) donde:6


es un conjunto finito de estados; es un alfabeto finito; es el estado inicial; es una funcin de transicin; es un conjunto de estados finales o de aceptacin.

MQUINAS POSTFIJAS Una expresin postfija esta formada por una serie de operandos y operadores. Se evala usando una mquina postfija, en la forma siguiente: cuando se encuentra un operando, se apila en la pila; cuando se encuentra un operador, el nmero de operandos (segn el operador) son sacados de la pila; se realiza la operacin, y el resultado se apila de nuevo en la pila. Cuando la expresin postfija completa ha sido procesada, el resultado deber de ser el nico valor en la pila. Considere la expresin 1 + 5 * 2; que en notacin postfija es, La evaluacin es como sigue: el 1, el 5 y el 2 son apilados en ese orden, en la pila de operandos. Al leerse el operador de multiplicacin; el 2 y el 5 son desapilados, efectundose el producto de 2*5, siendo el resultado 10; ahora, 10 es metido a la pila. Continuando con el algoritmo; se lee en la entrada el operador de suma, por lo que 10 y 1 son sacados de la pila, procedindose a efectuar la suma entre estos; siendo el resultado 11; el cual es apilado nuevamente en la pila. En consecuencia el resultado de la evaluacin es 11. La figura 4, ilustra este hecho. JFlex: JFlex es una metacompilador que permite generar rpidamente analizadores lxicos que se integran con Java. Escrito por Gerwin Klein y Rgis Dcamps. Se dispondr de un fichero Jflex.jar, el cual contendr un clase Main, encargada

de Metacompilar nuestro programa .jflex de entrada; de esta manera, una invocacin tpica es de la forma: java JFlex.Main fichero.jflex Lo que generar un fichero Yylex.java que implementa al analizador lexicogrfico.

Notacion PosFija:
La Notacin Polaca Inversa, notacin de postfijo, o notacin posfija, (en ingls, Reverse polish notation, o RPN), es un mtodo algebraico alternativo de introduccin de datos. Su nombre viene por analoga con la relacionada notacin polaca, una notacin de prefijo introducida en 1920 por el matemtico polaco Jan Lukasiewicz, en donde cada operador est antes de sus operandos. En la notacin polaca inversa es al revs, primero estn los operandos y despus viene el operador que va a realizar los clculos sobre ellos. Tanto la notacin polaca como la notacin polaca inversa no necesitan usar parntesis para indicar el orden de las operaciones mientras la aridad del operador sea fija. Ventajas:
Los clculos se realizan secuencialmente segn se van introduciendo operadores, en vez de tener que esperar a escribir la expresin al completo. Debido a esto, se cometen menos errores al procesar clculos complejos. El proceso de apilacin permite guardar resultados intermedios para un uso posterior. Esta caracterstica permite que las calculadoras RPN computen expresiones de complejidad muy superior a la que alcanzan las calculadoras algebraicas. No requiere parntesis ni reglas de preferencia, al contrario que la notacin algebraica, ya que el proceso de apilamiento permite calcular la expresin por etapas. En las calculadoras RPN, el clculo se realiza sin tener que apretar la tecla "=" (aunque se requiere pulsar la tecla "Enter" para aadir cifras a la pila).

El estado interno de la calculadora siempre consiste en una pila de cifras sobre las que se puede operar. Dado que no se pueden introducir operadores en la pila, la notacin polaca inversa es conceptualmente ms sencilla y menos dada a errores que otras notaciones.

En trminos educativos, la notacin polaca inversa requiera que el estudiante comprenda la expresin que se est calculando. Copiar una expresin algebraica directamente a una calculadora sin comprender la aritmtica dar un resultado errneo.

Bibliografia: Una clase Parser en Java para evaluar expresiones algebraicas - Edgar Ruiz Lizama y Eduardo Raffo Lecca Simple(x) Numerical Formula Parser - Ralf Wirtz http://www.codeproject.com/KB/recipes/rwformulaparser.aspx MathParser - Math Formula Parser - Tamer Oz http://www.codeproject.com/KB/cs/MathParserLibrary.aspx Analisis del interpretador de expresiones matemticas: Java Mathematical Expression Parser (JEP) - EDWIN CAMILO CUBIDES GARZON Cmo evaluar expresiones matemticas en el computador? - Alexander Borbn A. http://www.cidse.itcr.ac.cr/revistamate/ContribucionesV7_n2_2006/Parseador/index.ht ml