View
215
Download
0
Category
Preview:
Citation preview
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
BIENVENIDOS
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Unidad 1:
Introducción a las
estructuras de datos
Joyanes Aguilar Luis (2006). Programación en C++. Algoritmos, estructuras de datos y otros objetos. Madrid: Mc Graw Hill
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Agenda de contenido temático
Tema Fecha Fuente
1.1 Tipos de datos abstractos (TDA) Martes 21 agosto Programación en C++. Algoritmos, estructuras de datos
y otros objetos (Págs. )
1.2 Modularidad Miércoles 22 de agosto
Programación en C++. Algoritmos, estructuras de datos
y otros objetos (Págs. )
1.3 Uso de TDA Jueves 23 de agosto
1.4 Manejo de memoria estática Lunes 27 de agosto Programación en C++. Algoritmos, estructuras de datos
y otros objetos (Capítulos 7, 8 y 9)
1.5 Manejo de memoria dinámica Miércoles 29 de agosto
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Agenda de actividades y/o productos
Actividades Porcentaje Fecha entrega
Evaluación continua
Resumen 10
PermanenteCuadro comparativo 10Práctica de ejercicios 20
Proyecto 20 31 agosto
Quiz 10 31 agosto
Autoevaluación 10 3 septiembre
Examen 20 3 septiembre
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Concepto de estructura de datos
Colección de datos que se caracterizan por su organización y por las operaciones que se definen en ellos.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Concepto de estructura de datos
En programación, una estructura de datos es una forma de organizar un conjunto de datos elementales (un dato elemental es la mínima información que se tiene en el sistema) con el objetivo de facilitar la manipulación de estos datos como un todo o individualmente.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Operaciones
Las operaciones básicas son: Agregar y Borrar.
Otras operaciones frecuentes son:Buscar, Mostrar y Ordenar.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Ventajas y desventajas
Cada estructura ofrece ventajas y desventajas en relación a la simplicidad y eficiencia para la realización de cada operación.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Elección de la estructura de datos
La elección de la estructura de datos apropiada para cada problema depende de factores como la frecuencia y el orden en que se realiza cada operación sobre los datos.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.1 Tipos de datos abstractos
John Guttag (1974)1:Un tipo de dato abstracto es aquel definido por el programador quepuede ser manipulado de forma similar a los definidos por el sistema.
1Disponible en: http://quegrande.org/apuntes/EI/1/EDI/teoria/07-08/tad_-_que_es_un_tad.pdf
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.1 Tipos de datos abstractos
Modelo matemático (tipo de dato complejo) + conjunto deoperadores del modelo
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.1 Tipos de datos abstractos
Son diferentes:- tipo de dato básico (operadores+ valores),- dato estructurado o compuesto- tipo de dato abstracto
• TDA generaliza los tipos de datos• Facilita la encapsulación / depuración
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.1 Tipos de datos abstractos
UNA VEZ DEFINIDO EL TDA:• sólo se puede acceder a los objetos del TDA mediante sus operadores,• ya no es necesario conocer cómo seimplementan,• no debe hacerse referencia a los detalles de implementación
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.2 Modularidad
Permite:• Descomponer un problema en
partes o módulos.• Implementar el programa
mediante módulos.• Cada módulo resuelve un sub-
problema del programa.
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.2 ModularidadProgramación modular:
• realización de un programa mediante módulos,
• cada módulo resuelve un sub-problema del programa
Ventajas del enfoque modular:• permite el desarrollo independiente de
módulos (en grupo),• facilita la depuración,• encapsulación
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.2 ModularidadHasta ahora:programación modular = uso de algoritmos o procedimientos independientes que manipulan tipos de datos propios o predefinidosLos algoritmos:
• generalizan operadores sobre datos (no elementales),
• facilitan la encapsulación
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.3 Uso de un TDA
ArreglosListasPilasColasArbolesGrafos
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.3 Ejemplos de TDATDA matrizEstructura de más de dos dimensiones de elementos de un tipo base,por ejemplo, matriz de 2 dimensiones de numérico.
Operaciones del TDA Matriz• Crear (M: Matriz, Filas: numérico, Columnas: numérico, OK: lógico)• Borrar(M: Matriz, OK: lógico)• Sumar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lógico)• Restar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lógico)• Multiplicar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lógico)• División (M1: Matriz, M2: Matriz, M3: Matriz, OK: lógico)• Determinante (M: Matriz, d: numérico, ok: lógico)• Compatibles? (M1: Matriz, M2: Matriz, operación: Carácter, Ok:lógico)
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
1.3 Ejemplos de TDA
Posible implementación{Tipo}Matriz = registro denum_fil, num_col: numérico;datos: Vector [1..M, 1..N] de T; {num_fil <= M, num_col <= N}fin_registro
Cada una de las operaciones suele llevar una cabecera donde seespecifica:- condiciones para utilizar el operador,- efecto/s del operador (tanto sobre los parámetros como sobre elentorno)
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
La memoria estática es el espacio de memoria ram que se reserva mediante la declaración de las constantes, variables y estructuras correspondientes, previo a la ejecución de un programa, y que no cambia durante la ejecución de éste.
1.4 Manejo de la Memoria Estática
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
• El lenguaje C++ maneja cuatro tipos de datos básicos: int, float, char y double.
• Estos tipos de datos están integrados en todas las computadoras.
• Los tipos ints tienen tres calificadores: short, long y unsigned.
1.4 Manejo de la Memoria Estática
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria EstáticaTipo de
datoTamaño
char 8 bits
Int 16 bits
Long int 32 bits
Double 32 bits
float 32 bits
bool 1 bits
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática
Una declaración de variable establece que debe reservarse almacenamiento o memoria para un objeto de tipo especificado y que es posible hacer referencia al objeto en tal localidad de memoria con el identificador de variable definido.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática
• En este caso, podemos considerar al lenguaje C++ como una máquina nueva con sus propias capacidades, tipos de datos y operaciones que nos permite plantear la solución a un problema en términos de las estructuras más útiles de C++.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática• El estudio de las estructuras de
datos implica dos propósitos complementarios:
1. Identificar, desarrollar entidades y operaciones matemáticas útiles determinando que clases de problemas se solucionan con ellas.
2. Determinar representaciones para dichas entidades abstractas e implementar las operaciones para la estructura de datos
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática
• Una consideración fundamental en cualquier implementación es su eficiencia, y esta se mide por dos factores: el tiempo y el espacio.
• Generalmente, una implementación que es rápida usa más almacenamiento que una lenta.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática
Arreglos• Arreglos de caracteres• Arreglos de estructuras • Arreglos como parámetros• Arreglos multidimensionales• Ordenamientos• Búsquedas
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática• Los Arreglos son tipos de datos
compuestos o estructurados que existen en el lenguaje C.
• Un arreglo, se define en forma abstracta como un conjunto finito y ordenado de elementos homogéneos.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática• La declaración en C de un arreglo puede
serint b[100]; // especifica un array de 100 elementos
• Las dos operaciones básicas sobre un arreglo son el almacenamiento y la extracción .
• Se utilizan un arreglo cuando es necesario conservar en una forma uniforme una gran cantidad de artículos en la memoria y la referencia a todos ellos.
1.4 Manejo de Memoria EstáticaRepresentación en memoria de un arreglo.
99
98
97
.
.
2
1
01.98
1.73
1.71
1.76
1.74Dirección
Contenido de la dirección
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática
• La declaración anterior reserva 100 localidades de memoria sucesivas, cada una lo bastante grande para contener un entero único.
• La dirección de la primera de estas localidades se denomina la dirección base del arreglo b y se representa mediante base(b).
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática1.Realice un programa en C que implemente un vector de 100
números enteros generados aleatoriamente (entre 1 y 100) y:1) Genere los números2) Muestre los números generados3) Calcule la suma de los números4) Calcule el promedio de dichos números5) Localice al elemento mayor. y el elemento menor6) Calcule la memoria estática utilizada por dicho programa.7) Clasifique los elementos en Par e Impar8) Ordene usando el método de la burbuja9) Calcule la desviación de cada entero respecto al promedio.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Estática2.Realice un programa en C que implemente un vector para almacenar 20 estructuras con la siguiente información:CD id titulo artista num_canciones precio
Considere las siguientes funciones:
1. Ingresar2. Mostrar 3. Eliminar (el indicado por el usuario)4. Consultar (si existe elemento indicado por el
usuario.5. Modificar el elemento indicado por el usuario.
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
1.5 Memoria dinámica
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
La memoria dinámica es el espacio de memoria ram que se reserva mediante la gestión de bloques de memoria en tiempo de ejecución y se libera en el mismo tiempo.Su característica principal es que crece y decrece en tiempo de ejecución
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
CONCEPTO. Un puntero C++ es la dirección de una variable.Los punteros se rigen por cuatro reglas básicas:1. Un puntero es una variable como cualquier otra2. Una variable puntero contiene una dirección que
apunta a otra dirección de memoria3. En la dirección almacenada están los datos a los que
apunta el puntero4. Un puntero apunta a una variable de memoria
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
Operador Propósito
& Obtiene la dirección de una variable
* Declara una variable como puntero
NEW Gestiona un bloque de memoriapuntero=NEW tipo
delete Libera un bloque de memoriadelete(puntero);
Operadores
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
Ejemplo:Void main(){Int n=75;Int* p = &n; //p contiene la dirección de nCout<<“n= “<<n<<“, “<<&n<<endl;Cout<<“p= “<<p<<endl;Cout<<“&p= “<<&p<<endl;}
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
A B C D
0
1 C4
2
3
4 75
5
n
p
==IMPORTANTE==La dirección de n es “C4”La dirección de p es “D1”El valor o contenido de n es 75El valor o contenido de p es “C4”P es una variable puntero que solo puede contener direcciones de memoria
Representación gráfica
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
EL PUNTERO NULO
• Un Puntero nulo no apunta a ninguna parte, es decir, no direcciona ningún dato válido en memoria.
• Únicamente se utiliza para conocer cuándo un puntero apunta a una dirección válida.
• Se utiliza la macro NULL definida en la librería stdio.h
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
Ejemplo:
class lista { private:
struct Nodo {
int claveChar nombre[30];Int edad;Float estatura;Int peso;
Nodo *siguiente; };
Nodo *principio, *final;
public: lista(){ principio=NULL; final=NULL;}Void insertar_al_final();Void mostrar();Void eliminar_al_Principio();};
Se puede declarar un puntero a una
estructura tal como se declara un
puntero a cualquier otro objeto.
Punteros a estructuas
Instituto Tecnológico de ColimaDepartamento de sistemas y Computación
Estructura de Datos Plan 2010
• Utilizando memoria dinámica realice una lista enlazada simple que incluya el siguiente menú:
== OPERACIONES CON LISTAS ENLAZADAS SIMPLES ==1. Insertar al final2. Mostrar3. Eliminar al principio4. Consultar0. Salir Elija una opción [ ]
Práctica de ejercicios
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Tareas
1. Práctica de ejercicios: MEMORIA ESTÁTICA
1. Vector de enteros con 10 métodos2. Matriz con sumas de filas y columnas3. Vector de registros
MEMORIA DINÁMICA4. Lista simple de números enteros con 4 métodos
(Insertar, Mostrar, Eliminar, Memoria utilizada)2. Cuadro comparativo de memoria estática & Memoria dinámica: definición, tipo de memoria, construcción física, costo, espacio físico, administración, tipo promedio de acceso, velocidad, implementación, liberación, grado de dificultad de programación, dirección, ventajas, desventajas, consumo de energía
Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales
Estructuras de Datos
Fuentes bibliográficas
1. Joyanes, Luis. (2006). Programación C++. Estructuras de datos y otros objetos. México: Mc Graw Hill.
2. Scrib. (Sin fecha). Programación orientada a objetos. Disponible en: http://es.scribd.com/doc/36724636/Programacion-Orientada-A-Objetos-Luis-Joyanes-Aguilar
Recommended