instituto tecnológico de colima ingeniería en sistemas computacionales estructuras de datos...

44
Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

Upload: mauricio-sarmiento

Post on 22-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales

Estructuras de Datos

BIENVENIDOS

Page 2: Instituto Tecnológico de Colima Ingenierí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

Page 3: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 4: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 5: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 6: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 7: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 8: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 9: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 10: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 11: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 12: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 13: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 14: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 15: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 16: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 17: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

Instituto Tecnológico de ColimaIngeniería en Sistemas Computacionales

Estructuras de Datos

1.3 Uso de un TDA

ArreglosListasPilasColasArbolesGrafos

Page 18: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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)

Page 19: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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)

Page 20: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 21: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 22: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 23: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 24: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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++.

Page 25: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 26: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 27: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 28: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 29: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 30: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 31: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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).

Page 32: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 33: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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.

Page 34: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

Instituto Tecnológico de ColimaDepartamento de sistemas y Computación

Estructura de Datos Plan 2010

1.5 Memoria dinámica

Page 35: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 36: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 37: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 38: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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;}

Page 39: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 40: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 41: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 42: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 43: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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

Page 44: Instituto Tecnológico de Colima Ingeniería en Sistemas Computacionales Estructuras de Datos BIENVENIDOS

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