2. 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;
};
3. 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
4. • 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.
5. • 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.
6. • 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;
7. 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.
8. • 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.
9. 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.
10. 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.
11. 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.
12. 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.
13. 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.
14. 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
15. 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.
16. 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.
17. 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.
18. • 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.