Download - Estructurade datos
INSTITUTO TECNOLÓGICO SUPERIOR DE FELIPE CARRILLO PUERTO
Ingeniería en Sistemas Computacionales.
Asignatura: Estructura de Datos
Unidad 1
Diapositivas: Evidencia de la unidad 1
Tipos de datos abstractos-Memoria estática y dinámica.
Profesor: MTI. Niels Henryk Aranda Cuevas
Alumno: David Elizama Pool Chan
Aula: “J3” Grupo: “A”
Felipe Carrillo Puerto Quintana Roo a 28/09/2014
Tipos de Datos Abstractos
Un Tipo de Dato Abstracto (TDA) es un tipo de dato definido por el
programador, si los tipos de datos existentes en el lenguaje no son suficientes
o no son eficientes para ciertas aplicaciones, la mayoría de los lenguajes de
programación permiten al usuario definir sus propios tipos de datos, consiste
en establecer los elementos de que consta el tipo así como las operaciones
que se pueden realizar con instancias de este tipo.
Declaración
Para declarar un TDA se debe:
• struct: define una estructura de datos; se dice que permite crear un tipo de
datos que está compuesto de uno o varios elementos denominados campos.
• typedef: se utiliza para definir el “alias” o sinónimo de un tipo de datos.
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 2)
4. Poder crear instancias múltiples del tipo
La declaración de TDA’s requiere al menos el uso de dos palabras reservadas en
C++ (struct, typedef ).
Nuevo TDA
Elementos del TDA
La sintaxis de las dos palabras claves incluidas aquí es la siguiente:
struct identificador_1 { nombre_del_Tipo elemento_1; nombre_del_Tipo elemento_2; … nombre_del_Tipo elemento_n; };typedef struct identificador_1sinonimo;
Primerapalabra clave
Segundapalabra clave
Operaciones sobre un TDA
Tipos básicos de operaciones que se aplican a un TDA :
Ejemplo:
1. Construcción: Crean una nueva instancia del tipo.
2. Transformación: Cambian el valor de uno o más elementos del tipo.
3. Observación: Permiten 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.
Gabriel.edad = 25;
Antonio.altura = 1.76;
Luego del nombre de la estructuras el
acceso a sus elementos se realiza usando
un punto y el nombre del elemento al quese quiere acceder.
Elementos
Logrado el acceso, los elementos de estas estructuras se pueden manipular como
cualquier otra variable de su mismo tipo.
Aplicaciones tradicionales de los TDA para la definición de una pila
o de una lista :
1. Pila: es una colección dinámica de datos de un mismo tipo, en la que los
elementos se insertan y se extraen por un mismo extremo.
2. Lista: también es una colección dinámica de datos de un mismo tipo, pero
en este caso el acceso a cada uno de los elementos es por posición; se
considera aquí que cada elemento de la lista tiene un único predecesor
(excepto el primer elemento) y un único sucesor (excepto el último
elemento).
Aplicaciones
MEMORIA ESTÁTICA Y DINÁMICA
La memoria (también llamada almacenamiento) se refiere a uno de los
componentes fundamentales que forman parte de una computadora, son
dispositivos que retienen datos informáticos durante algún intervalo de tiempo.
las memorias de computadora proporcionan unas de las principales funciones de
la computación moderna, la retención o almacenamiento de información.
¿Qué es memoria?
En informática una variable estática es una variable cuyo valor no varía durante
la vida del proceso en ejecución. normalmente una variable estática tiene un
ámbito más amplio que otras variables.
los valores de variables estáticas se pueden establecer una vez (durante el
tiempo de ejecución) o se pueden cambiar en múltiples ocasiones durante la
ejecución del programa.
¿Qué es estática?
Es la memoria 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. mantienen la misma localización en memoria
durante todo el transcurso del programa hasta que son destruidos.
Los objetos administrados de este modo son: variables globales, variables
estáticas de funciones, miembros static de clases y literales de cualquier tipo.
Memoria estática
• Error en tiempo de ejecución de índice fuera de rango
• Se debe conocer con anticipación el tamaño de la estructura V [3 ], M[2,2], C[5,3,2]
• Se guarda en memoria adyacente (vectores, matrices, cubos, registros, archivos)
Ventajas
• Lógica simple
• Optimo para resolver problemas P y M
Desventajas
• No se puede modificar el tamaño de las estructuras en T.D.E
• No es óptima con grandes cantidades de datos
• Desperdicio de memoria cando no se utiliza la totalidad del tamaño por ejemplo
V[100]
Consideraciones memoria estática
¿QUÉ ES DINÁMICA?
En informática, la 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.
El matemático Richard Bellman inventó la programación dinámica en 1953 que se utiliza
para optimizar problemas complejos que pueden ser discretizados y secuencializados.
MEMORIA DINÁMICA
Se refiere a aquella memoria que no puede ser definida ya que no se conoce o no se
tiene idea del número de la variable a considerarse, la solución a este problema es la
memoria dinámica que permite solicitar memoria en tiempo de ejecución, por lo que
cuanta más memoria se necesite, más se solicita al sistema operativo. El sistema
operativo maneja la memoria gracias al uso de punteros, por la misma naturaleza del
proceso nos impide conocer el tamaño de la memoria necesaria en el momento de
compilar.
• manejo transparente del tamaño de la estructura
• se guarda donde se encuentra el 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.
Consideraciones memoria dinámica
En esta primera unidad tuvimos la oportunidad de aprender sobre los principios
básicos la estructura de datos, ya sean los tipos de datos abstractos que existen
y como emplearlos de manera correcta a la hora de programar haciendo uso de
la modularidad para facilitar el manejo del los problemas haciendo mas fácil la
lectura y comprensión del código así también como para reducir el uso de líneas
de código innecesario o poco optimizado.
Conclusión general