You are on page 1of 16

REPBLICA BOLIVARIANA DE VENEZUELA. MINISTERIO DEL PODER POPULAR PARA LA DEFENSA.

UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA FUERZA ARMADA BOLIVARIANA. NCLEO CIUDAD BOLVAR EXTECCION BOLIVAR. CIUDAD BOLIVAR / ESTADO BOLIVAR.

ASIGANATURA: Lenguaje de programacin II. PROFESORA: ING. Denis Acosta.

Bachiller: Arrioja Dioraima C.I. V-21.578.300. ADS-03-01

Ciudad Bolvar, Junio 2013. 1

ndice
Estructura dinmica de datos. 1.- PILAS.4 1.1.- Definicin de pilas...4 1.2.- Operaciones sobre pilas....5 1.3.- Pilas alojadas en arreglo..6 1.4.- Implementacin de procesamiento recursivo mediante pilas..6 2.- COLAS.7 2.1.- Definicin de colas...7 2.2.- Operaciones con colas..7 2.3.- Colas circulares8 3.- LISTAS..10 3.1.- Definicin de listas.10 3.2.- tipo de listas10 4.-IMPLEMENTACION DE LISTAS ORDENADAS.13 4.1.-Definicion...13 PROGRAMACION AVANZADA. 1.- Conceptos Avanzados..14 1.1.- Multitherading...14 2.- fundamentos de la programacin avanzada orientada a objeto..15 2.1.- utilizacin de estructuras dinmicas de datos.15

Introduccin.

Las estructuras dinmicas de datos son estructuras que cuya dimensin puede crecer o disminuir durante la ejecucin del programa. Una estructura dinmica de datos es una coleccin de elementos llamados nodos. Al contrario que un array, que contiene espacio para almacenar un nmero fijo de elementos, una estructura dinmica de datos se ampla y contrae durante la ejecucin del programa tales como pilas, colas, listas y implementacin de listas encadenadas. Las unidades centrales de procesamiento con capacidad para multihilo (Multitherading en ingls) tienen soporte en hardware para ejecutar eficientemente mltiples hilos de ejecucin.

EXTRUXTURA DINAMICA DE DATOS.


1. PILAS

1.1.- Definicin de pilas: Una pila (stack en ingls) es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Esta estructura se aplica en multitud de ocasiones en el rea de informtica debido a su simplicidad y ordenacin implcita de la propia estructura. Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado. En cada momento slo se tiene acceso a la parte superior de la pila, es decir, al ltimo objeto apilado (denominado TOS, Top of Stack en ingls). La operacin retirar permite la obtencin de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS. Por analoga con objetos cotidianos, una operacin apilar equivaldra a colocar un plato sobre una pila de platos, y una operacin retirar a retirarlo. EJEMPLO:

La PilaNV es la pila no vaca, que diferenciamos de la pila normal a la hora de tomar en cuenta errores. El elemento X representa el tipo de valor que puede contener la pila: entero, carcter, registro, etc.
fmod PILA-GENRICA {X :: TRIV} is sorts Pila{X} PilaNV{X}. subsorts PilaNV{X} < Pila{X}. ***generadores: op crear: -> Pila {X} [ctor]. op apilar : X$Elt Pila{X} -> PilaNV{X} [ctor].

***constructores op desapilar : Pila{X} -> Pila{X}.

***selectores op cima : PilaNV{X} -> X$Elt.

***variables var P : Pila{X}. var E : X$Elt.

***ecuaciones eq desapilar (crear) = crear. eq desapilar(apilar(E, P)) = P. eq cima(apilar(E, P)) = E. endfm

1.2.- Operaciones sobre pilas: Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen aadir ms de uso habitual. Las operaciones que se pueden realizar sobre una pila son las siguientes: Vaciar la pila. Acceder al elemento tope de la pila. Eliminar el elemento tope de la pila. Agregar un nuevo elemento al tope de la pila. Averiguar si una pila est vaca, Vaca devuelve cierto si la pila est vaca o falso en caso contrario.

1.3.- Pilas alojadas en arreglo: Resulta conveniente el almacenamiento secuencial para el tratamiento de pilas en arreglos. Podemos tener una variable llamada TOPE que contenga el ndice donde est ubicado el tope de la pila. Cuando la pila est vaca, hacemos TOPE=0. Por ejemplo:

Podemos definir una constante llamada CANTELEMENTOS que tenga el valor mximo de elementos que podr contener la pila, un tope con la ltima posicin, un Valor a ser ingresado y el arreglo mismo #define CANTELEMENTOS 10; int tope = -1; /*inicializamos a la variable tope con el valor 1 para que represente a la pila vaca porque el 1 elemento tiene ndice 0.*/ int pila[CANTELEMENTOS]; int valor;

1.4.- Implementacin de procesamiento recursivo mediante pilas: Un procedimiento o funcin contiene tanto variables locales como argumentos ficticios o parmetros. A travs de los argumentos se transmiten datos en las llamadas a los subprogramas, o bien se devuelven valores al programa o subprograma invocante. Adems, el subprograma debe guardar la direccin de retorno al programa que realiza la llamada. En el momento en que termina la ejecucin de un subprograma el control pasa a la direccin guardada. Ahora el subprograma es recursivo, entonces adems de la direccin de retorno, los valore actuales de las variables locales y argumentos deben de guardarse ya que se usarn de nuevo cuando el subprograma se reactive.

2.- COLAS 2.1.- Definicin de colas: Una cola (tambin llamada fila) es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir. una cola es una lista ordenada de elementos en la que las eliminaciones se realizan en un solo extremo, llamado frente o principio de la cola, y los nuevos elementos son aadidos por el otro extremo, llamado fondo o final de la cola.

2.2.- Operaciones con colas: Las operaciones que podemos realizar en una cola son las siguientes: Crear: se crea la cola vaca. Encolar (aadir, entrar, insertar): se aade un elemento a la cola. Se aade al final de esta. Desencolar (sacar, salir, eliminar): se elimina el elemento frontal de la cola, es decir, el primer elemento que entr. Frente (consultar, front): se devuelve el elemento frontal de la cola, es decir, el primer elemento que entr.

EJEMPLO:

2.3.- Colas circulares: Una cola circular o anillo es una estructura de datos en la que los elementos estn de forma circular y cada elemento tiene un sucesor y un predecesor. Los elementos pueden cosultarse, aadirse y eliminarse unicamente desde la cabeza del anillo que es una posicin distinguida. Existen dos operaciones de rotaciones, una en cada sentido, de manera que la cabeza del anillo pasa a ser el elemento sucesor, o el predecesor, respectivamente, de la cabeza actual. EJEMPLO: Anillo en Maude

fmod ANILLO {X :: TRIV} is sorts AnilloNV{X} Anillo{X} . subsort AnilloNV{X} < Anillo{X} .

op crear : -> Anillo{X} [ctor] . op insertar : X$Elt Anillo{X} -> AnilloNV {X} [ctor] .

op eliminar : Anillo{X} -> Anillo{X} . ops rotarDch rotarIzq : Anillo{X} -> Anillo{X} . op cabeza : AnilloNV{X} -> X$Elt .

op esVacio? : Anillo{X} -> Bool . op aLaCola : X$Elt Anillo{X} -> Anillo{X} . op elimCola : Anillo{X} -> Anillo{X} . op cola : AnilloNV {X} -> X$Elt .

var A : Anillo{X} . vars E E2 : X$Elt .

eq eliminar(crear) = crear . eq eliminar(insertar(E, A)) = A .

eq cabeza(insertar(E, A)) = E .

eq esVacio?(crear) = true . eq esVacio?(insertar(E, A)) = false .

eq cola(insertar(E, crear)) = E . eq cola(insertar(E, insertar(E2, A))) = cola(insertar(E2, A)) .

eq elimCola(crear) = crear . eq elimCola(insertar(E, crear)) = crear . eq elimCola(insertar(E, insertar(E2, A))) = insertar(E, elimCola(insertar(E2, A))) .

eq aLaCola(E, crear) = insertar(E, crear) . eq aLaCola(E, insertar(E2, A)) = insertar(E2, aLaCola(E, A)) .

eq rotarDch(crear) = crear . eq rotarDch(insertar(E, A)) = aLaCola(E, A) .

eq rotarIzq(crear) = crear . eq rotarIzq(insertar(E, A)) = insertar(cola(insertar(E, A)), elimCola(insertar(E, A))) . endfm

3.- LISTAS 3.1.- Definicin de listas: Las listas no son arreglos (arrays), aunque ambos representan secuencias de elementos de un tipo, los arreglos tienen longitud fija; las listas, no; es decir, las listas son flexibles y permiten cambio de implementacin. En una lista enlazada, cada elemento apunta al siguiente excepto el ltimo que no tiene sucesor y el valor del enlace es null. Por ello los elementos son registros que contienen el dato a almacenar y un enlace al siguiente elemento. Los elementos de una lista, suelen recibir tambin el nombre de Nodos de la lista. 3.2.- tipo de listas: Listas simples

Se definen como un conjunto de nodos uno detrs de otro, del cual siempre se puede conocer al nodo inicial y al final, de cada nodo de la lista, se conoce un contenido, que es la informacin que almacena dentro puede ser de cualquier tipo de dato un sucesor nico excepto el ultimo nodo de la lista. Operaciones de las listas simples. 1. Creacin de una lista crearLista (nombreLista)

10

1.

Comprobacin del estado

listaVacia(nombreLista) Booleano listaVacia(referenciaNodo) Booleano listaLlena(nombreLista) Booleano 2. Insercin de nodos insertar(nombreLista, valorInfo, posicin) insertar(nombreLista, valorInfo) 3. Borrado de nodos borrar(nombreLista, valorInfo) 4. Bsqueda de un nodo buscar(nombreLista, dato)informacin buscar(nombreLista, dato)referenciaNodo pertenece(nombreLista,informacion) Booleano

5. Recorrido de la lista recorrer(nombreLista) Acceso a los nodos info(referenciaNodo) Informacion siguiente(referenciaNodo) enlace

6. Modificacin de nodos. asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace)

11

7. Acotacin sobre las operaciones. ListaLlena slo tiene sentido si lista es acotada. Acceso y modificacin sern mtodos get y pu

Listas ordenadas

Son las que la posicin de cada nodo viene determinada por el valor de uno o ms campos obligatorios de informacin del nodo denominados clave No se permite tener dos nodos con la misma clave.

Operaciones de las listas ordenadas

1. Creacin de una lista crearLista (nombreLista) Comprobacin del estado listaVacia(nombreLista) Booleano listaVacia(referenciaNodo) Booleano listaLlena(nombreLista) Booleano

2. Insesrcin de nodo insertar(nombreLista, valorClave, valorInfo) Borrado de nodos borrar(nombreLista, valorClave)

12

1.

Bsqueda de un nodo

buscar(nombreLista, valorClave) Informacion buscar(nombreLista, valorClave)ReferenciaNodo pertenece(nombreLista,valorClave) Booleano 3. Acceso a los nodos clave(referenciaNodo) Clave info(referenciaNodo) Informacion siguiente(referenciaNodo) enlace 4. Modificacin de los nodos asignarClave(referenciaNodo, valorClave) asignarInfo(referenciaNodo, valorInformacion) asignarEnlace(referenciaNodo, valorEnlace)

4.-IMPLEMENTACION DE LISTAS ORDENADAS 4.1.-Definicion. Una lista se utiliza para almacenar informacin de mismo tipo, con la caracterstica de que puede contener un nmero indeterminado de elementos (mientras haya memoria) y que estos elementos mantienen un orden explcito (al menos el de la forma en que se introducen en la lista). Este ordenamiento explicito implica que cada elemento mantiene un enlace al siguiente elemento. Una lista es una estructura de datos dinmica, el nmero de elementos en la lista puede variar rpidamente en un proceso, aumentando por agregaciones o disminuyendo por extracciones. Las agregaciones se pueden realizar por cualquier punto de la lista; por la cabeza (inicio), por el final (cola), a partir o antes de un elemento determinado de la lista. Las extracciones

13

tambin se pueden realizar en cualquier punto; adems se extraen elementos dependiendo del valor de un atributo del elemento mismo.

PROGRAMACION AVANZADA.
1.- Conceptos Avanzados

1.1.- Multitherading Las unidades centrales de procesamiento con capacidad para multihilo (Multitherading en ingls) tienen soporte en hardware para ejecutar eficientemente mltiples hilos de ejecucin. El paradigma de multihilo ha llegado a ser ms popular a medida que los esfuerzos para llevar ms adelante el paralelismo a nivel de instruccin se han atascado desde finales de los aos 1990. Esto permiti que reemergiera a una posicin destacada el concepto del computacin de rendimiento a partir del ms especializado campo del procesamiento transaccional: Aunque es muy difcil acelerar un solo hilo o un solo programa, la mayora de los sistemas de computadores son realmente multitarea entre mltiples hilos o programas. Las tcnicas que permitiran acelerar el rendimiento total del procesamiento del sistema en todas las tareas (tasks) daran como resultado un aumento significativo del rendimiento. Las dos principales tcnicas para computacin de rendimiento son el multiproceso y el multihilo. Una cierta crtica del multihilo incluye: Los mltiples hilos pueden interferir uno con el otro al compartir recursos de hardware como cachs o Translation Lookaside Buffer (TLB). Los tiempos de ejecucin de un solo hilo no son mejorados, sino por el contrario, pueden ser degradados.

14

El soporte de hardware para multihilo es ms visible al software que el multiprocesamiento, por lo tanto requiriendo ms cambios tanto a las aplicaciones como el sistema operativo. Las tcnicas de hardware usadas para soportar multihilo a menudo paralelizan las tcnicas de software usadas para la multitarea de los programas de computadora.

2.- fundamentos de la programacin avanzada orientada a objeto 2.1.- utilizacin de estructuras dinmicas de datos: Las estructuras dinmicas de datos son estructuras que cuya dimensin puede crecer o disminuir durante la ejecucin del programa. Una estructura dinmica de datos es una coleccin de elementos llamados nodos. Al contrario que un array, que contiene espacio para almacenar un nmero fijo de elementos, una estructura dinmica de datos se ampla y contrae durante la ejecucin del programa. Las estructuras dinmicas de datos se pueden dividir en dos grandes grupos: Lineales: listas enlazadas, pilas, colas No lineales: rboles, grafos

Las estructuras dinmicas de datos son de gran utilidad para almacenar datos del mundo real, que estn cambiando constantemente. Por ejemplo si tenemos almacenados en un array los datos de los alumnos de un curso, los cuales estn ordenados de acuerdo al promedio, para insertar un nuevo alumno sera necesario correr cada elemento un espacio: Si en su lugar se utilizara una estructura dinmica de datos, los nuevos datos del alumno se pueden insertar fcilmente.

15

Conclusin

Estructuras dinmicas de datos son coleccin de elementos llamados nodos, existen dos operaciones bsicas de apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado. Las cola son conocidas tambin fila que es una estructura de datos, caracterizada por ser una secuencia de elementos. Aunque es muy difcil acelerar un solo hilo o un solo programa, la mayora de los sistemas de computadores son realmente multitarea entre mltiples hilos o programas. Las estructuras dinmicas de datos son de gran utilidad para almacenar datos del mundo real, que estn cambiando constantemente.

16

You might also like