SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Instituto Tecnológico Superior de Guasave
Ingeniería en Sistemas Computacionales
Estructura de Datos
Unidad I: Introducción a las Estructuras de Datos
Mtro. José Antonio Sandoval Acosta
Retícula ISIC-2010-224: Programa: AED-1026/2016
Itsguasave.edu.mx
Competencia de la Unidad
Conoce y comprende las diferentes estructuras de datos, su clasificación y forma
de manipularlas para buscar la manera más eficiente de resolver problemas.
ESTRUCTURA DE DATOS
CLASIFICACIÓN DE ESTRUCTURAS DE DATOS
• Una estructura de datos es una clase de datos que se puede caracterizar por
su organización y operaciones definidas sobre ella. Algunas veces a estas
estructuras se les llama tipos de datos. en ellas encontramos las siguientes:
ESTRUCTURA DE DATOS
ESTRUCTURAS LÓGICAS DE DATOS:
En un programa, cada variable pertenece a alguna estructura de datos
explícita o implícitamente definida, la cual determina el conjunto de
operaciones validas para ella. Las estructuras de datos que se discuten aquí
son estructuras de datos lógicas.
Cada estructura de datos lógica puede tener varias representaciones físicas
diferentes para sus almacenamientos
CLASIFICACIÓN DE ESTRUCTURAS DE DATOS
ESTRUCTURA DE DATOS
ESTRUCTURAS PRIMITIVAS Y SIMPLES:
Son primitivas aquellas que no están compuestas por otras estructuras de
datos, por ejemplo: enteros, booleanos y caracteres. Otras estructuras de
datos se pueden construir de una o mas primitivas.
Las estructuras de datos simples que consideramos se construyen a partir de
estructuras primitivas y son: cadenas, arreglos, matrices y registros.
A estas estructuras de datos las respaldan muchos lenguajes de
programación.
CLASIFICACIÓN DE ESTRUCTURAS DE DATOS
ESTRUCTURA DE DATOS
ESTRUCTURAS LINEALES Y NO LINEALES:
Las estructuras de datos simples se pueden combinar de varias maneras para
formar estructuras mas complejas. Las dos cases principales de estructuras
de datos son las lineales y las no lineales, dependiendo de la complejidad de
las relaciones lógicas que representan.
• Las estructuras de datos lineales incluyen pilas, colas y listas ligadas
lineales.
• Las estructuras de datos no lineales incluyen grafos y árboles.
• Ejercicio de clase: Realice el cuadro sinóptico de la clasificación de las
estructuras de datos
ESTRUCTURA DE DATOS
Tipos de Datos Abstractos
Algunos lenguajes de programación tienen características que nos permiten
ampliar el lenguaje añadiendo sus propios tipos de datos.
• Un tipo de dato definido por el programador se denomina tipo abstracto de
datos (TAD) para diferenciarlo del tipo fundamental (predefinido) de datos.
• En esencia un tipo abstracto de datos es un tipo que consta de datos
(estructuras de datos propias) y operaciones que se pueden realizar sobre esos
datos. Un TAD se compone de estructuras de datos y los procedimientos o
funciones que manipulan esas estructuras de datos.
ESTRUCTURA DE DATOS
• Es decir, los usuarios de un TAD se comunican con éste a partir de la interfaz
que ofrece el TAD mediante funciones de acceso.
• Las unidades de programación de lenguajes que pueden implementar un TAD
reciben distintos nombres:
ESTRUCTURA DE DATOS
Trabajando con Tipos Abstractos de Datos
Concepto de estructura:
• Una estructura es una colección de uno o más elementos, cada uno de los
cuales puede ser de un tipo de dato diferente.
• Cada elemento de la estructura se denomina miembro.
• Una estructura puede contener un número ilimitado de miembros.
• A las estructuras también se las llama registros.
ESTRUCTURA DE DATOS
• Definición del tipo de dato estructura: Una estructura es un tipo de dato
creado por el usuario, por tanto, es necesario definirlo antes de poder
utilizarlo. Un vez definido, podremos crear variables de tipo estructura.
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
• Declaración de variables de tipo estructura: Una vez definido el tipo de dato
estructura, necesitamos declarar variables de ese tipo (Como para cualquier
tipo de dato).
ESTRUCTURA DE DATOS
• Inicialización de variables de tipo estructura: Las variables de tipo estructura
las podemos inicializar de dos formas:
ESTRUCTURA DE DATOS
• Ejercicio de clase: Crear una estructura que contenga los campos básicos de
una agenda personal.
• Ejercicio de clase: Crear un registro que contenga los datos personales para
una nómina.
ESTRUCTURA DE DATOS
• Acceso a los miembros de una variable de tipo estructura: Una vez que hemos
declarado una variable de tipo estructura, podemos acceder a los miembros
de dicha variable:
ESTRUCTURA DE DATOS
Acceso a los miembros de una variable de tipo estructura:
ESTRUCTURA DE DATOS
Acceso a los miembros de una variable de tipo estructura:
ESTRUCTURA DE DATOS
• Ejercicio: Utilizando estructuras desarrolle un programa que permita la captura
de la información correspondiente a un disco, el programa debe repetir la
captura hasta que el usuario teclee enter en el nombre del disco:
Campos de la estructura
• Nombre del disco
• Cantidad de canciones
• Precio
• Fecha de Compra (dd/mm/aaaa)
El programa debe ser entregado en archivo ya probado en Dev C++
ESTRUCTURA DE DATOS
Modularidad
• Módulo: Un módulo que se supone que representa una función lógica es una
secuencia léxicamente continúa de instrucciones que se encuentra limitado
por elementos de fronteras y además se caracteriza por disponer de un
nombre o identificador.
• Módulo: Es aquél que está constituido por una o varias instrucciones
físicamente contiguas y lógicamente encadenadas, las cuales se pueden
referenciar mediante un nombre y pueden ser llamadas desde diferentes
puntos de un programa.
ESTRUCTURA DE DATOS
Un módulo puede ser:
Un programa
Una función
Una subrutina (procedimiento o función)
• La modularidad se basa en la descomposición de un problema en una serie de
sub problemas; dividiéndolo en pequeños módulos. Esta división exige la
presencia de un módulo denominado módulo de base o principal, y su función
es que controle los demás.
• El módulo principal coordina las llamadas a los módulos secundarios y pasa
los datos necesarios en forma de parámetros. A su vez cada modulo puede
contener sus propios datos y llamar a otros módulos o funciones.
ESTRUCTURA DE DATOS
Principios para asegurar diseños modulares:
Pocas interfaces: Cada módulo debe comunicarse con tan pocos como
sea posible.
Interfaces pequeñas (Acoplamiento débil): Si dos módulos se
comunican, deben intercambiar la menor información posible.
Interfaces explícitas: Cuando dos módulos se comunican, debe estar
claro en el texto de uno o de ambos.
Ocultación de la información: Toda la información sobre un módulo
debe ser privada al módulo, a menos que se haya declarado
específicamente como pública.
ESTRUCTURA DE DATOS
• La solución de un problema complejo puede obtenerse a menudo a partir de la
resolución de subproblemas más simples (estrategia “divide y vencerás”).
ESTRUCTURA DE DATOS
• Ejemplo:
ESTRUCTURA DE DATOS
• Ejemplo: Un programa debe calcular el IVA por cada operación de una factura de 3 elementos.
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]) {
float precio=0, cantidad=0, iva=0;
float subtotal=0, iva_total=0,
total_pago=0;
cout<<"capture cantidad 1:";
cin>> cantidad;
cout<<"capture Precio 1:";
cin>> precio;
iva=cantidad*precio*0.16;
iva_total=iva_total+iva;
subtotal=subtotal+
(cantidad*precio);
cout<< "IVA: " << iva <<endl;
cout<<"capture cantidad 2:";
cin>> cantidad;
cout<<"capture Precio 2:";
cin>> precio;
iva=cantidad*precio*0.16;
iva_total=iva_total+iva;
subtotal=subtotal+(cantidad*precio);
cout<< "IVA: " << iva <<endl;
cout<<"capture cantidad 3:";
cin>> cantidad;
cout<<"capture Precio3:";
cin>> precio;
iva=cantidad*precio*0.16;
iva_total=iva_total+iva;
subtotal=subtotal+(cantidad*precio);
cout<< "IVA: " << iva <<endl;
total_pago=subtotal+iva_total;
cout<< "IVA total: " << iva_total <<endl;
cout<< "Total a Pagar: " << total_pago
<<endl;
system("pause");
return 0;
}
ESTRUCTURA DE DATOS
#include <cstdlib>
#include <iostream>
using namespace std;
// módulo de cálculo de iva
float calc_iva(float precio, float cantidad)
{
float iva = precio*cantidad*0.16;
return iva;
}
int main(int argc, char *argv[]) {
float precio=0, cantidad=0, iva=0;
float subtotal=0, iva_total=0,
total_pago=0;
cout<<"capture cantidad 1:";
cin>> cantidad;
cout<<"capture Precio 1:";
cin>> precio;
iva=calc_iva(precio, cantidad);
iva_total=iva_total+iva;
subtotal=subtotal+(cantidad*precio);
cout<< "IVA: " << iva <<endl;
cout<<"capture cantidad 2:";
cin>> cantidad;
cout<<"capture Precio 2:";
cin>> precio;
iva=calc_iva(precio, cantidad);
iva_total=iva_total+iva;
subtotal=subtotal+(cantidad*precio);
cout<< "IVA: " << iva <<endl;
cout<<"capture cantidad 3:";
cin>> cantidad;
cout<<"capture Precio3:";
cin>> precio;
iva=calc_iva(precio, cantidad);
iva_total=iva_total+iva;
subtotal=subtotal+(cantidad*precio);
cout<< "IVA: " << iva <<endl;
total_pago=subtotal+iva_total;
cout<< "IVA total: " << iva_total <<endl;
cout<< "Total a Pagar: " << total_pago
<<endl;
system("pause");
return 0;
}
ESTRUCTURA DE DATOS
Ejercicio entregable: realice un programa que calcule el IVA, el DTA y el IGI a
productos que son importados a territorio nacional. Se debe realizar un módulo
que haga el calculo de los impuestos, ya sea que se calcule cada uno de ellos de
forma modular o que se haga un modulo general para todos los impuestos
Entregar el programa ya funcionando y probado en Dev C++
Tabla de impuestos
• IVA = 16%
• DTA = 8 por millar
• IGI depende del país de origen de la mercancía
USA = 0%
CAN = 0%
UK = 2%
EU = 0%
JP = 2%
CHN = 50%
BR = 5%
AUL = 2%
RU = 10%
IND = 10%
Datos necesarios por partida:
Producto
Cantidad
Precio
Unidad de Medida
País
IVA
DTA
IGI
Total
Nota: Cualquier
otro país paga el
40% de IGI.
ESTRUCTURA DE DATOS
Memoria Estática
• Para implementar alguna estructura de datos, primero es necesario tener muy
claro cómo va a ser el manejo de memoria.
• La diferencia entre estructuras estáticas y dinámicas esta en el manejo de
memoria. En la memoria estática durante la ejecución del programa el tamaño
de la estructura no cambia.
• La estructura que maneja memoria estática son los arreglos.
• Un arreglo es una colección finita, homogénea y ordenada de elementos. Es
finita porque todo arreglo tiene un límite, homogénea porque todos los
elementos son del mismo tipo y ordenada porque se puede determinar cuál es
el enésimo elemento.
ESTRUCTURA DE DATOS
Manejo de memoria dinámica
• En la memoria dinámica durante la ejecución del programa el tamaño de la
estructura puede cambiar.
• La memoria dinámica, es el espacio de almacenamiento que solicita una clase
o método en tiempo de ejecución. De esa manera, a medida que el proceso
requiere de más espacio se solicita al sistema operativo, sin que el proceso se
preocupe por donde serán asignados los datos, ni que espacios de memoria
nos entregara el sistema operativo.
• Así como existen estructuras de datos estáticas (arreglos), también existen
estructuras de datos dinámicas (listas y árboles).
ESTRUCTURA DE DATOS
Manejo de memoria dinámica
• Una lista es un conjunto de nodos que contiene información heterogénea. Los
nodos de una lista se encuentran enlazados o relacionados por medio de
direccionamientos de memoria como referencia, y se estructuran de la
siguiente manera:
ESTRUCTURA DE DATOS
La complejidad de un algoritmo o complejidad computacional, estudia
los recursos y esfuerzos requeridos durante el cálculo para resolver un
problema los cuales se dividen en: tiempo de ejecución y espacio en
memoria.
El factor tiempo, por lo general es más importante que el factor
espacio, pero existen algoritmos que ofrecen el peor de los casos en un
menor tiempo que el mejor de los casos, lo cual no es la mejor de las
soluciones.
El factor tiempo de ejecución de un algoritmo depende de la cantidad
de datos que se quieren procesar.
Análisis de Algoritmos
ESTRUCTURA DE DATOS
En computación al momento de realizar un programa
se debe obtener su algoritmo.
Cada programador puede tener un método
diferente de resolver un mismo problema.
Para ello está el análisis de algoritmos cuyo objetivo
es: la búsqueda de algoritmos eficientes.
ESTRUCTURA DE DATOS
Concepto de complejidad de algoritmos
• La mayoría de los problemas que se plantean en la actualidad se
pueden resolver con algoritmos que difieren en su eficiencia. Dicha
diferencia puede ser irrelevante cuando el número de datos es
pequeño pero cuando la cantidad de datos es mayor la diferencia
crece.
Ejemplo: Suma de 4 y 10 primero números naturales.
ESTRUCTURA DE DATOS
COMPLEJIDAD EN EL TIEMPO
Definiciones:
• T(n) Tiempo de ejecución del algoritmo.
• F(n) Tiempo al introducir los datos al algoritmo.
• El tiempo de ejecución de un algoritmo: se refiere a la suma de los
tiempos en los que el programa tarda en ejecutar una a una todas sus
instrucciones.
• Tomando en cuanta que cada instrucción requiere una unidad de tiempo,
dicho tiempo se puede calcular en función de n (el número de datos), lo
que se denomina T(n).
ESTRUCTURA DE DATOS
• Si hacemos un análisis de forma directa al programa para determinar el
tiempo de ejecución del mismo, debemos definir el conjunto de
operaciones primitivas, que son independientes del lenguaje de
programación que se use. Algunas de las funciones primitivas son las
siguientes:
• Asignación de un valor a una variable (X = 15).
• Llamada a un método (z = suma(2 + 4)).
• Ejecución de una operación aritmética (total = iva + subtotal).
• Comparar dos números (if (x > y)).
• Poner índices a un arreglo (z[i]).
• Retorno de un método (return x + y;).
ESTRUCTURA DE DATOS
• En forma específica, una operación primitiva corresponde a una instrucción en
el lenguaje de bajo nivel, cuyo tiempo de ejecución depende del ambiente de
hardware y software, pero es constante. Ejemplo. Método que retorna el
número mayor de un arreglo de n elementos.
int mayor(int arr[]) {
int may = arr[0];
for(int ind = 0; ind < arr.length; ind++)
if(arr[ind] > may)
may = arr[ind];
return may;
}
ESTRUCTURA DE DATOS
Para este ejemplo se pueden encontrar dos formulas que determinen el tiempo
de ejecución, la primera representa el peor de los casos y la segunda el mejor de
los casos. Para se creación se sigue el programa:
• La inicialización de la variable may = [0], corresponde a una unidad de tiempo.
• La inicialización del ciclo for agrega otra unidad de tiempo.
• La condición del ciclo for se ejecuta desde 1 hasta el tamaño del arreglo lo cual
agrega el número de unidades del tamaño del arreglo.
• El cuerpo del ciclo for se ejecuta el tamaño del arreglo 1 veces, para este caso
el número de operaciones del cuerpo del ciclo pueden ser 6 o 4 (condición del
if dos, asignación a may dos e incremento y asignación dos) en el peor o mejor
de los casos respectivamente. Por consiguiente el cuerpo del ciclo contribuye
con 4 (tamaño del arreglo 1) o 6 (tamaño del arreglo 1) unidades de tiempo.
ESTRUCTURA DE DATOS
Para que un algoritmo sea eficiente debemos tener en cuenta el
tiempo de ejecución, y la cantidad de memoria que va a requerir para
funcionar.
Aun que el problema se pueda resolver de varias maneras debemos
optar por implementar la solución más eficiente, es decir la que se
realice en el menor tiempo y con la menor cantidad de memoria.
EFICIENCIA DE LOS ALGORITMOS
ESTRUCTURA DE DATOS
COMPLEJIDAD EN EL ESPACIO
Se refiere a la memoria que utiliza un programa para
su ejecución; es decir el espacio de memoria que
ocupan todas las variables propias del programa.
Para calcular la memoria estática, se suman la cantidad
de memoria que ocupa cada una de las variables
declaradas en el programa.
Dicha memoria se divide en Memoria estática y
Memoria dinámica.
ESTRUCTURA DE DATOS
• Para calcular la memoria estática, se suman la cantidad de memoria que ocupa
cada una de las variables declaradas en el programa.
• Tomando en cuenta los tipos de datos primitivos del lenguaje de programación
java podemos determinar el espacio que requiere cada una de las variables de
un programa, de acuerdo a lo siguiente:
Tipo de Dato
Primitivo
Tamaño en
Bits
Tamaño en
Bytes
byte 8 1
char 16 2
short 16 2
int 32 4
float 32 4
long 64 8
double 64 8
• El cálculo de la memoria dinámica,
no es tan simple ya que depende
de cada ejecución del programa o
algoritmo y el tipo de estructuras
dinámicas que se estén utilizando.
ESTRUCTURA DE DATOS
SELECCIÓN DE UN ALGORITMO
• Una de las características primordiales en la selección de un
algoritmo es que este sea sencillo de entender, calcular, codificar y
depurar, así mismo que utilice eficientemente los recursos de la
computadora y se ejecute con la mayor rapidez posible con un eficaz
uso de memoria dinámica y estática.
• También para seleccionar correctamente el mejor algoritmo es
necesario realizar estas preguntas:
ESTRUCTURA DE DATOS
¿Qué grado de orden tendrá la información que vas a manejar? Entre mas
desordenada esté la información el algoritmo debe ser más robusto
¿Qué cantidad de datos vas a manipular? Una cantidad muy grande puede
hacer prohibitivo utilizar un algoritmo que requiera de mucha memoria
adicional.
¿Qué tipo de datos quieres ordenar? Algunos algoritmos sólo funcionan con
un tipo específico de datos (enteros, enteros positivos, etc.) y otros son
aplicables a cualquier tipo de dato.
¿Qué tamaño tienen los registros de tu lista? Algunos algoritmos realizan
múltiples intercambios (burbuja, inserción). Si los registros son de gran tamaño
estos intercambios son más lentos.
ESTRUCTURA DE DATOS
Bibliografía
• Joyanes, Zahonero. Estructura de Datos en C++. McGraw Hill. Madrid, España.
2007. ISBN: 978-84-481-5645-9.
ESTRUCTURA DE DATOS

Weitere ähnliche Inhalte

Was ist angesagt?

Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansDaniel Gómez
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalizaciónMarcelo Herrera
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooJosé Antonio Sandoval Acosta
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Rubi Veronica Chimal Cuxin
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datospepelebu1313
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datosJorge Garcia
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura linealesEnrique2194
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesJosé Antonio Sandoval Acosta
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..NANO-06
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoJosé Antonio Sandoval Acosta
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Osiris Mirerus
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosAngel Vázquez Patiño
 

Was ist angesagt? (20)

Arreglos c++
Arreglos c++Arreglos c++
Arreglos c++
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Arreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeansArreglos Bidimensionales - Java - NetBeans
Arreglos Bidimensionales - Java - NetBeans
 
16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales16 Curso de POO en java - arreglos unidimensionales
16 Curso de POO en java - arreglos unidimensionales
 
5. Ejercicios normalización
5. Ejercicios normalización5. Ejercicios normalización
5. Ejercicios normalización
 
Programacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma pooProgramacion orientada a objetos Unidad 1-intro al paradigma poo
Programacion orientada a objetos Unidad 1-intro al paradigma poo
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Estructura de Datos - Unidad II Recursividad
Estructura de Datos - Unidad II RecursividadEstructura de Datos - Unidad II Recursividad
Estructura de Datos - Unidad II Recursividad
 
Fundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacionalFundamentos de BD - unidad 3 modelo relacional
Fundamentos de BD - unidad 3 modelo relacional
 
Unidad 3 estructura lineales
Unidad 3 estructura linealesUnidad 3 estructura lineales
Unidad 3 estructura lineales
 
Estructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras LinealesEstructura de Datos -Unidad III: Estructuras Lineales
Estructura de Datos -Unidad III: Estructuras Lineales
 
Ejercicios
EjerciciosEjercicios
Ejercicios
 
Pilas como estructura de datos..
Pilas como estructura de datos..Pilas como estructura de datos..
Pilas como estructura de datos..
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1Alfabetos-Lenguajes y Automatas 1
Alfabetos-Lenguajes y Automatas 1
 
Programación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenadosProgramación 3: árboles binarios y ordenados
Programación 3: árboles binarios y ordenados
 

Ähnlich wie Estructura de datos - Unidad 1: Introducción a las estructuras de datos

Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADJosé Antonio Sandoval Acosta
 
Modelo de datos modelos bdd
Modelo de datos modelos bddModelo de datos modelos bdd
Modelo de datos modelos bddalbertoisaacs13
 
Modelo de datos.
Modelo de datos.Modelo de datos.
Modelo de datos.omarzon
 
Informatica 3
Informatica 3Informatica 3
Informatica 3Teemo98
 
Capítulo I. Abstracción de datos
Capítulo I. Abstracción de datosCapítulo I. Abstracción de datos
Capítulo I. Abstracción de datosdurley
 
equipo 3 clasificación de estructura(2.pptx
equipo 3  clasificación de estructura(2.pptxequipo 3  clasificación de estructura(2.pptx
equipo 3 clasificación de estructura(2.pptxPedroSilva456418
 
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiFUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiRaimonKoudsi
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datosAna Ocampo
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datosSebas Tabares
 
Bases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadminBases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadminJuan Manuel Zalazar
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorJomicast
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxMARGOTHLORENAMARTINE
 
Resumen Tema 4
Resumen Tema 4 Resumen Tema 4
Resumen Tema 4 DarthJosua
 

Ähnlich wie Estructura de datos - Unidad 1: Introducción a las estructuras de datos (20)

Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TADEstructura de Datos Unidad 1 Tipo abstracto de datos TAD
Estructura de Datos Unidad 1 Tipo abstracto de datos TAD
 
Persistencia de datos
Persistencia de datosPersistencia de datos
Persistencia de datos
 
Tema1 (2)
Tema1 (2)Tema1 (2)
Tema1 (2)
 
Modelo de datos modelos bdd
Modelo de datos modelos bddModelo de datos modelos bdd
Modelo de datos modelos bdd
 
Modelo de datos.
Modelo de datos.Modelo de datos.
Modelo de datos.
 
Informatica 3
Informatica 3Informatica 3
Informatica 3
 
Capítulo I. Abstracción de datos
Capítulo I. Abstracción de datosCapítulo I. Abstracción de datos
Capítulo I. Abstracción de datos
 
equipo 3 clasificación de estructura(2.pptx
equipo 3  clasificación de estructura(2.pptxequipo 3  clasificación de estructura(2.pptx
equipo 3 clasificación de estructura(2.pptx
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiFUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
 
Abd1 intro
Abd1 introAbd1 intro
Abd1 intro
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datos
 
Presentacion base de datos
Presentacion base de datosPresentacion base de datos
Presentacion base de datos
 
04 -bases_de_datos_-_arquitectura_de_tres_niveles
04  -bases_de_datos_-_arquitectura_de_tres_niveles04  -bases_de_datos_-_arquitectura_de_tres_niveles
04 -bases_de_datos_-_arquitectura_de_tres_niveles
 
Bases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadminBases de datos, Mysql y phpMyadmin
Bases de datos, Mysql y phpMyadmin
 
Acceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidorAcceso a datos en aplicaciones web del entorno servidor
Acceso a datos en aplicaciones web del entorno servidor
 
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptxOVA DISEÑO ORACLE Introducción Bases de Datos .pptx
OVA DISEÑO ORACLE Introducción Bases de Datos .pptx
 
Resumen Tema 4
Resumen Tema 4 Resumen Tema 4
Resumen Tema 4
 

Mehr von José Antonio Sandoval Acosta

Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoIng. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionJosé Antonio Sandoval Acosta
 
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosIng. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosJosé Antonio Sandoval Acosta
 

Mehr von José Antonio Sandoval Acosta (20)

Linea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptxLinea del tiempo de la inteligencia artificial.pptx
Linea del tiempo de la inteligencia artificial.pptx
 
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptxUNIDAD 2 CLASIFICACION DE LOS  MATERIALES.pptx
UNIDAD 2 CLASIFICACION DE LOS MATERIALES.pptx
 
croquis de aulas UAIM topolobampo FEB 2024
croquis de aulas UAIM topolobampo  FEB 2024croquis de aulas UAIM topolobampo  FEB 2024
croquis de aulas UAIM topolobampo FEB 2024
 
Ing. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 MódulosIng. Mecatronica Prog. Básica, U5 Módulos
Ing. Mecatronica Prog. Básica, U5 Módulos
 
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructurasIng. Mecatronica Prog. Básica U4 Arreglos y estructuras
Ing. Mecatronica Prog. Básica U4 Arreglos y estructuras
 
Ing. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujoIng. Mecatrónica, Prog. Básica U3 control de flujo
Ing. Mecatrónica, Prog. Básica U3 control de flujo
 
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacionIng. Mecatrónica, Prog. Básica, U2 intro a la programacion
Ing. Mecatrónica, Prog. Básica, U2 intro a la programacion
 
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmosIng. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
Ing. Mecatrónica, Prog. Básica U1; Conceptos basicos y algoritmos
 
Manual de prácticas y antología para POO
Manual de prácticas y antología para  POOManual de prácticas y antología para  POO
Manual de prácticas y antología para POO
 
Aplicaciones móviles intro.
Aplicaciones móviles intro.Aplicaciones móviles intro.
Aplicaciones móviles intro.
 
Economia
EconomiaEconomia
Economia
 
ISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptxISCA-quimica-Equipo 2.pptx
ISCA-quimica-Equipo 2.pptx
 
Plantilla presentación.pptx
Plantilla presentación.pptxPlantilla presentación.pptx
Plantilla presentación.pptx
 
kitchenham.pptx
kitchenham.pptxkitchenham.pptx
kitchenham.pptx
 
Diagrama de Casos de Uso UML
Diagrama de Casos de Uso UMLDiagrama de Casos de Uso UML
Diagrama de Casos de Uso UML
 
Introducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UMLIntroducción al Diagrama de Clases UML
Introducción al Diagrama de Clases UML
 
Diagrama de clases UML
Diagrama de clases UMLDiagrama de clases UML
Diagrama de clases UML
 
Diagrama UML Casos de Uso
Diagrama UML Casos de UsoDiagrama UML Casos de Uso
Diagrama UML Casos de Uso
 
Tema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdfTema 3 - Comandos básicos.pdf
Tema 3 - Comandos básicos.pdf
 
Tema 1 - Intro.pdf
Tema 1 - Intro.pdfTema 1 - Intro.pdf
Tema 1 - Intro.pdf
 

Kürzlich hochgeladen

Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfs7yl3dr4g0n01
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTElisaLen4
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)Ricardo705519
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheElisaLen4
 
Herramientas de la productividad - Revit
Herramientas de la productividad - RevitHerramientas de la productividad - Revit
Herramientas de la productividad - RevitDiegoAlonsoCastroLup1
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosMARGARITAMARIAFERNAN1
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATevercoyla
 
programacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptxprogramacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptxDavilito Oso
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upnDayronCernaYupanquiy
 
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSMANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSRicardo Chegwin
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdfnicolascastaneda8
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajasjuanprv
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfRonaldLozano11
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaAndreBarrientos3
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 

Kürzlich hochgeladen (20)

Quimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdfQuimica Raymond Chang 12va Edicion___pdf
Quimica Raymond Chang 12va Edicion___pdf
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHTAPORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
APORTES A LA ARQUITECTURA DE WALTER GROPIUS Y FRANK LLOYD WRIGHT
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Herramientas de la productividad - Revit
Herramientas de la productividad - RevitHerramientas de la productividad - Revit
Herramientas de la productividad - Revit
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Ejemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - EjerciciosEjemplos de cadenas de Markov - Ejercicios
Ejemplos de cadenas de Markov - Ejercicios
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNATINSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
INSUMOS QUIMICOS Y BIENES FISCALIZADOS POR LA SUNAT
 
programacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptxprogramacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptx
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSMANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Desigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdfDesigualdades e inecuaciones-convertido.pdf
Desigualdades e inecuaciones-convertido.pdf
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieria
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 

Estructura de datos - Unidad 1: Introducción a las estructuras de datos

  • 1. Instituto Tecnológico Superior de Guasave Ingeniería en Sistemas Computacionales Estructura de Datos Unidad I: Introducción a las Estructuras de Datos Mtro. José Antonio Sandoval Acosta Retícula ISIC-2010-224: Programa: AED-1026/2016 Itsguasave.edu.mx
  • 2. Competencia de la Unidad Conoce y comprende las diferentes estructuras de datos, su clasificación y forma de manipularlas para buscar la manera más eficiente de resolver problemas. ESTRUCTURA DE DATOS
  • 3. CLASIFICACIÓN DE ESTRUCTURAS DE DATOS • Una estructura de datos es una clase de datos que se puede caracterizar por su organización y operaciones definidas sobre ella. Algunas veces a estas estructuras se les llama tipos de datos. en ellas encontramos las siguientes: ESTRUCTURA DE DATOS ESTRUCTURAS LÓGICAS DE DATOS: En un programa, cada variable pertenece a alguna estructura de datos explícita o implícitamente definida, la cual determina el conjunto de operaciones validas para ella. Las estructuras de datos que se discuten aquí son estructuras de datos lógicas. Cada estructura de datos lógica puede tener varias representaciones físicas diferentes para sus almacenamientos
  • 4. CLASIFICACIÓN DE ESTRUCTURAS DE DATOS ESTRUCTURA DE DATOS ESTRUCTURAS PRIMITIVAS Y SIMPLES: Son primitivas aquellas que no están compuestas por otras estructuras de datos, por ejemplo: enteros, booleanos y caracteres. Otras estructuras de datos se pueden construir de una o mas primitivas. Las estructuras de datos simples que consideramos se construyen a partir de estructuras primitivas y son: cadenas, arreglos, matrices y registros. A estas estructuras de datos las respaldan muchos lenguajes de programación.
  • 5. CLASIFICACIÓN DE ESTRUCTURAS DE DATOS ESTRUCTURA DE DATOS ESTRUCTURAS LINEALES Y NO LINEALES: Las estructuras de datos simples se pueden combinar de varias maneras para formar estructuras mas complejas. Las dos cases principales de estructuras de datos son las lineales y las no lineales, dependiendo de la complejidad de las relaciones lógicas que representan. • Las estructuras de datos lineales incluyen pilas, colas y listas ligadas lineales. • Las estructuras de datos no lineales incluyen grafos y árboles.
  • 6. • Ejercicio de clase: Realice el cuadro sinóptico de la clasificación de las estructuras de datos ESTRUCTURA DE DATOS
  • 7. Tipos de Datos Abstractos Algunos lenguajes de programación tienen características que nos permiten ampliar el lenguaje añadiendo sus propios tipos de datos. • Un tipo de dato definido por el programador se denomina tipo abstracto de datos (TAD) para diferenciarlo del tipo fundamental (predefinido) de datos. • En esencia un tipo abstracto de datos es un tipo que consta de datos (estructuras de datos propias) y operaciones que se pueden realizar sobre esos datos. Un TAD se compone de estructuras de datos y los procedimientos o funciones que manipulan esas estructuras de datos. ESTRUCTURA DE DATOS
  • 8. • Es decir, los usuarios de un TAD se comunican con éste a partir de la interfaz que ofrece el TAD mediante funciones de acceso. • Las unidades de programación de lenguajes que pueden implementar un TAD reciben distintos nombres: ESTRUCTURA DE DATOS
  • 9. Trabajando con Tipos Abstractos de Datos Concepto de estructura: • Una estructura es una colección de uno o más elementos, cada uno de los cuales puede ser de un tipo de dato diferente. • Cada elemento de la estructura se denomina miembro. • Una estructura puede contener un número ilimitado de miembros. • A las estructuras también se las llama registros. ESTRUCTURA DE DATOS
  • 10. • Definición del tipo de dato estructura: Una estructura es un tipo de dato creado por el usuario, por tanto, es necesario definirlo antes de poder utilizarlo. Un vez definido, podremos crear variables de tipo estructura. ESTRUCTURA DE DATOS
  • 12. • Declaración de variables de tipo estructura: Una vez definido el tipo de dato estructura, necesitamos declarar variables de ese tipo (Como para cualquier tipo de dato). ESTRUCTURA DE DATOS
  • 13. • Inicialización de variables de tipo estructura: Las variables de tipo estructura las podemos inicializar de dos formas: ESTRUCTURA DE DATOS
  • 14. • Ejercicio de clase: Crear una estructura que contenga los campos básicos de una agenda personal. • Ejercicio de clase: Crear un registro que contenga los datos personales para una nómina. ESTRUCTURA DE DATOS
  • 15. • Acceso a los miembros de una variable de tipo estructura: Una vez que hemos declarado una variable de tipo estructura, podemos acceder a los miembros de dicha variable: ESTRUCTURA DE DATOS
  • 16. Acceso a los miembros de una variable de tipo estructura: ESTRUCTURA DE DATOS
  • 17. Acceso a los miembros de una variable de tipo estructura: ESTRUCTURA DE DATOS
  • 18. • Ejercicio: Utilizando estructuras desarrolle un programa que permita la captura de la información correspondiente a un disco, el programa debe repetir la captura hasta que el usuario teclee enter en el nombre del disco: Campos de la estructura • Nombre del disco • Cantidad de canciones • Precio • Fecha de Compra (dd/mm/aaaa) El programa debe ser entregado en archivo ya probado en Dev C++ ESTRUCTURA DE DATOS
  • 19. Modularidad • Módulo: Un módulo que se supone que representa una función lógica es una secuencia léxicamente continúa de instrucciones que se encuentra limitado por elementos de fronteras y además se caracteriza por disponer de un nombre o identificador. • Módulo: Es aquél que está constituido por una o varias instrucciones físicamente contiguas y lógicamente encadenadas, las cuales se pueden referenciar mediante un nombre y pueden ser llamadas desde diferentes puntos de un programa. ESTRUCTURA DE DATOS
  • 20. Un módulo puede ser: Un programa Una función Una subrutina (procedimiento o función) • La modularidad se basa en la descomposición de un problema en una serie de sub problemas; dividiéndolo en pequeños módulos. Esta división exige la presencia de un módulo denominado módulo de base o principal, y su función es que controle los demás. • El módulo principal coordina las llamadas a los módulos secundarios y pasa los datos necesarios en forma de parámetros. A su vez cada modulo puede contener sus propios datos y llamar a otros módulos o funciones. ESTRUCTURA DE DATOS
  • 21. Principios para asegurar diseños modulares: Pocas interfaces: Cada módulo debe comunicarse con tan pocos como sea posible. Interfaces pequeñas (Acoplamiento débil): Si dos módulos se comunican, deben intercambiar la menor información posible. Interfaces explícitas: Cuando dos módulos se comunican, debe estar claro en el texto de uno o de ambos. Ocultación de la información: Toda la información sobre un módulo debe ser privada al módulo, a menos que se haya declarado específicamente como pública. ESTRUCTURA DE DATOS
  • 22. • La solución de un problema complejo puede obtenerse a menudo a partir de la resolución de subproblemas más simples (estrategia “divide y vencerás”). ESTRUCTURA DE DATOS
  • 24. • Ejemplo: Un programa debe calcular el IVA por cada operación de una factura de 3 elementos. #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv[]) { float precio=0, cantidad=0, iva=0; float subtotal=0, iva_total=0, total_pago=0; cout<<"capture cantidad 1:"; cin>> cantidad; cout<<"capture Precio 1:"; cin>> precio; iva=cantidad*precio*0.16; iva_total=iva_total+iva; subtotal=subtotal+ (cantidad*precio); cout<< "IVA: " << iva <<endl; cout<<"capture cantidad 2:"; cin>> cantidad; cout<<"capture Precio 2:"; cin>> precio; iva=cantidad*precio*0.16; iva_total=iva_total+iva; subtotal=subtotal+(cantidad*precio); cout<< "IVA: " << iva <<endl; cout<<"capture cantidad 3:"; cin>> cantidad; cout<<"capture Precio3:"; cin>> precio; iva=cantidad*precio*0.16; iva_total=iva_total+iva; subtotal=subtotal+(cantidad*precio); cout<< "IVA: " << iva <<endl; total_pago=subtotal+iva_total; cout<< "IVA total: " << iva_total <<endl; cout<< "Total a Pagar: " << total_pago <<endl; system("pause"); return 0; } ESTRUCTURA DE DATOS
  • 25. #include <cstdlib> #include <iostream> using namespace std; // módulo de cálculo de iva float calc_iva(float precio, float cantidad) { float iva = precio*cantidad*0.16; return iva; } int main(int argc, char *argv[]) { float precio=0, cantidad=0, iva=0; float subtotal=0, iva_total=0, total_pago=0; cout<<"capture cantidad 1:"; cin>> cantidad; cout<<"capture Precio 1:"; cin>> precio; iva=calc_iva(precio, cantidad); iva_total=iva_total+iva; subtotal=subtotal+(cantidad*precio); cout<< "IVA: " << iva <<endl; cout<<"capture cantidad 2:"; cin>> cantidad; cout<<"capture Precio 2:"; cin>> precio; iva=calc_iva(precio, cantidad); iva_total=iva_total+iva; subtotal=subtotal+(cantidad*precio); cout<< "IVA: " << iva <<endl; cout<<"capture cantidad 3:"; cin>> cantidad; cout<<"capture Precio3:"; cin>> precio; iva=calc_iva(precio, cantidad); iva_total=iva_total+iva; subtotal=subtotal+(cantidad*precio); cout<< "IVA: " << iva <<endl; total_pago=subtotal+iva_total; cout<< "IVA total: " << iva_total <<endl; cout<< "Total a Pagar: " << total_pago <<endl; system("pause"); return 0; } ESTRUCTURA DE DATOS
  • 26. Ejercicio entregable: realice un programa que calcule el IVA, el DTA y el IGI a productos que son importados a territorio nacional. Se debe realizar un módulo que haga el calculo de los impuestos, ya sea que se calcule cada uno de ellos de forma modular o que se haga un modulo general para todos los impuestos Entregar el programa ya funcionando y probado en Dev C++ Tabla de impuestos • IVA = 16% • DTA = 8 por millar • IGI depende del país de origen de la mercancía USA = 0% CAN = 0% UK = 2% EU = 0% JP = 2% CHN = 50% BR = 5% AUL = 2% RU = 10% IND = 10% Datos necesarios por partida: Producto Cantidad Precio Unidad de Medida País IVA DTA IGI Total Nota: Cualquier otro país paga el 40% de IGI. ESTRUCTURA DE DATOS
  • 27. Memoria Estática • Para implementar alguna estructura de datos, primero es necesario tener muy claro cómo va a ser el manejo de memoria. • La diferencia entre estructuras estáticas y dinámicas esta en el manejo de memoria. En la memoria estática durante la ejecución del programa el tamaño de la estructura no cambia. • La estructura que maneja memoria estática son los arreglos. • Un arreglo es una colección finita, homogénea y ordenada de elementos. Es finita porque todo arreglo tiene un límite, homogénea porque todos los elementos son del mismo tipo y ordenada porque se puede determinar cuál es el enésimo elemento. ESTRUCTURA DE DATOS
  • 28. Manejo de memoria dinámica • En la memoria dinámica durante la ejecución del programa el tamaño de la estructura puede cambiar. • La memoria dinámica, es el espacio de almacenamiento que solicita una clase o método en tiempo de ejecución. De esa manera, a medida que el proceso requiere de más espacio se solicita al sistema operativo, sin que el proceso se preocupe por donde serán asignados los datos, ni que espacios de memoria nos entregara el sistema operativo. • Así como existen estructuras de datos estáticas (arreglos), también existen estructuras de datos dinámicas (listas y árboles). ESTRUCTURA DE DATOS
  • 29. Manejo de memoria dinámica • Una lista es un conjunto de nodos que contiene información heterogénea. Los nodos de una lista se encuentran enlazados o relacionados por medio de direccionamientos de memoria como referencia, y se estructuran de la siguiente manera: ESTRUCTURA DE DATOS
  • 30. La complejidad de un algoritmo o complejidad computacional, estudia los recursos y esfuerzos requeridos durante el cálculo para resolver un problema los cuales se dividen en: tiempo de ejecución y espacio en memoria. El factor tiempo, por lo general es más importante que el factor espacio, pero existen algoritmos que ofrecen el peor de los casos en un menor tiempo que el mejor de los casos, lo cual no es la mejor de las soluciones. El factor tiempo de ejecución de un algoritmo depende de la cantidad de datos que se quieren procesar. Análisis de Algoritmos ESTRUCTURA DE DATOS
  • 31. En computación al momento de realizar un programa se debe obtener su algoritmo. Cada programador puede tener un método diferente de resolver un mismo problema. Para ello está el análisis de algoritmos cuyo objetivo es: la búsqueda de algoritmos eficientes. ESTRUCTURA DE DATOS
  • 32. Concepto de complejidad de algoritmos • La mayoría de los problemas que se plantean en la actualidad se pueden resolver con algoritmos que difieren en su eficiencia. Dicha diferencia puede ser irrelevante cuando el número de datos es pequeño pero cuando la cantidad de datos es mayor la diferencia crece. Ejemplo: Suma de 4 y 10 primero números naturales. ESTRUCTURA DE DATOS
  • 33. COMPLEJIDAD EN EL TIEMPO Definiciones: • T(n) Tiempo de ejecución del algoritmo. • F(n) Tiempo al introducir los datos al algoritmo. • El tiempo de ejecución de un algoritmo: se refiere a la suma de los tiempos en los que el programa tarda en ejecutar una a una todas sus instrucciones. • Tomando en cuanta que cada instrucción requiere una unidad de tiempo, dicho tiempo se puede calcular en función de n (el número de datos), lo que se denomina T(n). ESTRUCTURA DE DATOS
  • 34. • Si hacemos un análisis de forma directa al programa para determinar el tiempo de ejecución del mismo, debemos definir el conjunto de operaciones primitivas, que son independientes del lenguaje de programación que se use. Algunas de las funciones primitivas son las siguientes: • Asignación de un valor a una variable (X = 15). • Llamada a un método (z = suma(2 + 4)). • Ejecución de una operación aritmética (total = iva + subtotal). • Comparar dos números (if (x > y)). • Poner índices a un arreglo (z[i]). • Retorno de un método (return x + y;). ESTRUCTURA DE DATOS
  • 35. • En forma específica, una operación primitiva corresponde a una instrucción en el lenguaje de bajo nivel, cuyo tiempo de ejecución depende del ambiente de hardware y software, pero es constante. Ejemplo. Método que retorna el número mayor de un arreglo de n elementos. int mayor(int arr[]) { int may = arr[0]; for(int ind = 0; ind < arr.length; ind++) if(arr[ind] > may) may = arr[ind]; return may; } ESTRUCTURA DE DATOS
  • 36. Para este ejemplo se pueden encontrar dos formulas que determinen el tiempo de ejecución, la primera representa el peor de los casos y la segunda el mejor de los casos. Para se creación se sigue el programa: • La inicialización de la variable may = [0], corresponde a una unidad de tiempo. • La inicialización del ciclo for agrega otra unidad de tiempo. • La condición del ciclo for se ejecuta desde 1 hasta el tamaño del arreglo lo cual agrega el número de unidades del tamaño del arreglo. • El cuerpo del ciclo for se ejecuta el tamaño del arreglo 1 veces, para este caso el número de operaciones del cuerpo del ciclo pueden ser 6 o 4 (condición del if dos, asignación a may dos e incremento y asignación dos) en el peor o mejor de los casos respectivamente. Por consiguiente el cuerpo del ciclo contribuye con 4 (tamaño del arreglo 1) o 6 (tamaño del arreglo 1) unidades de tiempo. ESTRUCTURA DE DATOS
  • 37. Para que un algoritmo sea eficiente debemos tener en cuenta el tiempo de ejecución, y la cantidad de memoria que va a requerir para funcionar. Aun que el problema se pueda resolver de varias maneras debemos optar por implementar la solución más eficiente, es decir la que se realice en el menor tiempo y con la menor cantidad de memoria. EFICIENCIA DE LOS ALGORITMOS ESTRUCTURA DE DATOS
  • 38. COMPLEJIDAD EN EL ESPACIO Se refiere a la memoria que utiliza un programa para su ejecución; es decir el espacio de memoria que ocupan todas las variables propias del programa. Para calcular la memoria estática, se suman la cantidad de memoria que ocupa cada una de las variables declaradas en el programa. Dicha memoria se divide en Memoria estática y Memoria dinámica. ESTRUCTURA DE DATOS
  • 39. • Para calcular la memoria estática, se suman la cantidad de memoria que ocupa cada una de las variables declaradas en el programa. • Tomando en cuenta los tipos de datos primitivos del lenguaje de programación java podemos determinar el espacio que requiere cada una de las variables de un programa, de acuerdo a lo siguiente: Tipo de Dato Primitivo Tamaño en Bits Tamaño en Bytes byte 8 1 char 16 2 short 16 2 int 32 4 float 32 4 long 64 8 double 64 8 • El cálculo de la memoria dinámica, no es tan simple ya que depende de cada ejecución del programa o algoritmo y el tipo de estructuras dinámicas que se estén utilizando. ESTRUCTURA DE DATOS
  • 40. SELECCIÓN DE UN ALGORITMO • Una de las características primordiales en la selección de un algoritmo es que este sea sencillo de entender, calcular, codificar y depurar, así mismo que utilice eficientemente los recursos de la computadora y se ejecute con la mayor rapidez posible con un eficaz uso de memoria dinámica y estática. • También para seleccionar correctamente el mejor algoritmo es necesario realizar estas preguntas: ESTRUCTURA DE DATOS
  • 41. ¿Qué grado de orden tendrá la información que vas a manejar? Entre mas desordenada esté la información el algoritmo debe ser más robusto ¿Qué cantidad de datos vas a manipular? Una cantidad muy grande puede hacer prohibitivo utilizar un algoritmo que requiera de mucha memoria adicional. ¿Qué tipo de datos quieres ordenar? Algunos algoritmos sólo funcionan con un tipo específico de datos (enteros, enteros positivos, etc.) y otros son aplicables a cualquier tipo de dato. ¿Qué tamaño tienen los registros de tu lista? Algunos algoritmos realizan múltiples intercambios (burbuja, inserción). Si los registros son de gran tamaño estos intercambios son más lentos. ESTRUCTURA DE DATOS
  • 42. Bibliografía • Joyanes, Zahonero. Estructura de Datos en C++. McGraw Hill. Madrid, España. 2007. ISBN: 978-84-481-5645-9. ESTRUCTURA DE DATOS