Tipos de datos abstractos

18
TIPOS DE DATOS ABSTRACTOS.

Transcript of Tipos de datos abstractos

TIPOS DE DATOS ABSTRACTOS.

DATOS ABSTRACTOS

• Definición: es un tipo de dato creado por el programador, puede contener varios tipos de

datos propios del lenguaje.

• Creación: fuera del main se define, se escribe “struct” seguido del nombre de nuestro dato, y

entre llaves se declaran los componentes de nuestro dato. Ejemplo: dato abstracto alumno

que registre nombre y edad.

struct alumno{

string nombre;

int edad;

};

CREACIÓN

• Para la construcción de tipos abstractos se debe:

1) Establecer la definición del tipo

2) Definir también las operaciones (funciones y procedimientos) que

pueden operar con dicho tipo

3) Ocultar la presentación de los elementos del tipo de modo que sólo se

puede trabajar con ellos usando los procedimientos definidos en el paso 2

4) Poder crear instancias múltiples del tipo

• Para declarar TDA se necesita de dos palabras reservadas en C++.

• Una de ellas es struct, permite crear un tipo de datos compuestos de uno o varios

elementos llamados campos. Ejemplo:

Struct Tipo_Alumno {

string nombre;

int edad;

doble altura;

doble peso;

}

• En este caso se creó un nuevo tipo de dato llamado “Tipo alumno”, conformado con 4 elementos: cadena, entero, y dos

números dobles.

• La segunda palabra reservada es typedef, esta se utiliza para definir el “alias” o

sinónimo de nuestro tipo de datos. Ejemplo:

typedef struct Tipo_Alumno Alumno;

• Esta sentencia define un nuevo tipo de dato llamado “Alumno” que contiene la misma estructura y elementos que la estructura

Tipo_Alumno definido anteriormente. Con esto existiría un

nuevo tipo en el lenguaje llamado alumno.

• La sintaxis de las dos palabras claves es:

Struct identificador_1{

nombre_del_tipo elemento_1;

nombre_del_tipo elemento_;

nombre_del_tipo elemento_3;

};

Typedef struct dentificador_1 sinónimo;

OPERACIONES SOBRE UN TDA

• Generalmente pueden clasificarse en:

1. Construcción: crean nueva instancia del tipo.

2. Transformación: cambia uno o más elementos del tipo:

3. Observación: permite determinar el valor de uno o más elementos de un

tipo sin modificarlos.

4. Iteradores: permiten procesar todo los elementos de un TDA en forma

secuencial.

• No se analizará la creación cada operación.

• Forma en que se puede acceder cada uno de los elementos de una estructura de datos:

Gabriel.edad 35;

Antonio.altura = 1.76;

Después del nombre de la estructura, para acceder a los elementos de dicha estructura

se utiliza un punto y el nombre del elemento al que se quiera acceder.

Cuando se logra acceder, los elementos de estas estructuras se pueden manipular como

cualquier otra variable de su mismo tipo.

APLICACIONES DE TDA

• Las aplicaciones comunes son la definición de una lista o una pila.

Una pila es una colección dinámica de datos de un mismo tipo, en la que los

elementos se insertan y se extraen por el mismo extremo.

Una lista igual es una colección dinámica de datos de un mismo tipo, para

acceder a cada uno de los elementos es posición. Cada elemento tiene un

único predecesor (excepto el primero) y un único sucesor (excepto el ultimo)

No entraremos en detalle con estas aplicaciones.

MEMORIA

• La memoria se refiere a parte de los componente que forman una

computadora, estas retienen datos informáticos durante un determinado

intervalo de tiempo.

ESTÁTICA

• Una variable está tica no cambia su valor durante la vida del proceso en

ejecución.

• Los valores de variables estáticas se pueden establecer una ves (durante el

tiempo de ejecución) o se puede cambiar en múltiples ocasiones durante la

ejecución del programa.

PROGRAMACIÓN DINÁMICA

• Es un método para reducir el tiempo de ejecución de un algoritmo mediante

la utilización de subproblemas superpuestos y subestructuras óptimas.

• En 1953 el matemático Richard Bellman inventó la Programación Dinámica, la

cual se utiliza para optimizar problemas complejos que pueden ser

discretizados y secuencializados.

MEMORIA ESTÁTICA

• Es la que se reserva en el momento de la compilación antes de comenzar a ejecutar

el programa. Los objetos son creados al iniciar el programa y destruidos al finalizar

el mismo.

Consideraciones

Error en tiempo de ejecución de índice fuera de rango.

Se debe conocer de antemano el tamaño de la estructura.

Se guarda en memorias adyacentes, ejemplo: vectores, matrices, cubos, registros, archivos.

Ventajas:

Lógica simple.

Optimo para resolver problemas pequeños y medianos.

Desventajas:

No se puede modificar el tamaño de la estructura en tiempo de ejecución

No es optima con grandes cantidades de datos

Desperdicio de memoria cuando se utiliza la totalidad del tamaño

MEMORIA DINÁMICA

• Es aquella que no puede ser definida ya que no se conoce o no se tiene idea

del numero de la variable a considerarse.

• La memoria dinámica permite solicitar memoria en tiempo de ejecución al

sistema operativo.

• Este tipo de datos se crean y se destruyen mientras se ejecuta el programa,

así la estructura de datos se dimensiona de acuerdo a los requerimientos del

programa, evitando perder datos o desperdiciar memoria.

Consideraciones:

Manejo transparente del tamaño de la estructura.

Se guarda donde encuentra espacio.

No se guarda necesariamente en memoria adyacente.

Ventajas

El tamaño de la estructura no infiere en la lógica del programa

desventajas

Las estructuras de datos son una forma avanzada de manejar datos en tiempo de ejecución.

CONCLUSIONES GENERALES

• En esta unidad vimos los tipos de datos abstractos que sirven para crear

nuevos tipos de datos según lo requiera el programa, por ejemplo un tipo de

dato llamado “producción” que contenga string para nombre_producto;

int para cantidad; y float para tiempo_elaboración.

• Otro tema que analizamos es la memoria estática, la cual no cambia de valor

durante la ejecución del programa, es fácil de utilizar para programas que no

sean muy complejos. Y la desventaja es que se desperdicia la memoria que no se

ocupe y si se pasa del limite ocurre un desbordamiento de memoria.

• Esto se puede utilizar en programas pequeños en los que se sepa la cantidad de

memoria necesaria, por ejemplo; un programa para una escuela que lleve el

registro de un determinado número de maestros o alumnos.

• En el caso de la memoria dinámica aquella que puede ser definida en el momento

de la ejecución ya que no se conoce, es decir, durante el tiempo de ejecución se

puede pedir memoria al sistema operativo. En el caso de este tipo de memoria no

se guarda en un determinado lugar o en uno definido, se guarda donde haya

espacio.