Anda di halaman 1dari 15

SEGUNDA SOLEMNE PROGRAMACION AVANZADA.

Las estructuras de datos son conjuntos o colecciones de datos interrelacionados entre s. Las estructuras de datos tienen como objetivo permitir que disminuya el tiempo de ejecucin de los programas computacionales debido a su organizacin interna. Las estructuras de datos pueden ser estticas y tambin dinmicas. Una estructura de datos se dice dinmica cuando el conjunto de datos cambia en tiempo de ejecucin, esto es aumentando su nmero de elementos o disminuyndolo. Los requisitos especficos que impone cada tipo de problema computacional en que se requiera la presencia de un conjunto de datos estructurados, oblig a los programadores a inventar diferentes estructuras de datos, cada una de ellas orientada a la solucin de un tipo especifico de problemtica computacional. Estas estructuras son las siguientes junto a su explicacin terica, su programa y salida computacional: 1. Listas Ligadas: Son un tipo de estructura de datos donde las colecciones de datos estn imaginariamente alineados en una fila especial las inserciones agregados de datos y las eliminaciones borrado de datos se pueden hacer con total libertad de cualquier lugar de la lista ligada. 2. Las Pilas: Son un tipo de estructura de datos donde las colecciones de datos estn imaginariamente apilados unos sobre otros tal como se apilan libros, las inserciones de datos y las eliminaciones de ellos solo se hacen desde la cima (donde esta el libro mas en lo alto). 3. Las colas: Son un tipo de estructura de datos donde las colecciones de datos estn imaginariamente en una lnea o cola de espera cotidiana donde las inserciones o agregados de datos se hacen nicamente por atrs y las eliminaciones o desagregados se hacen nicamente por delante (tpica cola de supermercado donde nadie se sale de la cola a mitad y sin colados). 4. Los Arboles Binarios: No tratados en este tema. Son Las estructuras de datos mas poderosas de todas.

MODOS DE PROGRAMAR ESTRUCTURAS DE DATOS El mtodo comn de programar alguno de los tipos de estructuras de datos en la literatura del tema e internet es mediante el uso de struct y no mediante el uso de clases Class. Por otra parte cuando raramente se utilizan clases en internet o la literatura para construir estructuras de datos se hace dejando los mtodos fuera de la clase. La universidad, me imagino que para evitar la copia de cdigo encapsula todo dentro de las clases. Critica encapsular impide la divisin en partes reutilizables del cdigo, justo lo que pretende la programacin orientada a objetos. FORMA DE ORGANIZACIN INTERNA DE LA ESTRUCTURA DE DATOS Como se dijo la estructura de datos puede estar organizada internamente en forma esttica o en forma dinmica. Una estructura de datos organizada internamente en forma esttica no

puede crecer o aceptar nuevos datos en tiempo de ejecucin (cuando corre el programa) en razn a que ha sido programada utilizando arreglos (arrays) que tienen una capacidad de almacenamiento predefinida de elementos en su declaracin de dimensin del arreglo Esta situacin descrita es altamente indeseable cuando se desea trabajar con conjuntos que incrementan continuamente su numero de elementos. Es por eso que las estructuras de datos estticas solo las consideraremos una explicacin acadmica. Por otra parte una estructura de datos dinmicos es una estructura que permite la inclusin de nuevos datos a la estructura, nada impide su crecimiento (excepto la memoria Ram del computador)r espetando en todo instante la estructura de ordenamiento que le es propia del tipo original que eligi el programador para ella (Listas Ligadas, Pilas, colas, Arboles Binarios ). Las grandes facilidades que las estructuras de datos dinmicas son posibles gracias a un tipo de variables llamadas apuntadores que guardan direcciones de memoria en C++. Y

a los

nodos donde cada uno de ellos esta enlazado con el siguiente, tal como por ejemplo muestra
el esquema de nodos de una lista donde cada uno contiene un dato en particular y adems y un enlace o variable puntero apuntador al nodo siguiente: Esquema de Nodos de una lista ligada :esquema insercin eliminacin deithel pg.465 pdf

Generalmente, la direccin guardada en el apuntador es la direccin de alguna otra variable.


int *ptr; ptr = &count /* Guarda la direccin de count en ptr */ /* El operador unario & regresa la direccin de una variable */

Para obtener el valor que esta guardado en la localidad de memoria del apuntador es necesario referenciar el apuntador. La referencia se hace con el operador unario "*".
int total; total = *ptr; /* El valor de la direccipon guardada en ptr es asignada a total */

Listas Ligadas Simples en C++ (cdigo)

Salida

de

Listas

Ligadas

Simples

en

C++

Esquema de Nodos de una Cola:

La representacin grafica de las acciones de agregar y quitar elementos de una cola se encuentran en Deitel pg. 476 pdf.

Colas en C++ (Codigo)

Salida de Colas en C+

Esquema de Nodos en una Pila :

La representacin grafica de las acciones de agregar y quitar elementos de una Pila se encuentran en Deitel pg. 471 pdf.

Pilas en C++ (Cdigo)

Salida de Pilas en C++

La Herencia.
Es la capacidad de compartir atributos y mtodos entre clases. Es la propiedad que permite definir nuevas clases usando como base clases ya existentes La nueva clase (clase derivada) hereda los atributos y comportamiento que son especficos de ella. La herencia es una herramienta poderosa que proporciona un marco adecuado para producir software fiable, comprensible, de bajo costo, adaptable y reutilizable. La herencia o relacin es-un es la relacin que existe entre dos clases, en la que una clase denominada derivada o subclase se crea a partir de otra ya existente, denominada clase base o superclase

Evidentemente, la clase base y la clase derivada tienen cdigo y datos comunes, de modo que si se crea la clase derivada de modo independiente, se duplicara mucho de lo que ya se ha escrito para la clase base. C++ soporta el mecanismo de derivacin que permite crear clases derivadas, de modo que la nueva clase hereda todos los datos miembro que pertenecen a la clase ya existente. La declaracin de derivacin de clases debe incluir el nombre de la clase base de la que se deriva y el especificador de acceso que indica el tipo de herencia (pblica, privada y protegida). La primera lnea de cada declaracin debe incluir la sintaxis siguiente:
Tipos de Herencia. La relacin de herencia entre clases puede ser: pblica (public), privada (private) protegida (protected).

La relacin que se utiliza con mayor frecuencia es la pblica. Dependiendo del nmero de clases y de cmo se relacionen, la herencia puede ser: a) Simple. b) Mltiple. c) De niveles mltiples

Con independencia del tipo de herencia, una clase derivada no puede acceder a variables y funciones privadas de su clase base . Para ocultar los detalles de la clase base y de clases y funciones externas a la jerarqua de clases, una clase base utiliza normalmente elementos protegidos en lugar de elementos privados. Suponiendo herencia pblica, los elementos protegidos son accesibles a las funciones miembro de todas las clases derivadas.
Herencia Simple.

Cuando slo se tiene una clase base de la cual hereda la clase derivada, se dice que hay herencia simple (Figura 1.a). Sin embargo, la herencia simple no excluye la posibilidad de que de una misma clase base se pueda derivar ms de una subclase o clase derivada. .

class Base { private: // Miembros declarados en la seccin privada: accesibles slo para miembros de esta clase protected: /* Miembros declarados en la seccin protegida: accesibles slo para miembros de esta clase y de sus derivadas */ public: // Miembros declarados en la seccin pblica: accesibles para todos };

Para declarar una clase derivada de una clase previamente definida se utiliza la siguiente sintaxis: class Base { // Declaracin de atributos y mtodos de la clase Base }; // Relacin de herencia pblica entre las clases Base y Derivada class Derivada : public Base { // Declaracin de atributos y mtodos de la clase Derivada };

Con la palabra reservada public en el encabezado de la declaracin de la clase Derivada se hace referencia a que dicha clase hereda los atributos y mtodos de la clase Base .La declaracin del constructor de la clase Derivada debe incluir un llamado al constructor de la clase Base. Para ello se utiliza la siguiente sintaxis: Derivada :: Derivada (parmetros) : Base (parmetros propios de la clase Base) { // Cuerpo del constructor de la clase Derivada }

Anda mungkin juga menyukai