Documente Academic
Documente Profesional
Documente Cultură
Que es una abstraccin? Un proceso mental, mediante el cual se extraen los rasgos esenciales de algo para representarlos por medio de un lenguaje grfico o escrito.
Puesto que es un proceso mental la accin es una accin subjetiva y creativa, esto es depende del contexto psicolgico de la persona que lo realiza.
Est formado por un conjunto vlido de elementos y un nmero de operaciones primitivas que se pueden realizar sobre ellos.
Para construir un tipo abstracto debemos: 1. Exponer una definicin del tipo. 2. Definir las operaciones (funciones y procedimientos) que permitan operar con instancias de ese tipo. 3. Ocultar la representacin de los elementos del tipo de modo que slo se pueda actuar sobre ellos con las operaciones proporcionadas. 4. Poder hacer instancias mltiples del tipo.
ESTRUCTURA DE DATOS
Cualquier coleccin o grupo de datos organizados de tal forma que tengan asociados un conjunto de operaciones para poder manipularlos, se dice que conforma una estructura de datos.
MODULARIDAD
La Modulariad descompone un programa en un pequeo nmero de abstracciones independientes unas de otras pero fciles de conectarse entre si. Un mdulo se caracteriza principalmente por su interfaz y su implementacin.
USO TDA
Un TDA es el elemento bsico de la abstraccin de datos. Debe verse como una caja negra, pues la representacin y la implementacin deben permanecer ocultas El programador no tiene que preocuparse de cmo se representa un tipo particular de datos y slo tiene que trabajar con ellos en base a las especificaciones sintcticas y semnticas del diseador. 1. Determinar, ante un problema, los objetos candidatos a tipos de datos, estn o no estn en el lenguaje de partida. 2. Identificar las operaciones bsicas, primitivas entre dichos objetos. 3. Especificar dichas operaciones 4. Construir un programa, que usando estos tipos y estas operaciones resuelva el problema original. 5. Implementar los tipos y operaciones que no estn en el lenguaje de partida, con los elementos de dicho lenguaje 6. Determinar la eficiencia de la implementacin.
MANEJO DE MEMORIA
Para implementar alguna estructura de datos, primero es necesario tener muy claro cmo va a ser el manejo de memoria
C1 C2 .... Cn
Componentes
i0
i1
in
ndices
Componentes: Hacen referencia a los elementos que forman el arreglo. ndices: Permiten referirse a los componentes del arreglo en forma individual.
14 43 .... 4 x0
Componentes ndices
x1
x9
X hace referencia a todo el vector, mientras que x0, o x1 hace referencia los elementos en forma individual
Cada elemento del arreglo se puede procesar como si fuera una variable simple. Ejemplo:
Suma X[2] i X[i] Suma + x[2] 15 3 15
15
X[i+2]
Sobre los vectores se pueden realizar las siguientes operaciones: Lectura/Escritura, Asignacin, Actualizacin (insertar, eliminar, Modificar), Ordenamiento y Bsqueda.
Indices
34 43 90 83 2 41 56 75 3
0
1 2
Componentes
Tipo registro: Domicilio Cadena: Calle Entero: Numero Cadena: Ciudad Fin Tipo Tipo registro: Cliente Cadena: Nombre Domicilio: Direccin Real: Saldo Fin Tipo
Cliente
Direccin
Nombre
Cll Num Ciu
Saldo
Array [0...2] de Real:Vector Tipo registro: Estudiante Cadena: Nombre Cadena: Cdigo Vector: Notas Fin Tipo
Nombre
Estudiante
Notas
Cdigo
En C++ no se puede asignar un arreglo completo a otro arreglo, es decir esto no se puede hacer: Char A[10], B[10]; . B = A; // No se puede asignar
struct unProducto { char name_prod[MAXCAD]; int cantidad; int precio ; int subtotal; }; struct variosProductos { int numProd ; unProducto vp[MAX_PV]; int precioTotal ; };
// numero de productos por vendedor //varios productos cada uno en una posicin del vector
struct Vendedor { char nombre[MAXCAD] ; char apellido[MAXCAD] ; char direccion[MAXCAD]; int ID ; variosProductos P ; };
struct Vendedor lista[MAX_V]; // Se crea un arreglo de vendedores struct Vendedor aux;
ptrcont
29DC
cont 2
Texto, Datos (estaticos), Pila y una Zona Libre. Esta zona libre (o Heap) es la que va a contener los datos dinamicos, la cual, a su vez, en cada instante de la ejecucion tendra partes asignadas a los mismos y partes libres que fragmentaran esta zona, siendo posible que se agote si no se liberan las partes utilizadas ya inservibles. (La pila tambien varia su tamano dinamicamente, pero la gestiona el sistema operativo, no el programador):
Fsicamente, un puntero no es ms que una direccin de memoria. En el ejemplo de la imgen derecha se muestra el contenido de la memoria con un puntero que apunta a la direccin 78AC(16, la cual contiene 6677(16:
La referenciacin es la obtencin de la direccin de una variable. En C++ esto se hace a travs del operador &, aplicado a la variable a la cual se desea saber su direccin.
Ejemplo: int int p = q = i = 5; *p, *q; &i; // Se le asigna a p la direccin de i p; // Se le asigna a q la direccin almacenada en p (la misma de i)
La desreferenciacin es la obtencin del valor almacenado en el espacio de memoria donde apunta un apuntador. En C++ esto se hace a travs del operador *, aplicado al apuntador que contiene la direccin del valor.
Ejemplo: int x = 17, y; int *p; p = &x; cout << "El valor de x es: " << *p << endl; // Imprime 17 y=*p+3; // a y se le suma 3 ms para valer 20
C++ ademas provee el operador binario ->, utilizado para obtener campos de un registro con un apuntador al mismo de una manera m as facil y legible.
struct Datos { char nombre[20]; int edad;
};
Datos d; Datos *pd = &d; (*pd).edad = 23; // Acceso al campo edad utilizando el operador . pd->edad = 23; // Acceso al campo edad utilizando el operador ->
Operadores new y new[ ] Para solicitar memoria dinmica es: pointer = new type o pointer = new type [elementos]
int * empleado; empleado = new int [5]; If (empleado == NULL) { // error en la asignacin... };
empleado Operador delete y delete [] Una vez que no se necesita ms debera ser liberada para que se convierta en disponible para futuras solicitudes de memoria dinmica. Para este propsito existe el operador delete, cuya forma es: delete pointer; o delete [] pointer;