Sei sulla pagina 1di 10

TECNOLGICO DE ESTUDIOS SUPERIORES DE JOCOTITLN

INGENIERA EN SISTEMAS COMPUTACIONALES

LENGUAJES Y AUTOMATAS II

PRACTICA 1: NOTACION PREFIJA INFIJA Y POSTFIJA

A L U M N O: VCTOR JAVIER RAMREZ DAZ,

DOCENTE: ING ERIKA CORTES NAZAR

JOCOTITLN, ESTADO DE MXICO A 03 DE OCTUBRE DE 2017


RESUMEN
En el presente trabajo se aborda el tema sobre que es la notacin y los diferentes tipos
de notaciones que existen (infija, postfija, prefija), as como ejercicios sobre estas
notaciones esto para el proyecto en la materia de lenguajes y autmatas II de la carrera
de Ingeniera en Sistemas Computacionales, en el Tecnolgico de Estudios Superiores
de Jocotitln. Se presentan algunos conceptos de estos temas, as mismo las soluciones
de los errores de este tipo.

INDICE GENERAL
Resumen I
Introduccin..II
Marco Terico...II
Desarrollo..III
ConclusionesV
ReferenciasV

1
INTRODUCCION
La presente investigacin se refiere al tema de los diferentes tipos de notaciones y como
nos van ayudar en el compilador, estos en algn momento nos van a causar algn
conflicto a la hora de que se programen ya que en muchas ocasiones el desarrollador no
detecta ciertas inconsistencias de este tipo normalmente en los datos y se cree que se
ha desarrollado un buen compilador cuando no es as.
Hay que sealar que las posibles operaciones que puedan llegar hacer en nuestro
compilador y tomarlos en cuenta ya que en ocasiones solo se pueden hacer operaciones
de dos variables y necesitamos realizarlas de ms de 5 variables.

OBJETIVOS DE LA PRCTICA
El maestro nos pidi realizar una prctica, en la cual tendramos que identificar las
diferentes notaciones para poder desarrollar un programa en donde expliquemos este
concepto.
MARCO TEORICO
NOTACIONES
Las notaciones son una forma especial en la que se pueden expresar una expresin
matemtica y puedan ser de 3 formas: infija, prefija y posfija. Los prefijos, Pre - Pos - In
se refieren a la posicin relativa del operador con respecto a los dos operandos.

NOTACION INFIJA
Es la notacin comn de frmulas aritmticas y lgicas, en la cual se escriben los
operadores entre los operandos en que estn actuando (ej. 2 + 2). No es tan simple de
analizar por las computadoras, como la notacin prefija o la notacin postfija, aunque
muchos lenguajes de programacin la utilizan debido a su familiaridad.

NOTACION POSTFIJA
Como su nombre lo indica se refiere a que el operador ocupa la posicin despus de
los operandos sus caractersticas principales son: el orden de los operandos se
conserva igual que la expresin infija equivalente no utiliza parntesis ya que no es una
operacin ambigua.
Su principio es el de evaluar los datos directamente cuando se introducen y
manejarlos dentro de una estructura LIFO (Last In First Out), lo que optimiza
los procesos a la hora de programar.
Bsicamente la diferencias con el mtodo algebraico o notacin de infijo es que, al
evaluar los datos directamente al introducirlos, no es necesario ordenar la evaluacin
de los mismos, y que para ejecutar un comando, primero se deben introducir todos sus
argumentos, as, para hacer una suma 'a+b=c' el RPN lo manejara a b +, dejando el
resultado 'c' directamente.
2
-La operacin posfija no es exactamente lo inverso a la operacin prefija equivalente:
(A+B)*C AB+C*

NOTACION PREFIJA
Es una forma de notacin para la lgica, la aritmtica, y el lgebra. Su caracterstica
distintiva es que coloca los operadores a la izquierda de sus operandos sus
caractersticas principales son:
-Los operandos conservan el mismo orden que la notacin infija equivalente.
-No requiere de parntesis para indicar el orden de precedencia de operadores ya que
el es una operacin.
-Se evala de izquierda a derecha hasta que encontrmosle primer operador seguido
inmediatamente de un par de operandos.
-Se evala la expresin binaria y el resultado se cambia como un nuevo operando. Se
repite este hasta que nos quede un solo resultado.
DESARROLLO
Hay otros dos formatos de expresin muy importantes que, al principio, pueden no
parecer obvios. Considere la expresin infija A + B. Qu pasara si moviramos el
operador antes de los dos operandos? La expresin resultante sera + A B. Del mismo
modo, podramos mover el operador al final. Obtendramos A B +. Estas expresiones se
ven un poco extraas.

Estos cambios en la posicin del operador con respecto a los operandos crean dos
nuevos formatos de expresin, la notacin prefija y la notacin sufija (o postfija). La
notacin prefija requiere que todos los operadores precedan a los dos operandos sobre
los que actan. La notacin sufija, por otro lado, requiere que sus operadores
aparezcan despus de los operandos correspondientes. Algunos ejemplos ms
deberan ayudar a hacer esto un poco ms claro.

A + B * C se escribira como + A * B C en la notacin prefija. El operador de


multiplicacin aparece inmediatamente antes de los operandos B y C, denotando que el
* tiene precedencia sobre el +. El operador de adicin aparece entonces antes de la A y
del resultado de la multiplicacin.

En notacin sufija, la expresin sera A B C * +. Una vez ms, el orden de las


operaciones se conserva ya que el * aparece inmediatamente despus de la B y la C,
denotando que el * tiene precedencia, con el + apareciendo despus. Aunque los
operadores se movieron y ahora aparecen antes o despus de sus respectivos
operandos, el orden de cada operando se mantuvo exactamente igual en relacin con
los dems.

3
Expresin infija Expresin prefija Expresin sufija

A+B +AB AB+

A+B*C +A*BC ABC*+

Ahora considere la expresin infija (A + B) * C. Recuerde que en este caso, la notacin


infija requiere los parntesis para forzar que se lleve a cabo la adicin antes de la
multiplicacin. Sin embargo, cuando A + B fue escrito en notacin prefija, el operador de
adicin fue movido simplemente antes de los operandos, + A B. El resultado de esta
operacin se convierte en el primer operando para la multiplicacin. El operador de
multiplicacin se mueve delante de toda la expresin, dndonos * + A B C. Igualmente,
en notacin sufija A B + obliga a que la adicin ocurra primero. La multiplicacin se
puede hacer sobre ese resultado y el operando restante C. La expresin sufija correcta
es entonces A B + C *.

Considere nuevamente estas tres expresiones, como lo muestra la tabla siguiente. Ha


ocurrido algo muy importante. A dnde se fueron los parntesis? Por qu no los
necesitamos en las notaciones prefija y sufija? La respuesta es que los operadores ya
no son ambiguos con respecto a los operandos sobre los que actan. Solamente la
notacin infija requiere los smbolos adicionales. El orden de las operaciones dentro de
las expresiones prefijas y sufijas est completamente determinado por la posicin del
operador y nada ms. De muchas maneras, esto hace que la notacin infija sea la
notacin menos deseable de usar.

Expresin infija Expresin prefija Expresin sufija

(A + B) * C *+ABC AB+C*

La siguiente tabla nos muestra algunos ejemplos adicionales de expresiones infijas y


las expresiones equivalentes en notaciones prefija y sufija. Asegrese de entender
cmo son equivalentes en trminos del orden de las operaciones que se estn
realizando.

4
Expresin infija Expresin prefija Expresin sufija

A+B*C+D ++A*BCD ABC*+D+

(A + B) * (C + D) *+AB+CD AB+CD+*

A*B+C*D +*AB*CD AB*CD*+

A+B+C+D +++ABCD AB+C+D+

Conversin de expresiones infijas a notaciones prefija y sufija


La primera tcnica que vamos a considerar utiliza la nocin de una expresin
completamente agrupada que se discuti anteriormente. Recordemos que A + B * C se
puede escribir como (A + (B * C)) para mostrar explcitamente que la multiplicacin tiene
precedencia sobre la adicin. Sin embargo, al observar ms de cerca, puede verse que
cada pareja de parntesis tambin indica el comienzo y el final de un par de operandos
con el operador correspondiente en la mitad.
Observe el parntesis derecho en la subexpresin (B * C) anterior. Si tuviramos que
mover el smbolo de multiplicacin a esa posicin y quitar el parntesis izquierdo
correspondiente, nos dara B C *, de hecho habramos convertido la subexpresin a
notacin sufija. Si el operador de adicin tambin es movido a la posicin de su
parntesis derecho correspondiente y se elimina el parntesis izquierdo que le
corresponde, se producira la expresin sufija completa

Traslado de operadores a la derecha para producir la notacin sufija

Si hacemos lo mismo pero en lugar de mover el smbolo a la posicin del parntesis


derecho, lo movemos a la izquierda, obtenemos la notacin prefija. La posicin de la
pareja de parntesis es en realidad una pista sobre la posicin final del operador
encerrado entre ellos.

Traslado de operadores a la izquierda para producir la notacin prefija.

As que, para convertir una expresin, independientemente de su complejidad, ya sea a


notacin prefija o a notacin sufija, agrpela completamente utilizando el orden de las
operaciones. A continuacin, mueva cada operador a la posicin correspondiente de los
5
parntesis izquierdo o derecho dependiendo de si desea obtener la expresin en
notacin prefija o en notacin sufija.
La siguiente es una expresin ms compleja: (A + B) * C - (D - E) * (F + G). El siguiente
esquema muestra la conversin a las notaciones sufija y prefija.

Conversin de una expresin compleja a notaciones prefija y sufija

-Conversin general de notacin infija a notacin sufija


la expresin infija es una cadena de smbolos delimitados por espacios. Los smbolos
de operaciones son *, /, + y -, junto con los parntesis izquierdo y derecho, ( y ). Los
smbolos de operandos son los identificadores de un solo carcter A, B, C, y as
sucesivamente. Los siguientes pasos producirn una cadena de smbolos en el orden
sufijo.

1. Crear una pila vaca llamada pilaOperadores para almacenar los operadores.
Crear una lista vaca para almacenar la salida.
2. Corvertir la cadena de entrada de notacin infija a una lista, usando el mtodo
split.
3. Recorrer la lista de smbolos de izquierda a derecha:
o Si el smbolo es un operando, agregarlo al final de la lista de salida.
o Si el smbolo es un parntesis izquierdo, enviarlo a pilaOperadores.
o Si el smbolo es un parntesis derecho, extraer de pilaOperadores hasta
que el correspondiente parntesis izquierdo se haya extrado. Agregar
cada operador al final de la lista de salida.
o Si el smbolo es un operador *, /, +, -, incluirlo en pilaOperadores. No
obstante, extraer previamente de la pila los operadores que tengan mayor
o igual precedencia y agregarlos a la lista de salida.
4. Cuando la expresin de entrada ha sido procesada completamente, verificar
pilaOperadores. Todos los operadores que an estn almacenados en ella se
deben enviar a la lista de salida.

La siguiente imagen muestra el algoritmo de conversin trabajando sobre la expresin


A * B + C * D. Observe que el primer operador * se elimina al verse el operador +.
Adems, el + permanece en la pila cuando aparece el segundo *, ya que la
multiplicacin tiene precedencia sobre la adicin. Al final de la expresin infija, se extrae
dos veces de la pila, eliminando ambos operadores y colocando el + como el ltimo
operador en la expresin sufija.

6
Conversin de A * B + C * D a notacin sufija

Para codificar el algoritmo en Python, usaremos un diccionario llamado precedencia


para almacenar los valores de precedencia para los operadores. Este diccionario
mapear cada operador a un entero que se pueda comparar con los niveles de
precedencia de otros operadores (hemos utilizado arbitrariamente los nmeros enteros
3, 2 y 1). El parntesis izquierdo recibir el valor ms bajo posible. De esta manera
cualquier operador que se compara con l tendr mayor precedencia y se colocar
encima de l. La lnea 15 define los operandos como cualquier carcter en maysculas
o dgito. La funcin de conversin completa se muestra en el ActiveCode 1.

A continuacin se muestran algunos ejemplos de ejecucin en la consola de Python.

>>> infija_a_sufija("( A + B ) * ( C + D )")

'A B + C D + *'

>>> infija_a_sufija("( A + B ) * C")

'A B + C *'

>>> infija_a_sufija("A + B * C")

'A B C * +'

>>>

CONCLUSIONES

7
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.

Desventajas

La adopcin casi universal de la notacin algebraica en los sistemas educativos


hace que no haya muchas razones prcticas inmediatas para que los alumnos
aprendan la notacin polaca inversa. No obstante, muchos estudiantes afirman
que, una vez aprendida, la notacin polaca inversa simplifica en gran manera el
clculo de expresiones complejas.
Es difcil usar la notacin polaca inversa al escribir a mano, dada la importancia
de los espacios para separar operandos. Se requiere un caligrafa muy clara
para evitar confundir, por ejemplo, 12 34+ (=46) de 123 4+ (=127) o 1 234+
(=235).
Las calculadoras RPN son relativamente raras. Forzado a usar una calculadora
algebraica, el usuario de una calculadora RPN tpicamente comete errores ms
frecuentemente debido a sus hbitos de uso normales. No obstante, esto no es
un problema tan grave en la actualidad, debido a que muchos sistemas
operativos pueden emular calculadoras RPN.

Es importante tener en cuenta que tanto en el programa de conversin de expresiones


sufijas como en el programa de evaluacin de expresiones sufijas asumimos que no
haba errores en la expresin de entrada. Utilizando estos programas como punto de
partida, usted puede fcilmente pensar cmo podra incluirse una deteccin de errores y
la generacin de informes

8
REFERENCIAS
https://compilador.wikispaces.com/Notacion+Infija,+Postfija,Perfija+y+Polaca
https://prezi.com/z4-i3-1pjvf0/lenguajes-y-automatas-ii/

Potrebbero piacerti anche