procomp001

6

Upload: elmer-zambrano

Post on 21-Mar-2016

212 views

Category:

Documents


0 download

DESCRIPTION

Revista Digital, primer articulo. LA PILA (informatica).

TRANSCRIPT

Editorial El tema central que Procomp presenta en este número,concentra el interes de un conjunto de disciplinas de losdiversos campos de la programación y ejecución de pro-gramas que prestan su funcionamiento hoy en día.Analizar el uso de las estructuras de datos, como lo es lapila, y su distinción de un minucioso conocimiento de todas las dimensiones que comprende el tema, y un fuertecompromiso y responsabilidad de los distintos posibles hechos en los que estaspueden ser empleadas, su formulación dentro de la programación y su comporta-miento dentro del lenguaje.

Los puntos seleccionados dan cuenta de diversas realidades, modalidades deabordajes y enfoques a atender en lo que respecta al conocimiento de una impor-tante estructura de datos, y priorizar un tema que constituye un parte fundamentalen la construcción y desarrollo de un lenguaje programable adecuado. Se encuen-tran presentes la presentacion, desde sus propias características particulares, perofundamentalmente desde un marco conceptual de desarrollo, construyendo mejo-ras dentro del proceso de lo que es la programacion, y la posibilidad de mejorar eltrabajo programable dentro del ambiente o lenguaje en el cual se esta utilizando.

La direccionalidad de la acción que realiza la estructura, se encuentra sustentadano sólo en los marcos teóricos, sino fundamentalmente en marcos de campo,queresguardan la importancia y la eficacia de la pila.

- Elmer Zambrano

La Pila¿Que es la Pila?

Una pila es una estructura de datos a la cual sepuede acceder solo por un extremo de la misma.Las operaciones de inserción y extracción serealizan a través del tope, por lo cual no se puedeacceder a cualquier elemento de la pila. Se le suelellamar estructura L.I.F.O. como acrónimo de laspalabras inglesas "last in, first out" (último enentrar, primero en salir). La pila se considera ungrupo ordenado de elementos, teniendo en cuentaque el orden de los mismos depende del tiempoque lleven "dentro" de la estructura.

Las pilas son frecuentemente utilizadas en eldesarrollo de sistemas informáticos y software engeneral. Por ejemplo, el sistema de soporte entiempo de compilación y ejecución del Pascal utilizauna pila para llevar la cuenta de los parámetros deprocedimientos y funciones, variables locales,globales y dinámicas. Este tipo de estructurastambién son utilizadas para traducir expresionesaritméticas o cuando se quiere recordar unasecuencia de acciones u objetos en el ordeninverso del ocurrido.

Para el manejo de los datos se cuenta con dosoperaciones básicas: apilar (push), que coloca unobjeto en la pila, y su operación inversa, retirar (odesapilar, pop), que retira el último elementoapilado.En cada momento sólo se tiene acceso a la partesuperior de la pila, es decir, al último objeto apilado(denominado TOS, Top of Stack en inglés). La opera-ción retirar permite la obtención de este elemento,que es retirado de la pila permitiendo el acceso alsiguiente (apilado con anterioridad), que pasa a serel nuevo TOS.

Arquitectura de la PilaUna pila típica es un área de la memoria de loscomputadores con un origen fijo y un tamañovariable. Al principio, el tamaño de la pila es cero.

Un puntero de pila, por lo general en forma de unregistro de hardware, apunta a la más recientelocalización en la pila; cuando la pila tiene untamaño de cero, el puntero de pila de puntos en elorigen de la pila.Las dos operaciones aplicables a todas las pilasson:Una operación apilar, en el que un elemento dedatos se coloca en el lugar apuntado por el punterode pila, y la dirección en el puntero de pila se ajustapor el tamaño de los datos de partida, y la otra unaoperación desapilar: un elemento de datos en laubicación actual apuntado por el puntero de pila eseliminado, y el puntero de pila se ajusta por eltamaño de los datos de partida.Hay muchas variaciones en el principio básico delas operaciones de pila. Cada pila tiene un lugar fijoen la memoria en la que comienza. Como los datosse añadirán a la pila, el puntero de pila es despla-zado para indicar el estado actual de la pila, que seexpande lejos del origen (ya sea hacia arriba ohacia abajo, dependiendo de la aplicación concre-ta).

¿Como Introducir una Pila?

Para introducir esta estructura, recordemos laforma en que se apilan los platos en los restauran-tes: una pila de platos se soporta sobre un muelle,cuando se saca uno los demas suben. Vamos atrasladar esta idea a la informática. Una pila(stack) es una estructura lineal cuyos datos solose pueden acceder por un solo extremo, denomi-nado tope o cima (top). En esta estructura solo sepueden efectuar dos operaciones: añadir y eliminarun elemento, acciones que se conocen por meter(push) y sacar (pop). Si se meten varios elementosen la pila y despues se sacan de esta, el ultimoelemento en entrar sera el primero en salir.

Cuando se almacena una pila en la memoria de unordenador, los elementos realmente no se muevenarriba y abajo, a medida que se meten o sacan de

Procesamiento de la PilaPara trabajar con pilas, hay que contar con proce-dimientos para meter y sacar elementos y paracomprobar si la pila esta vacia (puede utilizarseuna variable o una funcion Booleana Vacia, de modoque cuando su valor sea verdadero la pila estallena, y cuando sea falso la pila esta vacia).

Las pilas pueden implementarse utilizando memoriaestatica (por medio de vectores) o dinamica(utilizando punteros).

la pila, simplemente es la posición del tope de lapila la que varía. Un puntero denominado,puntero,de pila, indica la posicion del tope o, lo quees lo mismo, el primer elemento disponible en lacima. Otro puntero se emplea para determinar labase de la pila que mantiene el mismo valor mien-tras existe la pila.

i

La pila es una de las estructuras más importantesen computación, se usa para calcular expresiones,para pasar de un lenguaje de ordenador a otro ypara transferir el control de una parte de unprograma a otra. Como ejemplo de uso de la pila,considerese un programa que llama a la funciónraiz cuadrada de un número; el subprogramarecibe el argumento cuya raíz ha de calcularse yretorna la raíz ya calculada. Este argumento sesaca de la pila para utilizarlo y una vez calculada laraíz, cuando la funcion termina, mete el resultadoen la pila, el último dato entrado, argumento, es elpimer dato sacado e igual ocurre con el resultadode la función que es el primer dato utilizado,cuando el control retorna al programa. Son utiliza-das en el desarrollo de sistemas informáticos ysoftware en general. Por ejemplo, el sistema desoporte en tiempo de compilación y ejecución delPascal utiliza una pila para llevar la cuenta de losparámetros de procedimientos y funciones, varia-bles locales, globales y dinámicas. Este tipo deestructuras también son utilizadas para traducirexpresiones aritméticas o cuando se quiererecordar una secuencia de acciones u objetos enel orden inverso del ocurrido

Vamos a estudiar la implementación de una pila S,de tamaño LONGMAX, dejando al lector laimplementación dinamica de una pila como casoparticular de lista enlazada.Como anotaciones tendremos que:p= cima puntero de pilaLONGMAX longitud maxima de la pilaS(i) elemento i-esimo de la pila SX elemento a añadir/quitar de la pilaVacia función Booleana pila vaciaPush subprograma para añadir elementosPop subprograma para quitar elementos

Para añadir,quitar o la funcion vacia, los algoritmos son los siguien-tes:Añadir (PUSH):inicio si p=LONGMAX entonces

escribir ‘pila llena’ sino p <- p + 1 S(p) <- X fin_si finQuitar (POP):Inicio{este subprograma pone el valor de x en la cima

de la pila} si p=0 entonces escribir ‘pila vacia’ sino X <- S(p) p<- p-1 fin_si finVacia:nicio si p=0 entonces Vacia <- Cierto sino Vacia<- Falso fin_si fin

Uso en la Actualidad

Barquisimeto, 07 de NoviembreProComp© Todos los derechos reservados.