SlideShare una empresa de Scribd logo
1 de 14
APLICACIONES DE PILAS
Estructuras de Datos
EXPRESIONES
 Una expresión aritmética:
 Conjunto de operadores, variables y paréntesis. Ejemplo:
 A+B
 Esta forma de escribir las expresiones: NOTACION INFIJA
 El operador siempre va en medio de los operandos
 En una expresión, las operaciones se “ejecutan” en un cierto orden
 A+B*C no es igual que (A+B)*C
 Cada operador tiene su nivel de precedencia, recordemos:
 Paréntesis : () Mayor prioridad
 Potencia : ^
 Multiplicación/división: *,/
 Suma/Resta : +,-* Menor Prioridad
NOTACIONES
 La notación infija es la mas popular
 No es la única forma, hay dos mas
 NOTACION PREFIJA(POLACA)
 +AB Aquí el operador va antes que los
operandos
 NOTACION POSFIJA(POLACA INVERSA)
 AB+ Aquí el operador va después que
los operandos
 No son nada difíciles, pero
 Siempre tener en cuenta la precedencia de
los operadores
 Ejemplo. Pasar a postfija las siguientes
expresiones:
 Agrupar como establece la precedencia
 (A+B)*C
 Convertir operación por operación
 La de mayor precedencia primero
 (AB+)*C
 La que le sigue en precedencia
 (AB+)C*
 Remover Paréntesis
 AB+C*
Ya no se necesitan
paréntesis
En postfija, el orden de los
operadores es el verdadero
orden de ejecución
A+B*C
(A+B)*C
 Agrupar como establece la precedencia
 A+(B*C)
 Convertir operación por operación
 La de mayor precedencia primero
 A+(BC*)
 La que le sigue en precedencia
 A(BC*)+
 Remover Paréntesis
 ABC*+
EJERCICIOS EN CLASE
 Convertir las siguientes expresiones a postfija y
prefija
 A*B/(A+C)
 A*B/A+C
 (A-B)^C+D
 A^B*C-D+E/F/(G+H)
 ((A+B) *C-(D-E))^(F+G)
EVALUACION DE
EXPRESIONES POSFIJAS
 Dadas
 AB+C*
 ABC*+
 Evaluelas, cuando A = 3, B = 4 y C = 5
 La primera, resultado : 35
 La segunda, resultado: 23
 Que algoritmo siguió para evaluar estas expresiones?
AB+C* ABC*+
A+B -> 7
7*C -> 35
B*C -> 20
20+A -> 23
7C* A20+
EVALUACION: ALGORITMO
 Con lo anterior, ya tenemos una idea de que hacer
 Deberíamos poder “recordar” c/operando de la expresion
 Si encontramos un operador
 Los dos últimos operandos recordados son los usados y “olvidados”
 El resultado de la operación, debe ser también “recordado”
 Así, hasta que la expresión termine
Podría ser un una pila
2 veces Pop
Push del
resultado en
la pila
ABC*+ C* B + A
A
B
C
C*B
EN PSEUDOCODIGO
Pila s;
PilaVacia(s);
while(no hayamos revisados toda la expresion)
{
simbolo = siguiente elemento
if(simbolo es un operando)
Push(s,simbolo);
else{
operando1 = Pop(s);
operando2 = Pop(s);
valor = resultado de operación simbolo entre
operando1 y operando2
Push(s,valor);
}
}
return(Pop(s));
EJERCICIO EN CLASE
 Dada la siguiente expresión:
 6 2 3+ - 3 8 2 / + * 2 ^ 3 +
 Simule la pila, para evaluar esta expresión
CONVERSION DE INFIJA A
POSFIJA
A + B * C - D A B C * + D -
El operador de mayor
precedencia en la expresión
será el primero en aparecer en
la conversión
A
El operador de
mayor
precedencia es el
primero en
aparecer en la
expresión
A es un operando,
es añadido
directamente a la
nueva expresión en
postfija
+
+ es un operador, pero,
hasta lo que vamos
revisando, no es el de
mayor prioridad, mejor,
guardarlo
* Es un operador. Si se
compara con el ultimo
recordado, el * tiene
mayor prioridad. Pero no
sabemos si tiene “la”
mayor prioridad de todos
aun. Mejor guardarlo
*
Comparado con el de mayor
prioridad hasta ahora(el *), el –
no tiene mayor prioridad.
Ahora si podemos decir, que el
* es el operador de mayor
prioridad
Podemos añadir el * a la nueva
expresion, y “olvidarnos” de el
Pero aun no podemos continuar. Seguimos
comparando el – con el de mayor prioridad
hasta ahora, el +. Como el – no tiene mayor
prioridad que el +, el + ya puede ser añadido
a la expresion. Como ya no queda mas en la
pila,
El – es definitivamente hasta ahora, el de
“mayor prioridad”, debemos recordarlo
-
Aquí terminamos de revisar la
expresión, símbolo por símbolo.
En la pila, quedan aun
operadores.
Todos se sacan y se añaden a
la nueva expresión
Así termina la conversión
B C* + D -
CONVERSION: ALGORITMO
 Cada símbolo de la expresión es revisado
 Si el símbolo es un operando,
 Se añade a la expresión
 Si el símbolo es un operador
 El símbolo es evaluado con respecto a su prioridad
 Si tiene mayor prioridad que el ultimo operador almacenado
 Aun no se puede decir nada, y se recuerda, es decir, se almacena en un pila
 Si tiene menor prioridad que el ultimo operador almacenado
 Quiere decir, que el ultimo operador almacenado es el de mayor prioridad sin lugar a
dudas
 El ultimo operador almacenado, se saca y se añade a la nueva expresión
 Esto sigue hasta que el operador que estamos revisando sea el de mayor prioridad de
todos los almacenados en la pila
 Una vez revisados todos los símbolos de la expresión
 Si hay algo almacenado en la pila, se saca y se añade a la nueva expresión
EN PSEUDOCODIGO
Pila s;
PilaVacia(&s);
while(no termine la expresion en infija)
{
simbolo = siguiente carácter de entrada;
if(simbolo es un operando)
añadir simbolo a la nueva expresion posfija
else{
while(simbolo tenga menor o igual precedencia que el tope de la pila)
{
simb_tope = pop(s);
añadir simb_tope a la nueva exp.
}
push(s,simbolo)
}
}
/*le da salida a los operadores restantes*/
while(!EstaVacia(s)){
simb_tope = pop(s);
añadir simb_tope a la nueva exp. posfija
}
Y CON PARENTESIS
 Lo anterior, es valido para conversión de expresiones sin
paréntesis
 Para resolver este problema, podemos seguir las siguientes
reglas:
 Los paréntesis izquierdos (
 Siempre van a ser añadidos a la pila, pase lo que pase
 Los paréntesis derechos )
 Significa que un ambiente de () ha sido terminado,
 Todos los operadores de la pila, se sacan, hasta encontrar un (
CON PARENTESIS: ALGORITMO
Pila s;
PilaVacia(s);
while(no termine la expresion en infija){
simbolo = siguiente carácter de entrada;
if(simbolo es un operando)
añadir simbolo a la nueva expresion posfija
else{
if(simbolo == ‘)’){
while(TRUE){
simb_tope = pop(s);
if (simb_tope == ‘)’ || EstaVacia(s)) break;
añadir simb_tope a la nueva exp.
}
}
else if(simbolo != ‘(‘){
while(simbolo tenga menor o igual precedencia que el tope de la pila)
simb_tope = pop(s);
añadir simb_tope a la nueva exp.
}
}
push(s,simbolo)
}
}
/*le da salida a los operadores restantes*/
while(!EstaVacia(s)){
simb_tope = pop(s);
añadir simb_tope a la nueva exp. posfija
}
EJERCICIO EN CLASE
 Usando el algoritmo, convertir
 ((A-(B+C))*D^(E+F)
 ABC+-D*EF+^

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

TABLA DE SÍMBOLOS
TABLA DE SÍMBOLOSTABLA DE SÍMBOLOS
TABLA DE SÍMBOLOS
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Programación 3: colas
Programación 3: colasProgramación 3: colas
Programación 3: colas
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Programación 3: listas enlazadas
Programación 3: listas enlazadasProgramación 3: listas enlazadas
Programación 3: listas enlazadas
 
Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4Arboles M-Way, 2-3 y 2-3-4
Arboles M-Way, 2-3 y 2-3-4
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
Búsqueda secuencial y binaria
Búsqueda secuencial y binariaBúsqueda secuencial y binaria
Búsqueda secuencial y binaria
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Normalizaciòn
NormalizaciònNormalizaciòn
Normalizaciòn
 
Estructuras de datos lineales
Estructuras de datos linealesEstructuras de datos lineales
Estructuras de datos lineales
 
Proyecto De Base De Datos
Proyecto De Base De DatosProyecto De Base De Datos
Proyecto De Base De Datos
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Estructura de Datos: Lista
Estructura de Datos: ListaEstructura de Datos: Lista
Estructura de Datos: Lista
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Arboles Binarios
Arboles BinariosArboles Binarios
Arboles Binarios
 
Pilas En C++
Pilas En C++Pilas En C++
Pilas En C++
 
Mapa Conceptual de Grafos
Mapa Conceptual de GrafosMapa Conceptual de Grafos
Mapa Conceptual de Grafos
 
Estructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colasEstructura de datos: lista, pilas y colas
Estructura de datos: lista, pilas y colas
 

Destacado

celdas galvanicas y electroliticas
celdas galvanicas y electroliticasceldas galvanicas y electroliticas
celdas galvanicas y electroliticasLestatcita
 
Motor eléctrico Ventajas y Aplicaciones DHTIC
Motor eléctrico Ventajas y Aplicaciones DHTICMotor eléctrico Ventajas y Aplicaciones DHTIC
Motor eléctrico Ventajas y Aplicaciones DHTICM4rvinsaurioRex
 
Aplicacion de los dispositivos electronicos en los
Aplicacion de los dispositivos electronicos en losAplicacion de los dispositivos electronicos en los
Aplicacion de los dispositivos electronicos en losgustavoasp
 
las pilas Andres Benitez
las pilas Andres Benitezlas pilas Andres Benitez
las pilas Andres Benitez1f manda
 
Importancia de las propiedades fisicoquimicas en la industria.
Importancia de las propiedades fisicoquimicas en la industria. Importancia de las propiedades fisicoquimicas en la industria.
Importancia de las propiedades fisicoquimicas en la industria. Laura Serena
 
Reducción de la contaminación de pilas y baterías
Reducción de la contaminación  de pilas y bateríasReducción de la contaminación  de pilas y baterías
Reducción de la contaminación de pilas y bateríasAnel Cristhell
 
concepto de pila, circuitos eléctricos con pilas
concepto  de pila, circuitos  eléctricos con pilasconcepto  de pila, circuitos  eléctricos con pilas
concepto de pila, circuitos eléctricos con pilasHector Ayala
 
Celdas galvanicas y electrolisis. macarena núñez f.
Celdas galvanicas y  electrolisis. macarena núñez f.Celdas galvanicas y  electrolisis. macarena núñez f.
Celdas galvanicas y electrolisis. macarena núñez f.La Maca
 
Presentación tipos de pilas y sus voltajes
Presentación tipos de pilas y sus voltajesPresentación tipos de pilas y sus voltajes
Presentación tipos de pilas y sus voltajesTimoteo Fagua Sanchez
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)Fuerza Auriazul
 

Destacado (20)

Tipos y aplicaciones de las pilas galvánicas
Tipos y aplicaciones de las pilas galvánicasTipos y aplicaciones de las pilas galvánicas
Tipos y aplicaciones de las pilas galvánicas
 
celdas galvanicas y electroliticas
celdas galvanicas y electroliticasceldas galvanicas y electroliticas
celdas galvanicas y electroliticas
 
CELDA GALVÁNICA
CELDA GALVÁNICACELDA GALVÁNICA
CELDA GALVÁNICA
 
Pilas Electroquímicas
Pilas ElectroquímicasPilas Electroquímicas
Pilas Electroquímicas
 
Motor eléctrico Ventajas y Aplicaciones DHTIC
Motor eléctrico Ventajas y Aplicaciones DHTICMotor eléctrico Ventajas y Aplicaciones DHTIC
Motor eléctrico Ventajas y Aplicaciones DHTIC
 
Python Securidad and Criptografia
Python Securidad and CriptografiaPython Securidad and Criptografia
Python Securidad and Criptografia
 
Aplicacion de los dispositivos electronicos en los
Aplicacion de los dispositivos electronicos en losAplicacion de los dispositivos electronicos en los
Aplicacion de los dispositivos electronicos en los
 
las pilas Andres Benitez
las pilas Andres Benitezlas pilas Andres Benitez
las pilas Andres Benitez
 
Importancia de las propiedades fisicoquimicas en la industria.
Importancia de las propiedades fisicoquimicas en la industria. Importancia de las propiedades fisicoquimicas en la industria.
Importancia de las propiedades fisicoquimicas en la industria.
 
Pilas de combustible SOFC
Pilas de combustible SOFCPilas de combustible SOFC
Pilas de combustible SOFC
 
Reducción de la contaminación de pilas y baterías
Reducción de la contaminación  de pilas y bateríasReducción de la contaminación  de pilas y baterías
Reducción de la contaminación de pilas y baterías
 
Celda galvanica
Celda galvanicaCelda galvanica
Celda galvanica
 
concepto de pila, circuitos eléctricos con pilas
concepto  de pila, circuitos  eléctricos con pilasconcepto  de pila, circuitos  eléctricos con pilas
concepto de pila, circuitos eléctricos con pilas
 
Celdas galvanicas y electrolisis. macarena núñez f.
Celdas galvanicas y  electrolisis. macarena núñez f.Celdas galvanicas y  electrolisis. macarena núñez f.
Celdas galvanicas y electrolisis. macarena núñez f.
 
Presentación tipos de pilas y sus voltajes
Presentación tipos de pilas y sus voltajesPresentación tipos de pilas y sus voltajes
Presentación tipos de pilas y sus voltajes
 
Tipos de pilas
Tipos de pilasTipos de pilas
Tipos de pilas
 
Producción de Pilas
Producción de PilasProducción de Pilas
Producción de Pilas
 
Flujo de electrones
Flujo de electronesFlujo de electrones
Flujo de electrones
 
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
METODOS DE ORDENACION ORDENAMIENTO Y BUSQUEDA (ALGORITMOS)
 
Electroquímica
ElectroquímicaElectroquímica
Electroquímica
 

Similar a 10. aplicaciones de las pilas

trabajo de matematicas
trabajo de matematicastrabajo de matematicas
trabajo de matematicassell123
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATEsell123
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATEsell123
 
3ra parte operaciones
 3ra parte operaciones 3ra parte operaciones
3ra parte operacionesyuli02
 
Lenguaje de programacion c++ basico 3ra parte operaciones
Lenguaje de programacion c++ basico 3ra parte operacionesLenguaje de programacion c++ basico 3ra parte operaciones
Lenguaje de programacion c++ basico 3ra parte operacionesDunkherz
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...luigiacarigua
 
TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++KatherinBarrios17
 
funciones lógicas
funciones lógicasfunciones lógicas
funciones lógicascar astete
 
Tipos de operadores para c++
Tipos de operadores para c++Tipos de operadores para c++
Tipos de operadores para c++Aquino1912
 

Similar a 10. aplicaciones de las pilas (20)

08 pilas1 t2018
08 pilas1 t201808 pilas1 t2018
08 pilas1 t2018
 
trabajo de matematicas
trabajo de matematicastrabajo de matematicas
trabajo de matematicas
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATE
 
TRABAJO DE MATE
TRABAJO DE MATETRABAJO DE MATE
TRABAJO DE MATE
 
Maria reyes
Maria reyesMaria reyes
Maria reyes
 
5 Expresiones
5 Expresiones5 Expresiones
5 Expresiones
 
3ra parte operaciones
 3ra parte operaciones 3ra parte operaciones
3ra parte operaciones
 
Lenguaje de programacion c++ basico 3ra parte operaciones
Lenguaje de programacion c++ basico 3ra parte operacionesLenguaje de programacion c++ basico 3ra parte operaciones
Lenguaje de programacion c++ basico 3ra parte operaciones
 
Tema2exceldecimos
Tema2exceldecimosTema2exceldecimos
Tema2exceldecimos
 
Teoria funciones Excel
Teoria funciones ExcelTeoria funciones Excel
Teoria funciones Excel
 
Guia de cobol
Guia de cobolGuia de cobol
Guia de cobol
 
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
Aprendiendo php my sql, javascript, css, html5 capitulo 4 expresiones y contr...
 
Funciones exel
Funciones exelFunciones exel
Funciones exel
 
Operadores de c_..
Operadores de c_..Operadores de c_..
Operadores de c_..
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
 
Operadores de c++
Operadores de c++Operadores de c++
Operadores de c++
 
TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++
 
TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++TIPOS DE OPERADORES PARA C++
TIPOS DE OPERADORES PARA C++
 
funciones lógicas
funciones lógicasfunciones lógicas
funciones lógicas
 
Tipos de operadores para c++
Tipos de operadores para c++Tipos de operadores para c++
Tipos de operadores para c++
 

10. aplicaciones de las pilas

  • 2. EXPRESIONES  Una expresión aritmética:  Conjunto de operadores, variables y paréntesis. Ejemplo:  A+B  Esta forma de escribir las expresiones: NOTACION INFIJA  El operador siempre va en medio de los operandos  En una expresión, las operaciones se “ejecutan” en un cierto orden  A+B*C no es igual que (A+B)*C  Cada operador tiene su nivel de precedencia, recordemos:  Paréntesis : () Mayor prioridad  Potencia : ^  Multiplicación/división: *,/  Suma/Resta : +,-* Menor Prioridad
  • 3. NOTACIONES  La notación infija es la mas popular  No es la única forma, hay dos mas  NOTACION PREFIJA(POLACA)  +AB Aquí el operador va antes que los operandos  NOTACION POSFIJA(POLACA INVERSA)  AB+ Aquí el operador va después que los operandos  No son nada difíciles, pero  Siempre tener en cuenta la precedencia de los operadores  Ejemplo. Pasar a postfija las siguientes expresiones:  Agrupar como establece la precedencia  (A+B)*C  Convertir operación por operación  La de mayor precedencia primero  (AB+)*C  La que le sigue en precedencia  (AB+)C*  Remover Paréntesis  AB+C* Ya no se necesitan paréntesis En postfija, el orden de los operadores es el verdadero orden de ejecución A+B*C (A+B)*C  Agrupar como establece la precedencia  A+(B*C)  Convertir operación por operación  La de mayor precedencia primero  A+(BC*)  La que le sigue en precedencia  A(BC*)+  Remover Paréntesis  ABC*+
  • 4. EJERCICIOS EN CLASE  Convertir las siguientes expresiones a postfija y prefija  A*B/(A+C)  A*B/A+C  (A-B)^C+D  A^B*C-D+E/F/(G+H)  ((A+B) *C-(D-E))^(F+G)
  • 5. EVALUACION DE EXPRESIONES POSFIJAS  Dadas  AB+C*  ABC*+  Evaluelas, cuando A = 3, B = 4 y C = 5  La primera, resultado : 35  La segunda, resultado: 23  Que algoritmo siguió para evaluar estas expresiones? AB+C* ABC*+ A+B -> 7 7*C -> 35 B*C -> 20 20+A -> 23 7C* A20+
  • 6. EVALUACION: ALGORITMO  Con lo anterior, ya tenemos una idea de que hacer  Deberíamos poder “recordar” c/operando de la expresion  Si encontramos un operador  Los dos últimos operandos recordados son los usados y “olvidados”  El resultado de la operación, debe ser también “recordado”  Así, hasta que la expresión termine Podría ser un una pila 2 veces Pop Push del resultado en la pila ABC*+ C* B + A A B C C*B
  • 7. EN PSEUDOCODIGO Pila s; PilaVacia(s); while(no hayamos revisados toda la expresion) { simbolo = siguiente elemento if(simbolo es un operando) Push(s,simbolo); else{ operando1 = Pop(s); operando2 = Pop(s); valor = resultado de operación simbolo entre operando1 y operando2 Push(s,valor); } } return(Pop(s));
  • 8. EJERCICIO EN CLASE  Dada la siguiente expresión:  6 2 3+ - 3 8 2 / + * 2 ^ 3 +  Simule la pila, para evaluar esta expresión
  • 9. CONVERSION DE INFIJA A POSFIJA A + B * C - D A B C * + D - El operador de mayor precedencia en la expresión será el primero en aparecer en la conversión A El operador de mayor precedencia es el primero en aparecer en la expresión A es un operando, es añadido directamente a la nueva expresión en postfija + + es un operador, pero, hasta lo que vamos revisando, no es el de mayor prioridad, mejor, guardarlo * Es un operador. Si se compara con el ultimo recordado, el * tiene mayor prioridad. Pero no sabemos si tiene “la” mayor prioridad de todos aun. Mejor guardarlo * Comparado con el de mayor prioridad hasta ahora(el *), el – no tiene mayor prioridad. Ahora si podemos decir, que el * es el operador de mayor prioridad Podemos añadir el * a la nueva expresion, y “olvidarnos” de el Pero aun no podemos continuar. Seguimos comparando el – con el de mayor prioridad hasta ahora, el +. Como el – no tiene mayor prioridad que el +, el + ya puede ser añadido a la expresion. Como ya no queda mas en la pila, El – es definitivamente hasta ahora, el de “mayor prioridad”, debemos recordarlo - Aquí terminamos de revisar la expresión, símbolo por símbolo. En la pila, quedan aun operadores. Todos se sacan y se añaden a la nueva expresión Así termina la conversión B C* + D -
  • 10. CONVERSION: ALGORITMO  Cada símbolo de la expresión es revisado  Si el símbolo es un operando,  Se añade a la expresión  Si el símbolo es un operador  El símbolo es evaluado con respecto a su prioridad  Si tiene mayor prioridad que el ultimo operador almacenado  Aun no se puede decir nada, y se recuerda, es decir, se almacena en un pila  Si tiene menor prioridad que el ultimo operador almacenado  Quiere decir, que el ultimo operador almacenado es el de mayor prioridad sin lugar a dudas  El ultimo operador almacenado, se saca y se añade a la nueva expresión  Esto sigue hasta que el operador que estamos revisando sea el de mayor prioridad de todos los almacenados en la pila  Una vez revisados todos los símbolos de la expresión  Si hay algo almacenado en la pila, se saca y se añade a la nueva expresión
  • 11. EN PSEUDOCODIGO Pila s; PilaVacia(&s); while(no termine la expresion en infija) { simbolo = siguiente carácter de entrada; if(simbolo es un operando) añadir simbolo a la nueva expresion posfija else{ while(simbolo tenga menor o igual precedencia que el tope de la pila) { simb_tope = pop(s); añadir simb_tope a la nueva exp. } push(s,simbolo) } } /*le da salida a los operadores restantes*/ while(!EstaVacia(s)){ simb_tope = pop(s); añadir simb_tope a la nueva exp. posfija }
  • 12. Y CON PARENTESIS  Lo anterior, es valido para conversión de expresiones sin paréntesis  Para resolver este problema, podemos seguir las siguientes reglas:  Los paréntesis izquierdos (  Siempre van a ser añadidos a la pila, pase lo que pase  Los paréntesis derechos )  Significa que un ambiente de () ha sido terminado,  Todos los operadores de la pila, se sacan, hasta encontrar un (
  • 13. CON PARENTESIS: ALGORITMO Pila s; PilaVacia(s); while(no termine la expresion en infija){ simbolo = siguiente carácter de entrada; if(simbolo es un operando) añadir simbolo a la nueva expresion posfija else{ if(simbolo == ‘)’){ while(TRUE){ simb_tope = pop(s); if (simb_tope == ‘)’ || EstaVacia(s)) break; añadir simb_tope a la nueva exp. } } else if(simbolo != ‘(‘){ while(simbolo tenga menor o igual precedencia que el tope de la pila) simb_tope = pop(s); añadir simb_tope a la nueva exp. } } push(s,simbolo) } } /*le da salida a los operadores restantes*/ while(!EstaVacia(s)){ simb_tope = pop(s); añadir simb_tope a la nueva exp. posfija }
  • 14. EJERCICIO EN CLASE  Usando el algoritmo, convertir  ((A-(B+C))*D^(E+F)  ABC+-D*EF+^