Está en la página 1de 3

Practica 4: POO, Notación Postfija 1/ 3

PRACTICA 4: POO, NOTACIÓN POSTFIJA


Generalidades del Proyecto: Los seres humanos normalmente escriben las expresiones como 3 + 4 y
7 / 9, en el cual el operador (+ o /) se escribe entre los operandos (esto se conoce como notación infija).
Las computadoras prefieren la notación postfija, en la cual el operador se escribe a la derecha de sus
dos operandos. Las expresiones infijas anteriores aparecerían en notación postfija como 3 4 + y 7 9 /,
respectivamente.
Para evaluar una expresión infija compleja, un compilador primero convertiría la expresión a notación
postfija, y a continuación evaluaría la versión postfija de la expresión. Cada uno de estos algoritmos
requiere de una pasada de izquierda a derecha en la expresión.
Descripción del Proyecto: El proyecto consiste en hacer un programa que lleve a cabo lo siguiente:
1. Convertir una expresión infija aritmética válida como:
(6 + 2) * 5 - 8 / 4
a una expresión postfija. La expresión postfija de la expresión infija anterior es:
62+5*84/-
2. Evaluar la expresión postfija
3. Presentar el resultado en Sistema Decimal, Binario, Octal y Hexadecimal (Desarrollar los
algoritmos)
Los operandos deben de ser de varios dígitos sin punto decimal y las operaciones permitidas son:
+ Adición
- Substracción
* Multiplicación
/ División
% Módulo
Las estructuras que se van a manejar son:
1. Lista postfija en modo de Queue, que contiene la traducción del String de entrada infija a
postfija.
2. Lista operadores, en modo de Stack, que maneja los operadores del String de entrada infijo.
3. Lista operandos en modo de Stack, que maneja los operandos para la solución de la operación
postfija.
Modo de Operación:
El cliente puede dar una sola expresión infija o un archivo de expersiones infijas. El servidor debe
recibir la información del cliente y en caso de ser una sola expresión mandar al cliente el resultado de
su expresión postfija correspondiente y el resultado de realizar la expresión en notación decimal,
Practica 4: POO, Notación Postfija 2/ 3
binaria, octal y hexadecimal.
En caso de que el cliente mande un archivo de n expresiones infijas, el servidor debe regresar al cliente
un archivo en el que determine la expresión postfija y sus resultados en las cuatro notaciones, o en caso
de que sean inválidas las expresiones infijas, los mensajes de error que podrían contener dichas
expresiones.
El algoritmo para crear una expresión postfija es como sigue:
1. Si del String de entrada se lee un paréntesis izquierdo ‘(‘, éste debe insertarse a la lista de
operadores
2. Si del String de entrada se lee un paréntesis derecho ‘)’ se sacan de la lista de operadores todos
los operadores hasta encontrar un paréntesis izquierdo ‘(‘.
3. Si del String de entrada se lee un número, este se inserta en la lista postifija.
4. Si del String de entrada se un operador ‘+’, ‘-‘, ‘*’, ‘/’ o ‘%’:
a. Si es un operador de mayor prioridad, entra siempre al Stack sacando al operador de
igual prioridad que se encuentre en el Satck.
b. Si es un operador de menor prioridad, entre siempre al Stack sacando al operador de
mayor o igual prioridad que se encuentre en el Stack.
5. Si se termina de leer caracteres en la infija y quedan elementos en el Satck se añaden a la
postfija

Precedencia de operadores matemáticos u orden de cálculo

Operador Operación Precedencia

( ) Paréntesis Se evalúan primero. Si los paréntesis están anidados, la


expresión en el par más interno se evalúa primero. Si
existen varios pares de paréntesis en el mismo nivel, se
calcularán de izquierda a derecha.

*, /, % Multiplicación, división Se evalúan en segundo lugar. Si existen varios se


y módulo calcularán de izquierda a derecha.

+, - Suma, resta Se evalúan al último. Si existen varios se calcularán de


izquierda a derecha.

Su aplicación debe cumplir con lo siguiente:


1. Su diseño debe estar basado en orientado a objetos.
2. Los operandos pueden estar conformados por varios dígitos, deben ser enteros y los resultados
tambien deben ser enteros positivos o negativos. Las expresiones infijas pueden contener
errores.
3. Debe utilizarse manejo de archivos.
4. Debe utilizarse networking.
Practica 4: POO, Notación Postfija 3/ 3
Ejemplo:
String de Entrada: (6 + 2) * 5 - 8 / 4 Expresión Infija
8*5–8/4
40 – 8 / 4
Forma de resolver tomando en
40 – 2 cuenta la precedencia o jerarquía
38 operaciones

Para convertir una expresión infija a postfija de acuerdo al algoritmo se tiene:

Para obtener el resultado desde una expresión postfija:

El programa debe presentar un menú con las opciones a realizar:

También podría gustarte