struct prueba

8
STRUCT NOVIEMBRE 2010 VOLUMEN 1, Nº 1 La Revista de Programación PILAS Y COLAS La Mejor Forma de Organizar los Datos ESTRUCTURAS DE DATOS PILAS & EL PUSH Y POP LAS TEMIDAS COLAS... APLICACIONES DE COLAS OPERACIONES CON COLAS INSERTAR Y ELIMINAR EL ARTE DE SIMPLIFICAR LA PROGRAMACIÓN

Upload: fraymar-sarmiento

Post on 22-Mar-2016

260 views

Category:

Documents


3 download

DESCRIPTION

Prueba ON Line de STRUCT La revista de Programacion

TRANSCRIPT

Page 1: STRUCT Prueba

STRUCT N O V I E M B R E 2 0 1 0 V O L U M E N 1 , N º 1

La Revista de Programación

PILAS Y COLAS La Mejor Forma de Organizar los Datos

E S T RU C TU RA S DE DATO S…

PILAS …

EL PUSH Y POP

L A S T EM I DA S CO LA S . . .

A P L I C A C I O N E S D E C O L A S O P E R A C I O N E S C O N C O L A S

I N S E R T A R Y E L I M I N A R

E L A R T E D E S I M P L I F I C A R L A P R O G R A M A C I Ó N

Page 3: STRUCT Prueba

STRUCT N O V I E M B R E 2 0 1 0 V O L U M E N 1 , N º 1

T E

SO RP RE N-D E RÁ . . .

• PILA VS EFI-

CIENCIA 3

• ¿Pero dónde uso

una Pila? 3

• Marcando la dife-

rencia… 4

• La diferencia con las pilas es en el modo de entrada

4

• Los diferentes ti-pos de Colas

• Simples

• Circulares

• Con Prioridad

5

La Revista de Programación

Pilas y Colas, Organizar los Datos

U N A E S T R U C T U R A D E D A T O S …

Define la organización e interrelación de los Datos...

P I L A S Veremos la magia de acceder solo por un

3 E L P U S H Y P O P

Su característica fundamental es que al extraer se obtiene siempre el último ele-mento que acaba de insertarse.

L A S T E M I D A S C O L A S . . .

Una cola es una colección de ele-mentos homogéneos 4 A P L I C A C I O N E S D E C O L A S

en los sistemas operativos para planificar el uso de los distintos recursos

6 O P E R A C I O N E S C O N C O L A S

Insertar y Eliminar elementos

E L A R T E D E S I M P L I F I C A R L A P R O -

Estas estructuras pueden implementarse mediante arrays o mediante listas enla-zadas.

2

Editorial ● Creadora: Fraymar Sarmiento

● Contactenos: [email protected]

U N I V E R S I D A D F E R M Í N T O R O Decanato de Ingeniería

Escuela de Computación

Page 4: STRUCT Prueba

P Á G I N A 4

“La mayoría de los

procesadores

utilizan una

arquitectura

basada en pilas”

El Arte de Simplificar la Programación

Pilas

Una Estructura de Datos... Una estructura de da-tos define la organiza-ción e interrelación de éstos y un conjunto de operaciones que se pueden realizar sobre ellos.

Las operaciones que se pueden realizar son:

* Ordenamiento, de los elementos per-

tenecientes a la estruc-tura. * Apareo, dadas dos estructuras origi-nar una nueva ordena-da y que contenga a las apareadas.

Cada estructura ofrece ventajas y desventajas en relación a la simpli-cidad y eficiencia para

la realización de cada operación. De esta forma, la elección de la estructura de datos apropiada para cada problema depende de factores como la fre-cuencia y el orden en que se realiza cada operación sobre los datos.

Se la suele llamar estruc-tura L.I.F.O. como acrónimo de las palabras inglesas "last in, first out" (último en entrar, primero en salir).

Una pila es una estructura de da-tos a la cual se puede acceder solo por un ex-tremo de la mis-ma.

La pila se considera un grupo ordenado de ele-mentos, teniendo en cuenta que el orden de los mismos depende del tiempo que lleven "dentro" de la estructu-ra.

mediante arrays o me-diante listas enlazadas.

Las Pilas son estructu-ras utilizadas muy a menudo como herra-mientas de programa-ción de tipo LIFO (Last in-First out) Permiten el acceso so-

lo a un elemento a la vez: el último elemen-to insertado

La mayoría de los pro-cesadores utilizan una arquitectura basada en pilas

Las pilas y colas son estructuras de datos que se utilizan general-mente para simplificar ciertas operaciones de pro-gramación.

Estas estructuras pue-den implementarse

L.I.F.O.

last in, first

out

S T R U C T

Page 5: STRUCT Prueba

El PUSH y POP P Á G I N A 5 V O L U M E N 1 , N º 1

Las pilas son estructuras de datos que tienes dos opera-ciones básicas: Push (para insertar un elemento) y Pop (para extraer un elemento).

Su característica fundamental es que al extraer se obtiene siempre el último elemento que acaba de insertarse.

Una posible implementación mediante listas enlazadas sería insertando y extrayen-do siempre por el principio de la lista. Gracias a las pilas es posible el uso de la recur-sividad.

La variable que llama al mis-mo procedimiento en el q está, habrá que guardarla así como el resto de variables de la nueva llamada, para a la vuelta de la recursividad ir sacandolas, esto es posible a la implementación de pilas.

de procedimientos y funciones, variables locales, globales y diná-micas.

Este tipo de estructuras también son utilizadas para traducir expre-siones aritméticas o cuando se quiere recordar una secuencia de acciones u objetos en el orden inverso del ocurrido.

Las pilas se utilizan en muchas apli-caciones que utilizamos con fre-cuencia. Por ejemplo, la gestión de ventanas en Windows

(cuando cerramos una ventana siempre recuperamos la que tenía-mos detrás)

Las pilas son frecuentemente utilizadas en el desarrollo de sistemas informáticos y soft-ware en general.

Por ejemplo, el sistema de soporte en tiempo de com-pilación y ejecución del Pas-cal utiliza una pila para llevar la cuenta de los parámetros

¿Pero dónde uso una Pila?

PILA VS EFICIENCIA

• E L T I E M P O D E E J E C U C I Ó N D E L A S O P E R A C I O N E S P R I M A R I A S D E U N A P I L A N O D E P E N D E D E L T A M A Ñ O D E L A P I L A • P U S H Y P O P S E R E A L I Z A N E N T I E M P O C O N S T A N T E O ( 1 ) - N O E S N E C E S A R I O H A C E R N I N G U N A C O M P A R A C I Ó N

Page 6: STRUCT Prueba

P Á G I N A 6

Las colas también

son llamadas FIFO

(First In First Out),

que quiere

decir “el primero

que entra es el

primero que sale”.

Aplicaciones de Colas

Marcando la diferencia…

L A D I F E R E N C I A C O N L A S P I L A S E S E N E L M O D O D E E N T R A D A / S A L I D A D E D A T O S ; E N L A S C O L A S S E R E A L I Z A N L A S I N S E R C I O N E S A L F I N A L D E L A L I S T A , N O A L P R I N C I P I O . P O R E S O , S E U S A N P A R A A L M A C E N A R D A T O S Q U E N E C E S I T A N S E R P R O C E S A D O S S E G Ú N E L O R D E N D E L L E G A D A .

C = C ( 1 ) , C ( 2 ) , . . . . . . . , C ( N )

Las temidas Colas... Una cola es una colec-ción de elementos h o m o g é n e o s (almacenados en dicha estructura), en la mis-ma se pueden insertar elementos por uno de los extremos, llamado frente, y retirar los mismos por el otro extremo, denominado final.

Es importante aclarar que, tanto el frente como el final de la co-la, son los únicos indi-cados para retirar e insertar elementos, respectivamente.

Esto nos indica que no podemos acceder di-rectamente a cualquier elemento de la cola,

sino solo al primero, o sea el que está o se encuentra en el frente, y no se pueden inser-tar elementos en cual-quier posición sino so-lo por el final, así el elemento insertado queda como último.

Si esta trabajando en una sistema multiusuario, cuando le dice a la com-putadora que ejecute un programa concreto, el sistema operativo añade su petición a su “cola de trabajo”. Cuando su petición llega al frente de la cola, el programa solicitado pasa a ejecutarse. Igualmente,

las colas se utilizan para asignar tiempo a los dis-tintos usuarios de los dispositivos de entrada/salida (E/S), impresoras, discos, cintas y demás. El sistema operativo mantiene colas para peti-ciones de imprimir, leer o escribir en cada uno de estos dispositivos.

Las Colas también se utilizan en muchas mane-ras en los sistemas ope-rativos para planificar el uso de los distintos re-cursos de la computado-ra. Uno de estos recursos es la propia CPU (Unidad Central de Procesamien-to).

S T R U C T

Page 7: STRUCT Prueba

Los diferentes tipos de Colas P Á G I N A 7 V O L U M E N 1 , N º 1

S IMPLES

4 Se inserta por un sitio y se saca por otro, en el caso de la cola simple se inserta por el final y se saca por el principio. Para gestionar este tipo de cola hay que recordar siempre cual es el siguiente elemento que se va a leer y cual es el último elemento que se ha introducido.

CIRCULARES

4 En las colas circulares se considera que después del último elemento se accede de

nuevo al primero. De esta forma se reutilizan las posiciones extraídas, el final de la cola es a su vez el principio, creándose un circuito cerrado.

4 Lo que se ha hecho es insertar (5), sacar (1), e insertar (8).Se sabrá que una tabla está llena cuando “rear” y “front” estén en una posición de diferencia. El teclado de ordenador se comporta exactamente como una cola circular. Para implementar las colas circulares mediante listas enlazadas se pone en el tipo T_Lista los punteros front y rear.

CON PRIORIDAD

4 Las colas con prioridad se implementan mediante listas o arrays ordenados. No nos interesa en este caso que salgan en el orden de entrada sino con una prioridad que le asignemos. Puede darse el caso que existan varios elementos con la misma priori-dad, en este caso saldrá primero aquel que primero llego (FIFO)

Page 8: STRUCT Prueba

Operaciones LimpiarPila (Cola)

Función: Inicializa Cola al estado vacío

Entrada: Cola a inicializar

Precondiciones: Ninguna

Salida: Cola (inicializada)

Postcondiciones: Cola está vacía

ColaVacía (Cola)

Función: Indica si la Cola esta vacía

Entrada: Cola a ser comprobada

Precondiciones: Ninguna

Salida: Cola Vacía (indicador Booleano)

Postcondiciones: ColaVacía= (cola está vacía)

ColaLlena (Cola)

Función: Indica si esta llena

Entrada: Cola a ser comprobada

Precondiciones: Ninguna

Salida: Cola llena (indicador Booleano)

Postcondiciones: ColaLlena = (cola está llena)

InsCola (Cola, Nuevo Elemento)

Función: Añade Nuevo Elemento al final de la Cola

Entrada: Cola, Nuevo Elemento a ser añadido

Precondiciones: Hay espacio en la Cola

Salida: Cola (cambiada)

Postcondiciones: Cola = Cola original con Nuevo Ele-mento añadido al final

SupCola (Cola, ElemSuprimido)

Función: Quita el elemento del frente de la Cola y de-vuelve su valor como ElemSuprimido.

Entrada: Cola

Precondiciones: Cola no esta vacía

Salida: Cola (cambiada)ElemSuprimido

Postcondiciones: Cola = Cola original con el frente quita-do

ElemSuprimido = elemento frente de la cola original

Insertar y Eliminar Insertar Elementos Definimos el array.

COLA = COLA(1), COLA(2), ...., COLA

(n).

n = longitud máxima

f y r = punteros frente y final

x = elementos a insertar

procedimiento inserción

inicio

si r > = n

entonces escribir

“desbordamiento de la pila” sino r

r + 1

si r > n

entonces r

finsi

COLA(r) x

finsi

{ poner el puntero f al valor 1, a fin de

poder hacer eliminaciones posteriores }

si f = 0

entonces f 1

finsi

Fin

Eliminación de elementos El primer elemento introducido Q(n) que es el eliminado, se almacena en una variable auxiliar x, para eliminar se tendrá que verificar que la cadena este vacía. Procedimiento eliminar Inicio {verificar cola vacía} si f = 0

entonces escribir ‘cola vacía’ sino x cola (f)

f f + 1 si f > n entonces f 1 finsi Finsi

{ verificar si la cola se ha quedado vacía y en ese caso dejar los puntero frontal y final en condiciones iniciales, cero} si f = 0 {condición de pila vacía} entonces f 0 r 0 finsi fin