Evaluación de expresiones aritméticas mediante pilas Una expresión aritmética está formada por operandos y operadores. Así...
Así, si los operandos de la expresión anterior toman los valores: x=5, y=2, a=3, b=4, el resultado de la evaluación es: 5*...
Notación prefija y notación postfija de una expresión aritmética Para nuestro problema una expresión aritmética será un me...
Existen varias notaciones para representar expresiones aritméticas, que se diferencian en el orden en que se escriben los ...
La notación infija tiene el problema de que en expresiones con más de un operador existe ambiguedad sobre cual es el orden...
Dada la expresión AB+ se dice que está en notación POSTFIJA, y su nombre se debe a que el operador (+) esta después entre ...
Solamente se manejarán los siguientes operadores (Están dados ordenadamente de mayor a menor según su prioridad de ejecuci...
Las subexpresiones parentizadas tendrán más prioridad que cualquier operador. Obsérvese que no se trata el paréntesis dere...
<ul><li>Ejemplos </li></ul><ul><li>Dadas las siguientes expresiones, escribir las expresiones equivalentes en notación pos...
<ul><li>x + y – x * y (infija) </li></ul><ul><li>x+y-xy* </li></ul><ul><li>xy+-xy* </li></ul><ul><li>xy+xy*- (postfija) </...
Transformación de expresión infija a postfija Se parte de una expresión en notación infija que tiene operandos, operadores...
Los operadores se meten en la pila siempre que ésta esté vacía, o bien siempre que tengan mayor prioridad que el operador ...
Cuando se lee un paréntesis derecho hay que sacar todos los operadores de la pila pasando a formar parte de la expresión p...
<ul><li>Algoritmo de paso de notación infija a postfija </li></ul><ul><li>Obtener caracteres de la expresión y repetir los...
<ul><li>Si es paréntesis derecho: </li></ul><ul><li>4.1. Sacar operador cima de pila y pasarlo a la expresión postfija. </...
Evaluación de la expresión en notación postfija. Se almacena la expresión aritmética transformada a notación postfija en u...
<ul><li>Al describir el algoritmo el vector que contiene la expresión. El número de elementos de que consta la expresión e...
Notación prefija y notación postfija
Notación prefija y notación postfija
Próxima SlideShare
Cargando en…5
×

Notación infija postfija

35.338 visualizaciones

Publicado el

1 comentario
1 recomendación
Estadísticas
Notas
Sin descargas
Visualizaciones
Visualizaciones totales
35.338
En SlideShare
0
De insertados
0
Número de insertados
41
Acciones
Compartido
0
Descargas
615
Comentarios
1
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Notación infija postfija

  1. 1. Evaluación de expresiones aritméticas mediante pilas Una expresión aritmética está formada por operandos y operadores. Así la expresión x *y-(a+b) consta de los operadores *, -, + y de los operandos x, y, a, b. Los operandos pueden ser valores constantes, variables o incluso, otra expresión. Los operadores son los símbolos conocidos de las operaciones matemáticas. La evaluación de una expresión aritmética da lugar a un valor numérico, se realiza sustituyendo los operandos que son variables por valores concretos y ejecutando las operaciones aritméticas representadas por los operadores.
  2. 2. Así, si los operandos de la expresión anterior toman los valores: x=5, y=2, a=3, b=4, el resultado de la evaluación es: 5*2 – (3+4) = 5*2 – 7 = 10 – 7 = 3 La forma habitual de escribir expresiones matemáticas es aquella en la que el operador está entre dos operandos. La expresión anterior escrita de esa forma, recibe el nombre de notación infija. Esta forma de escribir las expresiones exige, en algunas ocaciones, el uso de paréntesis para encerrar subexpresiones con mayor prioridad, sin olvidar los niveles de prioridad y la asociatividad.
  3. 3. Notación prefija y notación postfija de una expresión aritmética Para nuestro problema una expresión aritmética será un medio que permite indicar el orden en que se deben realizar una serie de operaciones para obtener un resultado. Las operaciones se indican mediante operadores, que en nuestro caso representan las operaciones suma, resta, producto, división e igualdad, todas ellas operaciones binarias (necesitan exactamente dos argumentos para poderse evaluar).
  4. 4. Existen varias notaciones para representar expresiones aritméticas, que se diferencian en el orden en que se escriben los argumentos (operandos) de los operadores. Las más relevantes son: Notación infija : La notación habitual. El orden es primer operando, operador, segundo operando. Notación prefija : El orden es operador, primer operando, segundo operando. Notación postfija : El orden es primer operando, segundo operando, operador. Notación funcional : Se escribe el operador/función y despues, entre paréntesis, los operadores separados por comas.
  5. 5. La notación infija tiene el problema de que en expresiones con más de un operador existe ambiguedad sobre cual es el orden de evaluación. Por ejemplo, la expresión 8/4/2 se puede interpretar como (8/4)/2 o bien como 8/(4/2). Las otras notaciones no sufren este problema. Un problema interesante en computación es poder convertir expresiones en notación INFIJA a su equivalente en notacion POSTFIJA. Dada la expresión A+B se dice que está en notación INFIJA, y su nombre se debe a que el operador (+) esta entre los operadores (A y B).
  6. 6. Dada la expresión AB+ se dice que está en notación POSTFIJA, y su nombre se debe a que el operador (+) esta después entre los operadores (A y B). La ventaja de usar expresiones en notación polaca POSTFIJA radica en que no son necesarios los paréntesis para indicar orden de operación, ya que este queda establecido por ubicación de los operadores con respecto a los operandos. Para convertir una expresión dada en notación INFIJA a una notación POSTFIJA, deberán establecerse previamente ciertas condiciones
  7. 7. Solamente se manejarán los siguientes operadores (Están dados ordenadamente de mayor a menor según su prioridad de ejecución): operador prioridad dentro prioridad fuera de la pila de la pila ^ (potencia) 3 3 * , / 2 2 +, - 1 1 ( 0 4 Los operadores de mas alta prioridad se ejecutan primero. Si hubiera en una expresión dos o mas operadores de igual prioridad, entonces se procesarán de izquierda a derecha.
  8. 8. Las subexpresiones parentizadas tendrán más prioridad que cualquier operador. Obsérvese que no se trata el paréntesis derecho ya que este provoca sacar operadores de la pila hasta el paréntesis izquierdo.
  9. 9. <ul><li>Ejemplos </li></ul><ul><li>Dadas las siguientes expresiones, escribir las expresiones equivalentes en notación postfija: </li></ul><ul><li>a * b / a + c (infija) </li></ul><ul><li>ab*/a+c </li></ul><ul><li>ab*a/+c </li></ul><ul><li>ab*a/c+ (postfija) </li></ul><ul><li>a * b / (a + c) (infija) </li></ul><ul><li>a*b/ac+ </li></ul><ul><li>ab*/ac+ </li></ul><ul><li>ab*ac+/ (postfija) </li></ul>
  10. 10. <ul><li>x + y – x * y (infija) </li></ul><ul><li>x+y-xy* </li></ul><ul><li>xy+-xy* </li></ul><ul><li>xy+xy*- (postfija) </li></ul><ul><li>(a – b)^c +d (infija) </li></ul><ul><li>ab-^c+d </li></ul><ul><li>ab-c^+d </li></ul><ul><li>ab-c^d+ </li></ul><ul><li>a + b *c </li></ul><ul><li>a * (b + c) / d </li></ul><ul><li>(2 + (3 * 4)) = x </li></ul><ul><li>((2 + 3) * 4) = x </li></ul>
  11. 11. Transformación de expresión infija a postfija Se parte de una expresión en notación infija que tiene operandos, operadores y puede tener paréntesis. Los operandos vienen representados pos letras y los operadores son: ^, *, /, *, - La transformación se realiza utilizando una pila en la cual se almacenan los operadores y los paréntesis izquierdos. La expresión aritmética se va leyendo desde el teclado de izquierda a derecha, carácter a carácter, los operandos pasan directamente a formar parte de la expresión en postfija la cual se guarda en un arreglo.
  12. 12. Los operadores se meten en la pila siempre que ésta esté vacía, o bien siempre que tengan mayor prioridad que el operador de la cima de la pila (o bien si es la máxima prioridad). Si la prioridad es menor o igual se saca el elemento cima de la pila y se vuelve a hacer la comparación con el nuevo elemento cima. Los paréntesis izquierdos siempre se meten en la pila; dentro de la pila se les considera de mínima prioridad para que todo operador que se encuentra dentro del paréntesis entre en la pila.
  13. 13. Cuando se lee un paréntesis derecho hay que sacar todos los operadores de la pila pasando a formar parte de la expresión postfija, hasta llegar a un paréntesis izquierdo, el cual se elimina ya que los paréntesis no forman parte de la expresión postfija. El proceso termina cuando no hay más elementos de la expresión y la pila esté vacía.
  14. 14. <ul><li>Algoritmo de paso de notación infija a postfija </li></ul><ul><li>Obtener caracteres de la expresión y repetir los pasos 2 al 4 para cada carácter. </li></ul><ul><li>Si es un operando, pasarlo a la expresión postfija. </li></ul><ul><li>Si es operador: </li></ul><ul><li>3.1. Si pila está vacía, meterlo en la pila. Repetir a partir paso 1. </li></ul><ul><li>3.2. Si la pila no está vacía: </li></ul><ul><ul><ul><li>Si la prioridad del operador leído es mayor que la prioridad del operador cima de la pila, meterlo en la pila y repetir a partir del paso 1. </li></ul></ul></ul><ul><ul><ul><li>Si la prioridad del operador es menor o igual que la prioridad del operador de la cima, sacar operador cima de la pila y pasarlo a la expresión postfija, volver al paso 3. </li></ul></ul></ul>
  15. 15. <ul><li>Si es paréntesis derecho: </li></ul><ul><li>4.1. Sacar operador cima de pila y pasarlo a la expresión postfija. </li></ul><ul><li>4.2. Si nueva cima es paréntesis izq., suprimir elemento cima. </li></ul><ul><li>4.3. Si cima no es paréntesis izq., volver a 4.1 </li></ul><ul><li>4.4. Volver a partir del paso 1. </li></ul><ul><li>Si quedan elementos en la pila pasarlos a la expresión postfija. </li></ul><ul><li>Fin del algoritmo. </li></ul>
  16. 16. Evaluación de la expresión en notación postfija. Se almacena la expresión aritmética transformada a notación postfija en un vector, en la que los operandos están representados por variables de una sola letra. Antes de evaluar la expresión se requiere dar valores numéricos a los operandos. Una vez que se tiene los valores de los operandos, la expresión es evaluada. El algoritmo de evaluación utiliza una pila de operandos, en definitiva de números reales.
  17. 17. <ul><li>Al describir el algoritmo el vector que contiene la expresión. El número de elementos de que consta la expresión es n. </li></ul><ul><li>Examinar vector desde el elemento 1 hasta el n. repetir los pasos 2 y 3 para cada elemento del vector. </li></ul><ul><li>Si el elemento es un operando, meterlo en la pila. </li></ul><ul><li>Si el elemento es un operador, lo designamos por ejemplo con + </li></ul><ul><ul><ul><li>Sacar los dos elementos superiores de la pila, los denominamos con los identificadores x, y respectivamente. </li></ul></ul></ul><ul><ul><ul><li>Evaluar x + y; el resultado es z = x + y. </li></ul></ul></ul><ul><ul><ul><li>El resultado z, meterlo en la pila. </li></ul></ul></ul><ul><ul><ul><li>Repetir a partir del paso 1. </li></ul></ul></ul><ul><li>El resultado de la evaluación de la expresión está en el elemento cima de la pila. </li></ul><ul><li>Fin del algoritmo. </li></ul>
  18. 18. Notación prefija y notación postfija
  19. 19. Notación prefija y notación postfija

×