You are on page 1of 19

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA EDUCACION UNUVERSITARIA UNIVERSIDAD NACIONAL EXPERIMENTAL DE LAS FUERZAS

ARMADAS UNEFA A.D.S. III 01

LENGUAJE DE PROGRAMACION

PROFESOR: DENNYS ACOSTA

BACHILLER: THANALI CENTENO C.I. 24.795.529

CIUDAD BOLVAR; JUNIO DEL 2013.

INTRODUCCIN

Las estructuras dinmicas nos permiten crear estructuras de datos que se adapten a las necesidades reales a las que suelen enfrentarse a nuestros programas. Pero no solo eso, como veremos, tambin nos permitirn crear estructuras de datos muy flexibles, ya que sean en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Las estructuras de datos estn compuestas de otras pequeas estructuras a las que llamaremos nodos o elementos, que agrupan los datos con los que trabajara nuestro programa y adems uno o ms punteros autorreferenciales, es decir, punteros a objetos del mismo tipo. El objetivo de este artculo es el de comprender el uso de las listas enlazadas simples. Las listas enlazadas pueden ser utilizadas cuando se necesitan hacer varias operaciones de insercin y eliminacin de elementos.

UNIDAD 6

Estructuras Dinmicas de datos. Las estructuras bsicas que se han estudiado hasta ahora tienen una limitacin importante: no pueden cambiar de tamao durante la ejecucin; es decir, los arreglos estn compuestos por un nmero fijo de elementos, el cual se determina al inicio de la creacin del programa. Est claro que se pueden construir arreglos dinmicos, pero una vez creados, su tamao ser fijo y cualquier modificacin en el tamao requiere de la reconstruccin del arreglo desde el principio. Una de las aplicaciones de la memoria dinmica y los punteros son las estructuras dinmicas de datos. stas nos permiten crear estructuras de datos adaptadas a necesidades reales a ser cubiertas en un programa y permiten crear estructuras de datos flexibles, ya sea en cuanto al orden, la estructura interna o las relaciones entre los elementos que las componen. Dependiendo del nmero de punteros y de las relaciones entre los nodos, podemos distinguir varios tipos de estructuras dinmicas como son: listas abiertas, pilas, colas, listas circulares o listas cerradas, listas doblemente enlazadas, rboles simples, rboles binarios, rboles binarios de bsqueda , rboles AVL, rboles B, tablas HASH, grafos, y diccionarios. Nodo: Las estructuras de datos estn compuestas de otras pequeas estructuras que se denominan nodos o elementos y que agrupan los datos con los que trabajar el programa y adems uno o ms punteros autorreferenciales, es decir, punteros a objetos del mismo tipo nodo. Una estructura bsica de un nodo para crear listas abiertas, pilas o colas simples de datos seria: struct nodo {

int dato; struct nodo *otronodo; }; El campo "otronodo" puede apuntar a un objeto del tipo nodo. De este modo, cada nodo puede usarse para construir listas de datos, y cada uno mantendr ciertas relaciones con otros nodos. Para acceder a un nodo de la estructura slo se necesita un puntero a un nodo. Grficamente se puede representar al nodo anterior, de la siguiente forma:

DATO

Definicin de Pilas Son un tipo especial de lista, conocidas como listas LIFO (Last In, First Out: el ltimo en entrar es el primero en salir). Los elementos se "amontonan" o apilan, de modo que slo el elemento que est encima de la pila puede ser ledo, y slo pueden aadirse elementos encima de la pila. Operaciones sobre una pila ejemplo Las inserciones (push) y eliminaciones (pop) en una pila se hacen siempre en un extremo, lo que se considera como el primer elemento de la lista es en realidad el ltimo elemento de la pila. 70 Las pilas tienen un conjunto de operaciones muy limitado, aparte de las operaciones comunes a todos como son inicializar, y vaca (nos indica si la pila est vaca) slo permiten las operaciones de insertar "push" y eliminar "pop": Push: Aadir un elemento al final de la pila. Pop: Leer y eliminar un elemento del final de la pila.

Tope: Retorna el elemento en el tope de la pila. Pila alojadas en arreglos ejemplo Las pilas se pueden implementar por arreglos o bien por punteros siempre y cuando se respete el concepto antes mencionado. Idealmente, una pila puede contener un nmero ilimitado de elementos y no producir nunca desbordamiento. En la prctica, sin embargo, el espacio de almacenamiento disponible es finito. La codificacin de una pila requiere un cierto equilibrio, ya que si la longitud mxima es demasiado grande, se gasta mucha memoria, mientras que un valor pequeo de longitud mxima producir desbordamientos frecuentes.

Implementacin de procedimientos Para representar en lenguaje C esta estructura de datos se utilizan los punteros ya estudiados en el taller anterior. El nodo tpico para construir listas tiene la siguiente forma: struct lista { int dato; struct lista *siguiente; }; 67 Debe notarse que de sta forma, cada elemento de la lista slo contiene un dato de tipo entero, pero en la prctica no hay lmite en cuanto a la complejidad de los datos a almacenar en la estructura. Cuando se crea una lista debe estar vaca por lo que debe representarse con la constante NULL, para crearla se hace lo siguiente: struct lista *miLista;

miLista = NULL; Es decir, cuando el puntero que usamos para acceder a la lista vale NULL, diremos que la lista est vaca: Normalmente se definen varios tipos que facilitan el manejo de las estructuras, en C una declaracin de tipos para las listas puede ser: typedef struct _nodo { int dato; struct _nodo *siguiente; } tipoNodo; typedef tipoNodo *pNodo; typedef tipoNodo *Lista; tipoNodo es el tipo para declarar nodos, evidentemente. pNodo es el tipo para declarar punteros a un nodo. Lista es el tipo para declarar listas, note que cualquier puntero a un nodo es una lista, cuyo primer elemento es el nodo apuntado. Es muy importante que en el programa nunca se pierda el valor del puntero al primer elemento, de lo contrario ser imposible acceder al nodo y no se podr liberar el espacio de memoria que ocupa.

Definicin de cola ejemplo

Una cola es un tipo especial de lista abierta en la que slo se puede insertar nodos en uno de los extremos de la lista y slo se pueden eliminar nodos en el otro extremo. Este tipo de lista es conocido como lista FIFO (por el ingls First In First Out), el primero en entrar es el primero en salir. DATO Primera DATO DATO DATO ltima NUL L

El smil cotidiano es una cola para comprar, por ejemplo, la cola para las entradas al circo. Los nuevos compradores de entradas slo pueden colocarse al final de la cola, y slo el primero de la cola puede comprar la entrada.

Operaciones con colas ejemplo Adems, como sucede con las pilas, las escrituras de datos siempre son inserciones de nodos, y las lecturas siempre eliminan el nodo ledo. De nuevo nos encontramos ante una estructura con muy pocas operaciones disponibles. Las colas slo permiten aadir y leer elementos: Encolar: Inserta un elemento al final de la cola. Desencolar: Lee y elimina un elemento del principio de la cola. Frente: devuelve el elemento a la cabeza de la cola, pero no lo extrae.

Teniendo en cuenta que las lecturas y escrituras en una cola se hacen siempre en extremos distintos, lo ms fcil es insertar nodos por el final, a continuacin del nodo que no tiene nodo siguiente, y leerlos desde el principio. Se debe recordar que leer un nodo implica eliminarlo de la cola.

Colas circulares

La

cola

circular

es

una

implementacin

que

aprovecha

el

espacio

enla memoria de la computadora de la siguiente forma

Inicialmente aparta un

espacio para la cola, conforme llegan los elementos los va agregando al final, cuando remueve un elemento lo hace del inicio de la cola, una vez que ha terminado con el espacio de memoria que haba apartado, revisa si ya se liber el espacio al inicio de la cola y "da la vuelta" para aprovechar el espacio al mximo, la implementacin que se presenta a continuacin es la de una cola circular. ALGORITMO DE INICIALIZACINF < -- 0 A<-0 ALGORITMO PARA INSERTARSi (F+1=A) (F=1 y A=mximo) entonces mensaje (overflow)en caso contrarioiniciosi A=mximo entonces A<--1cola[A]<-- valor en caso contrario A <--A+1cola[A]<-- valor si F=0 entonces F <-- 1fin ALGORITMO PARA EXTRAER Si F=0 entonces mensaje (underflow)en caso contrario x <-- cola[F]si F=A entonces F <-- 0 A<-- 0 en caso contrario si F=mximo entonces F <--1 en caso contrario F <-- F+1 Aplicaciones cola doble Una cola doble es una estructura de datos en la cual las operaciones de agregar y retirar se practican por ambos lados y por la forma

enque se realizan las operaciones, puede comportarse como pila como. La forma de operar de una cola doble es as: se tiene un nuevo elemento que desea agregarse a la cola, ste podra hacerlo de tal forma que ocupe la primera posicin o la ltima, los elementos que se encuentra al principio y al final de la cola pueden retirarse. Para indicar uno de los extremos de la cola doble por donde se agregarn o retirarn elementos, se utiliza un apuntador (U) y para el otro extremo se utiliza un apuntador (P). Para delimitar el rea de implementacin se tienen los apuntadores MAX y MIN, de idntica forma como la pila y la cola para detectar la cola para detectar la cola doble llena.La cola doble estar vaca cuando P = Vaco.Existen dos variantes de la doble cola: Doble cola de entrada restringida.

Doble cola de salida restringida. La primera variante slo acepta inserciones al final de la cola, y la segunda acepta eliminaciones slo al frente de la cola ALGORITMOS DE ENTRADA RESTRINGIDA Algoritmo de Inicializacin

F < -- 1 A <-- 0 Algoritmo para Insertar Si A=mximo entoncesMensaje (overflow)En caso contrarioA <--A+1Cola [A]<-- valor Algoritmo para Extraer Si F&gtA entonces mensaje (underflow)en caso contrario mensaje (frente/atrs)si frente entonces x <-- cola[F]F <-- F+1en caso contrariox <-- cola[A]A <-- A-1 ALGORITMOS DE SALIDA RESTRINGIDA Algoritmo de Inicializacin F <--1 A <-- 0 Algoritmo para Insertar Si F&gtA entonces mensaje (overflow)en caso contrario mensaje (Frente/Atrs)si Frente entonces cola[F] <--valor en caso contrario A <-- A+1cola[A] <--valor Algoritmo para Extraer Si F=0 entonces mensaje (underflow)en caso contrariox <--cola[F]F <-- F+1

1. Definicin Listas Es la forma ms simple de estructura de datos dinmica. Los nodos se organizan de modo que cada uno apunta al siguiente, y el ltimo no apunta a nada, es decir, el puntero del nodo siguiente vale NULL.

LISTA

DATO

DATO

DATO

DATO

NUL L

2. Tipos de listas

Listas enlazadas Listas lineadas Listas dobles Listas circulares

Operaciones de listas El tipo lista (Apartado A.1.2) es una forma muy general y muy flexible para estructurar datos. Enseguida lo veremos con un ejemplo, pero presentaremos antes algunas definiciones de predicados sobre listas que son de utilidad general (a cada definicin le siguen algunos ejemplos de consultas): Primer elemento de una lista primero([X|Cola],X).

(Recurdese que la notacin [X|Cola] indica una lista cuya cabeza es el elemento X y cuya cola es la lista Cola , que puede contener cualquier nmero de elementos, o ser vaca. En lugar de Cola podramos haber utilizado cualquier otro nombre de variable, como Y , L , etc.). El predicado ser verdadero cuando X tenga el mismo valor en cada una de sus apariciones: ?- primero([1,2,3],1). YES

?- primero([a|L],b). NO

?- primero([c,b,d,e,a],X).

X=c

?- primero([X,b],a). X=a

?- primero([],X). NO

UNIDAD 7

Fundamentos de la programacin orientada de objetivos La programacin orientada a objetos es la expresin de uno de los ms avanzados paradigmas en el campo de la programacin, y es, al mismo tiempo, el resultado de la evolucin experimentada por los paradigmas anteriores.

A diferencia de otros paradigmas de programacin, que intentan, al abordar un problema, representarlo o modelarlo empleando entidades cercanas a la computadora (arreglos, subrutinas, mdulos) la programacin orientada a objetos se propone emplear entidades lo ms cercanas posibles a la realidad.

La programacin orientada a objetos tiene como conceptos fundamentales los conceptos de objeto y clase.

Un objeto es un ente que posee sus caractersticas propias (propiedades) y un conjunto de acciones que es capaz de realizar (mtodos).

Una clase es un ente abstracto que permite declarar las propiedades y los mtodos de objetos similares.

Un lenguaje de programacin orientado a objetos debe permitir al programador realizar definiciones de clases, y construir objetos a partir de esas clases.

Para resolver un problema bajo el paradigma de la programacin orientada a objetos basta con determinar y caracterizar los diferentes objetos que intervienen en el problema, definir sus propiedades y mtodos y ponerlos a interactuar entre s.

Ejemplo:

Supongamos que se desea disear una aplicacin para controlar a todo el personal que estudia o trabaja en el Instituto Superior Pedaggico conociendo

la informacin correspondiente a cada uno de ellos.

Trabajadores Docentes Nombre Direccin Nmero de Identidad Sexo Fecha de Ingreso Cargo Salario Departamento Asignatura

Trabajadores de Servicio Estudiantes Nombre Direccin Nmero de Identidad Sexo Fecha de Ingreso Cargo Salario rea Nombre Direccin Nmero de Identidad Sexo Ao Especialidad

Tabla #1

Inicialmente podramos pensar en declarar tres clases : TDocente, TServicio y Estudiante; pero si analizamos la informacin observamos que hay propiedades que se repiten en las tres clases como son: Nombre, Direccin, Nmero de Identidad y Sexo por lo que se pudiera declarar una clase Persona que agrupe estas propiedades comunes y as no tener que repetirlas en cada una de las clases por lo que tendramos ahora cuatro clases:

Pero an quedan, en las clase TDocente y TServicio propiedades comunes por lo que se pudiera declarar una clase Trabajador con las propiedades Fecha Ingreso, cargo y Salario quedando finalmente cinco clases:

De acuerdo a las clase que hemos concebido podemos decir que un Estudiante es una Persona que tiene un ao y una especialidad; un Trabajador es una Persona que tiene una fecha de ingreso, un cargo y un salario; un Trabajador docente es un Trabajador que tiene un departamento y una asignatura y un Trabajador de servicio es un Trabajador que tiene rea.

Los Estudiantes y los Trabajadores forman subconjuntos de las Personas. La clase Persona es la Clase Base de las clases Estudiante y Trabajador por lo que estas clases heredan las propiedades y los mtodos de la clase Persona.

De manera similar los Trabajadores Docentes y los Trabajadores de Servicio son subconjuntos de los Trabajadores por lo que la clase Trabajador es Clase Base de las clases TDocente y TServicio y por tanto heredan las propiedades y los mtodos de la clase Trabajador.

Luego las cinco clases seran:

Clase Persona Propiedades: Nombre Direccin Nmero de Identidad Sexo Mtodos: Entrar Direccin Visualizar Nombre Visualizar Direccin Visualizar Nmero Identidad Visualizar Sexo

Tabla #2

Puedes constatar que no hemos definido mtodos para Entrar nombre, Entrar nmero de identidad, ni Entrar sexo porque no tienen sentido; la persona no puede cambiar su nombre, nmero de carn de identidad, ni sexo ella misma.

Nuestra persona tiene la posibilidad de cambiar de direccin y de visualizar su nombre, direccin, nmero de identidad y sexo. Clase Trabajador Propiedades y mtodos de la clase Persona Propiedades: Fecha de Ingreso Cargo Salario Mtodos: Entrar Cargo Entrar Salario Visualizar Fecha de Ingreso Visualizar Cargo Visualizar Salario Tabla #3

Nuestro trabajador tiene la posibilidad de cambiar de cargo y de salario y de visualizar su cargo, salario y fecha de ingreso; pero tambin puede cambiar su direccin y visualizar su nombre, direccin, nmero de carn de identidad y sexo porque es a la vez un trabajador y una persona.

Clase Estudiante Propiedades y mtodos de la clase Persona Propiedades: Ao

Especialidad Mtodos: Entrar Ao Visualizar Ao Visualizar Especialidad

Tabla #4

Nuestro estudiante tiene la posibilidad de cambiar de ao y de visualizar el ao que cursa y su especialidad; pero tambin puede cambiar su direccin y visualizar se nombre, direccin, nmero de carn de identidad y sexo porque es a la vez un estudiante y una persona.

Clase TDocente Propiedades y mtodos de la clase Trabajador Propiedades: Departamento Asignatura Mtodos: Entrar Departamento Entrar Asignatura Visualizar Departamento Visualizar Asignatura

Tabla #5 Nuestro trabajador docente tiene la posibilidad de cambiar de departamento y de asignatura y de visualizar el departamento y la asignatura a la que pertenece; pero tambin puede cambiar su direccin, cargo y salario y visualizar su nombre, direccin, nmero de carn de identidad, sexo y fecha de ingreso porque es a la vez un trabajador docente y un trabajador que es a su vez una persona.

Clase TServicio Propiedades y mtodos de la clase Trabajador

Propiedades: rea Mtodos: Entrar rea Visualizar rea Un lenguaje de programacin orientado a objetos debe permitir al programador realizar definiciones de clases, y construir objetos a partir de esas clases. Para resolver un problema bajo el paradigma de la programacin orientada a objetos basta con determinar y caracterizar los diferentes objetos que intervienen en el problema, definir sus propiedades y mtodos y ponerlos a interactuar entre s. Ejemplo: Supongamos que se desea disear una aplicacin para controlar a todo el personal que estudia o trabaja en el Instituto Superior Pedaggico conociendo la informacin correspondiente a cada uno de ellos.

CONCLUSION

La clase de estructura de datos me dejo mucho, desde la programada, lo cual ya mejore un poco ms, hasta la lgica de entender y ver las cosas de otra manera. Todo esto que acabo de explicar es un repaso de mi clase estructura de datos y simplemente puedo decir que si pudiera volverla a tomar, tenlo por seguro que volver a decir esto tantas veces sea un arte para mi programar. END OF FILE; EXIT;

REFERENCIAS Y BIBLIOGRAFIAS CONSULTADAS

http://cesarguerra10.files.wordpress.com/2011/04/tip-mod3.pdf http://www.monografias.com/trabajos28/programacion-objetos/programacionobjetos.shtml

Rivero Errico, Alfonso J. Introduccin a la programacin para Windows con Visual Basic.-- Ciudad de la Habana : Editorial Pueblo y Educacin, 2001 Daz Iglesias, Jack y Prez Gonzlez, Franklin. Delphi 5 Bsico.-- Ciudad de la Habana : Editorial Pueblo y Educacin, 2001 Curso por correo electrnico sobre Borland Delphi. Autor: Asistente Juan Antonio Fonseca Hernndez http://es.scribd.com/doc/41098916/Colas-Circulares http://es.scribd.com/doc/41098916/Colas-Circulares http://dar1007.files.wordpress.com/2012/09/tipos-de-listas.pdf

You might also like