Notacion Polanca

Notación polaca (PN), también conocida como notación polaca normal (NPN), La notación Łukasiewicz, la notación de Varsovia, la notación de prefijos en polaco o simplemente la notación de prefijos, es una notación matemática en la que los operadores preceden sus operandos, en contraste con la notación infija más común, en la que los operadores se colocan entre operandos, así como la notación polaca inversa (RPN), en la que los operadores siguen sus operandos. No necesita paréntesis siempre que cada operador tenga un número fijo de operandos. La descripción "Polaco" se refiere a la nacionalidad del lógico Jan Łukasiewicz, quien inventó la notación polaca en 1924.


El término notación polaca se toma a veces (como lo contrario de notación infija) para incluir también la notación polaca inversa.


Cuando los intérpretes de lenguajes de programación utilizan la notación polaca como sintaxis para expresiones matemáticas, se analiza fácilmente en árboles de sintaxis abstracta y, de hecho, puede definir una representación uno a uno para la misma. Debido a esto, Lisp (ver más abajo) y los lenguajes de programación relacionados definen su sintaxis completa en notación de prefijo (y otros usan notación de sufijo).


Explicación

La expresión para sumar los números 1 y 2 se escribe en notación polaca como + 1 2 (prefijo), en lugar de 1 + 2 (infijo). En expresiones más complejas, los operadores aún preceden a sus operandos, pero los operandos mismos pueden ser expresiones que incluyen de nuevo operadores y sus operandos. Por ejemplo, la expresión que se escribiría en notación infija convencional como


(5 −6) × 7

se puede escribir en notación polaca como


× 5 - 6 7

Asumiendo una aridad dada de todos los operadores involucrados (aquí "−" denota la operación binaria de resta, no la función unaria de cambio de signo), cualquier representación de prefijo bien formada es inequívoca, y los corchetes dentro de la expresión del prefijo son innecesarios. Como tal, la expresión anterior se puede simplificar aún más a


× 5 - 6 7

El procesamiento del producto se aplaza hasta que sus dos operandos estén disponibles (es decir, 5 menos 6 y 7). Al igual que con cualquier notación, las expresiones más internas se evalúan primero, pero en la notación polaca esta "innermost-ness" puede transmitirse mediante la secuencia de operadores y operandos en lugar de entre paréntesis.


En la notación de infijo convencional, se requieren paréntesis para anular las reglas de precedencia estándar, ya que, en referencia al ejemplo anterior, moverlos


5 - (6 × 7)

o eliminarlos


5 − 6 × 7

cambia el significado y el resultado de la expresión. Esta versión está escrita en notación polaca como


− 5 - × 6 7.

Cuando se trata de operaciones no conmutativas, como la división o la resta, es necesario coordinar la disposición secuencial de los operandos con la definición de cómo el operador toma sus argumentos, es decir, de izquierda a derecha. Por ejemplo, ÷ 10 5, con 10 a la izquierda de 5, tiene el significado de 10 ÷ 5 (léase "divide 10 entre 5"), o − 7 6, quedando 7 en 6, tiene el significado de 7 − 6 (léase como "restar de 7 el operando 6").




Notación polaca (PN), también conocida como notación polaca normal (NPN), La notación Łukasiewicz, la notación de Varsovia, la notación de prefijos en polaco o simplemente la notación de prefijos, es una notación matemática en la que los operadores preceden sus operandos, en contraste con la notación infija más común, en la que los operadores se colocan entre operandos, así como la notación polaca inversa (RPN), en la que los operadores siguen sus operandos. No necesita paréntesis siempre que cada operador tenga un número fijo de operandos. La descripción "Polaco" se refiere a la nacionalidad del lógico Jan Łukasiewicz, quien inventó la notación polaca en 1924.


El término notación polaca se toma a veces (como lo contrario de notación infija) para incluir también la notación polaca inversa.


Cuando los intérpretes de lenguajes de programación utilizan la notación polaca como sintaxis para expresiones matemáticas, se analiza fácilmente en árboles de sintaxis abstracta y, de hecho, puede definir una representación uno a uno para la misma. Debido a esto, Lisp (ver más abajo) y los lenguajes de programación relacionados definen su sintaxis completa en notación de prefijo (y otros usan notación de sufijo).


Explicación

La expresión para sumar los números 1 y 2 se escribe en notación polaca como + 1 2 (prefijo), en lugar de 1 + 2 (infijo). En expresiones más complejas, los operadores aún preceden a sus operandos, pero los operandos mismos pueden ser expresiones que incluyen de nuevo operadores y sus operandos. Por ejemplo, la expresión que se escribiría en notación infija convencional como


(5 −6) × 7

se puede escribir en notación polaca como


× 5 - 6 7

Asumiendo una aridad dada de todos los operadores involucrados (aquí "−" denota la operación binaria de resta, no la función unaria de cambio de signo), cualquier representación de prefijo bien formada es inequívoca, y los corchetes dentro de la expresión del prefijo son innecesarios. Como tal, la expresión anterior se puede simplificar aún más a


× 5 - 6 7

El procesamiento del producto se aplaza hasta que sus dos operandos estén disponibles (es decir, 5 menos 6 y 7). Al igual que con cualquier notación, las expresiones más internas se evalúan primero, pero en la notación polaca esta "innermost-ness" puede transmitirse mediante la secuencia de operadores y operandos en lugar de entre paréntesis.


En la notación de infijo convencional, se requieren paréntesis para anular las reglas de precedencia estándar, ya que, en referencia al ejemplo anterior, moverlos


5 - (6 × 7)

o eliminarlos


5 − 6 × 7

cambia el significado y el resultado de la expresión. Esta versión está escrita en notación polaca como


− 5 - × 6 7.

Cuando se trata de operaciones no conmutativas, como la división o la resta, es necesario coordinar la disposición secuencial de los operandos con la definición de cómo el operador toma sus argumentos, es decir, de izquierda a derecha. Por ejemplo, ÷ 10 5, con 10 a la izquierda de 5, tiene el significado de 10 ÷ 5 (léase "divide 10 entre 5"), o − 7 6, quedando 7 en 6, tiene el significado de 7 − 6 (léase como "restar de 7 el operando 6").


Notacion Polaca Inversa


La notación polaca inversa (en inglés, Reverse Polish Notation, o RPN), es una forma alternativa de escribir expresiones matemáticas. Por ejemplo, la expresión "20 - (4 + 3) * 2" en RPN es "20 4 3 + 2 * -".


Para evaluar una expresión en RPN, usamos una lista auxiliar (inicialmente vacía) y recorremos la expresión de izquierda a derecha. Cada vez que encontramos un número, lo añadimos a la lista auxiliar. Cuando encontramos un operador, retiramos los dos números que hay al principio de la pila, utilizamos el operador con ellos y los quitamos de la lista y le añadimos el resultado. Cuando alcancemos el final de la expresión, debemos tener un solo número en la lista auxiliar si la expresión estaba bien formada, y éste representa el resultado de la expresión.

Comentarios

Entradas más populares de este blog

Ejercicio de acciones semánticas de un analizador sintáctico

Arboles de expresiones