09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

17.2. Pilas 369<br />

El proceso descrito anteriorm<strong>en</strong>te para una función recursiva puede llevarse<br />

a cabo también para procedimi<strong>en</strong>tos recursivos. En el apartado de ejercicios se<br />

propone su g<strong>en</strong>eralización a un procedimi<strong>en</strong>to recursivo.<br />

Evaluación postfija de expresiones<br />

¿Quién no ha perdido algún punto por olvidarse un paréntesis realizando<br />

un exam<strong>en</strong>? Este hecho, sin duda, le habrá llevado a la sigui<strong>en</strong>te pregunta:<br />

¿No será posible eliminar estos molestos signos del ámbito de las expresiones<br />

aritméticas? La respuesta es afirmativa: existe una notación para escribir expresiones<br />

aritméticas sin usar paréntesis, esta notación recibe el nombre de notación<br />

postfija o notación polaca inversa.<br />

El adjetivo postfija o inversa se debe a que, <strong>en</strong> contraposición a la notación<br />

habitual (o infija) los operadores se pon<strong>en</strong> detrás de (y no <strong>en</strong>tre) los argum<strong>en</strong>tos.<br />

Por ejemplo, <strong>en</strong> lugar de escribir a + b se ha de escribir a b +, y <strong>en</strong> vez de<br />

a ∗ (b + c) se escribirá a b c + ∗.<br />

Para <strong>en</strong>t<strong>en</strong>der una expresión postfija hay que leerla de derecha a izquierda; la<br />

expresión anterior, por ejemplo, es un producto, si seguimos ley<strong>en</strong>do <strong>en</strong>contramos<br />

un +, lo cual indica que uno de los factores del producto es una suma. Sigui<strong>en</strong>do<br />

con la lectura vemos que tras el signo + aparec<strong>en</strong> c y b, luego el primer factor<br />

es b + c; finalm<strong>en</strong>te hallamos a, de donde la expresión infija del miembro de la<br />

izquierda es a ∗ (b + c).<br />

Aunque es probable que el lector no se <strong>en</strong>cu<strong>en</strong>tre a gusto con esta notación y<br />

comi<strong>en</strong>ce a añorar el uso de paréntesis, la v<strong>en</strong>taja de la notación postfija reside<br />

<strong>en</strong> que es fácilm<strong>en</strong>te implem<strong>en</strong>table <strong>en</strong> un computador, 3 al no hacer uso de<br />

paréntesis ni de reglas de preced<strong>en</strong>cia (esto es, conv<strong>en</strong>ios tales como que a ∗ b + c<br />

repres<strong>en</strong>ta (a ∗ b) + c y no a ∗ (b + c)).<br />

La figura 17.8 muestra gráficam<strong>en</strong>te el proceso de evaluación de la expresión<br />

2 4 ∗ 3 +. Más detalladam<strong>en</strong>te, haci<strong>en</strong>do uso de una pila, un computador<br />

interpretará esa expresión de la sigui<strong>en</strong>te forma:<br />

1. Al leer los dos primeros símbolos, 2 y 4, el computador aún no sabe qué<br />

ha de hacer con ellos, así que los pone <strong>en</strong> una pila.<br />

2. Al leer el sigui<strong>en</strong>te símbolo, ∗, saca dos elem<strong>en</strong>tos de la pila, los multiplica,<br />

y pone <strong>en</strong> ella su valor, 8.<br />

3. El sigui<strong>en</strong>te símbolo, 3, se coloca <strong>en</strong> la pila, pues no t<strong>en</strong>emos ningún operador<br />

que aplicar.<br />

3 De hecho, los compiladores de l<strong>en</strong>guajes de alto nivel traduc<strong>en</strong> las expresiones aritméticas a<br />

notación postfija para realizar las operaciones. Hay l<strong>en</strong>guajes que usan siempre notación postfija,<br />

como, por ejemplo, el l<strong>en</strong>guaje de descripción de página PostScript.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!