Académique Documents
Professionnel Documents
Culture Documents
Ir a la navegaci�nIr a la b�squeda
Para el manejo de los datos cuenta con dos operaciones b�sicas: apilar (push), que
coloca un objeto en la pila, y su operaci�n inversa, retirar (o desapilar, pop),
que retira el �ltimo elemento apilado.
Por analog�a con objetos cotidianos, una operaci�n apilar equivaldr�a a colocar un
plato sobre una pila de platos, y una operaci�n retirar equivaldr�a a retirarlo.
�ndice
1 Historia
2 Pila como tipo abstracto de datos
2.1 Operaciones
3 Pilas Hardware
4 Arquitectura b�sica de una pila
5 Soporte de Hardware
6 Soporte de Software
7 Expresi�n de evaluaci�n y an�lisis sint�ctico
8 Implementaci�n en aplicaciones inform�ticas
9 Tiempo de ejecuci�n de la gesti�n de memoria
10 Solucionar problemas de b�squeda
11 Seguridad
12 V�ase tambi�n
13 Enlaces externos
Historia
El m�todo de pila para la evaluaci�n de expresiones fue propuesto en 1955 y dos
a�os despu�s patentado por Friedrich L. Bauer, qui�n recibi� en 1988 el premio
"IEEE Computer Society Pioneer Award" por su trabajo en el desarrollo de dicha
estructura de datos.
Operaciones
Habitualmente, junto a las dos operaciones b�sicas de apilar y desapilar (push,
pop), las pilas puede implementar otra serie de funciones:
Otro tipo de estructura de datos es la cola (FIFO, del ingl�s First In First Out),
�primero en entrar, primero en salir�.
Pilas Hardware
Un uso muy com�n de las pilas a nivel de arquitectura hardware es la asignaci�n de
memoria.
Una pila ocupar�a un bloque de celdas de memoria, con una direcci�n de origen, un
espacio reservado para la acumulaci�n de datos y un puntero que apunta al �ltimo
dato incorporado. La estructura que adopte una pila puede ser muy variada:
almacenando datos en direcciones crecientes o decrecientes, con capacidad de
almacenamiento flexible, con punteros que apunten al �ltimo elemento o a la
posici�n que deber� ocupar el pr�ximo elemento que se incorpore� En cualquier caso,
quedar� definida por su algoritmo: �ltimo en entrar, primero en salir.
Soporte de Hardware
Muchas CPUs tienen registros que se pueden utilizar como punteros de pila. Algunas,
como Intel x86, tienen instrucciones especiales que impl�citan el uso de un
registro dedicado a la tarea de ser un puntero de pila. Otras, como DEC PDP-11 y de
la familia 68000 de Motorola tienen que hacer frente a los modos de hacer posible
la utilizaci�n de toda una serie de registros como un puntero de pila. La serie
Intel 80x87 de coprocesadores num�ricos tiene un conjunto de registros al que se
puede acceder ya sea como una pila o como una serie de registros numerados. Algunos
microcontroladores, por ejemplo algunos PICs, tienen un fondo fijo de pila que no
es directamente accesible. Tambi�n hay una serie de microprocesadores que aplican
una pila directamente en el hardware:
Soporte de Software
En programas de aplicaci�n escrito en un lenguaje de alto nivel, una pila puede ser
implementada de manera eficiente, ya sea usando vectores o listas enlazadas. En
LISP no hay necesidad de aplicar la pila, puesto que las funciones apilar y
desapilar est�n disponibles para cualquier lista. Adobe PostScript tambi�n est�
dise�ada en torno a una pila que se encuentra directamente visible y manipuladas
por el programador. El uso de las pilas est� muy presente en el desarrollo de
software por ello la importancia de las pilas como tipo abstracto de datos.
En notaci�n postfija: 1 2 + 4 * 3 +
Forth utiliza dos pilas, una para pasar argumentos y una subrutina de direcciones
de retorno. El uso de una pila de retorno es muy com�n, pero el uso poco habitual
de un argumento para una pila legible para humanos es el lenguaje de programaci�n
Forth raz�n que se denomina una pila basada en el idioma.
Algunos lenguajes de programaci�n utilizar la pila para almacenar datos que son
locales a un procedimiento. El espacio para los datos locales se asigna a los temas
de la pila cuando el procedimiento se introduce, y son borradas cuando el
procedimiento termina. El lenguaje de programaci�n C es generalmente aplicado de
esta manera. Utilizando la misma pila de los datos y llamadas de procedimiento
tiene importantes consecuencias para la seguridad (ver m�s abajo), de los que un
programador debe ser consciente, a fin de evitar la introducci�n de graves errores
de seguridad en un programa.