You are on page 1of 42

Instituto Tecnolgico de Pinotepa

Ingeniera en Sistemas Computacionales

BIENVENIDOS

Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Unidad 1:

Introduccin a las
estructuras de
datos
Joyanes Aguilar Luis (2006). Programacin en C++. Algoritmos,
estructuras de datos y otros objetos. Madrid: Mc Graw Hill

Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Concepto de estructura de datos

Coleccin de datos que se


caracterizan por su organizacin y
por las operaciones que se definen
en ellos.

Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Concepto de estructura de datos

En programacin, una estructura de


datos es una forma de organizar un
conjunto de datos elementales (un dato
elemental es la mnima informacin que
se tiene en el sistema) con el objetivo de
facilitar la manipulacin de estos datos
como un todo o individualmente.
Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Operaciones

Las operaciones bsicas son:


Agregar y Borrar.

Otras operaciones frecuentes son:


Buscar, Mostrar y Ordenar.

Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Ventajas y desventajas

Cada estructura ofrece ventajas y


desventajas en relacin a la
simplicidad y eficiencia para la
realizacin de cada operacin.

Estructuras de Datos
Instituto Tecnolgico de Pinotepa
Ingeniera en Sistemas Computacionales

Eleccin de la estructura de datos

La eleccin de la estructura de datos


apropiada para cada problema
depende de factores como la
frecuencia y el orden en que se
realiza cada operacin sobre los
datos.

Estructuras de Datos
1.1 Tipos de datos abstractos

John Guttag (1974)1:


Un tipo de dato abstracto es aquel
definido por el programador que
puede 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
Estructuras de Datos
1.1 Tipos de datos abstractos

Modelo matemtico (tipo de


dato complejo) + conjunto de
operadores del modelo

Estructuras de Datos
1.1 Tipos de datos abstractos
Son diferentes:
- tipo de dato bsico (operadores+
valores),
- dato estructurado o compuesto
- tipo de dato abstracto
TDA generaliza los tipos de datos
Facilita la encapsulacin / depuracin

Estructuras de Datos
1.1 Tipos de datos abstractos
UNA VEZ DEFINIDO EL TDA:
slo se puede acceder a los objetos
del TDA mediante sus operadores,
ya no es necesario conocer cmo se
implementan,
no debe hacerse referencia a los
detalles de implementacin

Estructuras de Datos
1.2 Modularidad

Permite:
Descomponer un problema en
partes o mdulos.
Implementar el programa
mediante mdulos.
Cada mdulo resuelve un sub-
problema del programa.

Estructuras de Datos
1.2 Modularidad
Programacin modular:
realizacin de un programa mediante
mdulos,
cada mdulo resuelve un sub-problema del
programa
Ventajas del enfoque modular:
permite el desarrollo independiente de
mdulos (en grupo),
facilita la depuracin,
encapsulacin

Estructuras de Datos
1.2 Modularidad
Hasta ahora:
programacin modular = uso de algoritmos o
procedimientos independientes que
manipulan tipos de datos propios o
predefinidos
Los algoritmos:
generalizan operadores sobre datos (no
elementales),
facilitan la encapsulacin
Estructuras de Datos
1.3 Uso de un TDA

Arreglos
Listas
Pilas
Colas
Arboles
Grafos

Estructuras de Datos
1.3 Ejemplos de TDA
TDA matriz
Estructura de ms de dos dimensiones de elementos de un tipo base,
por ejemplo, matriz de 2 dimensiones de numrico.

Operaciones del TDA Matriz


Crear (M: Matriz, Filas: numrico, Columnas: numrico, OK: lgico)
Borrar(M: Matriz, OK: lgico)
Sumar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lgico)
Restar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lgico)
Multiplicar (M1: Matriz, M2: Matriz, M3: Matriz, OK: lgico)
Divisin (M1: Matriz, M2: Matriz, M3: Matriz, OK: lgico)
Determinante (M: Matriz, d: numrico, ok: lgico)
Compatibles? (M1: Matriz, M2: Matriz, operacin: Carcter, Ok:lgico)

Estructuras de Datos
1.3 Ejemplos de TDA
Posible implementacin
{Tipo}
Matriz = registro de
num_fil, num_col: numrico;
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 se


especifica:
- condiciones para utilizar el operador,
- efecto/s del operador (tanto sobre los parmetros como sobre el
entorno)

Estructuras de Datos
1.4 Manejo de la Memoria Esttica
La memoria esttica es el espacio de
memoria ram que se reserva mediante
la declaracin de las constantes,
variables y estructuras
correspondientes, previo a la
ejecucin de un programa, y que no
cambia durante la ejecucin de ste.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica

El lenguaje C++ maneja cuatro tipos de datos


bsicos: int, float, char y double.
Estos tipos de datos estn integrados en todas
las computadoras.
Los tipos ints tienen tres calificadores: short,
long y unsigned.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
Tipo de dato Tamao
char 8 bits
Int 16 bits
Long int 32 bits
Double 32 bits
float 32 bits
bool 1 bits

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
Una declaracin 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.
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Esttica

En este caso, podemos considerar al lenguaje


C++ como una mquina nueva con sus propias
capacidades, tipos de datos y operaciones que
nos permite plantear la solucin a un
problema en trminos de las estructuras ms
tiles de C++.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
El estudio de las estructuras de datos
implica dos propsitos
complementarios:
1. Identificar, desarrollar entidades y
operaciones matemticas 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
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Esttica

Una consideracin fundamental en cualquier


implementacin es su eficiencia, y esta se
mide por dos factores: el tiempo y el espacio.
Generalmente, una implementacin que es
rpida usa ms almacenamiento que una
lenta.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
Arreglos
Arreglos de caracteres
Arreglos de estructuras
Arreglos como parmetros
Arreglos multidimensionales
Ordenamientos
Bsquedas

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
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
homogneos.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
La declaracin en C de un arreglo puede ser
int b[100]; // especifica un array de 100 elementos

Las dos operaciones bsicas sobre un


arreglo son el almacenamiento y la
extraccin .

Se utilizan un arreglo cuando es necesario


conservar en una forma uniforme una gran
cantidad de artculos en la memoria y la
referencia a todos ellos.
Estructura de Datos Plan 2010
1.4 Manejo de Memoria Esttica
Representacin en memoria de un arreglo.

99 1.74
Direccin
98 1.76 Contenido
97 1.71 de la
. direccin

.
2
1 1.73
0
1.98

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
La declaracin anterior reserva 100
localidades de memoria sucesivas,
cada una lo bastante grande para
contener un entero nico.

La direccin de la primera de estas


localidades se denomina la direccin
base del arreglo b y se representa
mediante base(b).
Estructura de Datos Plan 2010
1.4 Manejo de la Memoria Esttica
1.Realice un programa en C que implemente un vector de 100
nmeros enteros generados aleatoriamente (entre 1 y 100) y:
1) Genere los nmeros
2) Muestre los nmeros generados
3) Calcule la suma de los nmeros
4) Calcule el promedio de dichos nmeros
5) Localice al elemento mayor. y el elemento menor
6) Calcule la memoria esttica utilizada por dicho programa.
7) Clasifique los elementos en Par e Impar
8) Ordene usando el mtodo de la burbuja
9) Calcule la desviacin de cada entero respecto al promedio.

Estructura de Datos Plan 2010


1.4 Manejo de la Memoria Esttica
2.Realice un programa en C que implemente un vector
para almacenar 20 estructuras con la siguiente
informacin:
CD
id
titulo
artista
num_canciones
precio
Considere las siguientes funciones:
1. Ingresar
2. 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.

Estructura de Datos Plan 2010


Estructura de Datos Plan 2010
La memoria dinmica es el espacio
de memoria ram que se reserva
mediante la gestin de bloques de
memoria en tiempo de ejecucin y se
libera en el mismo tiempo.
Su caracterstica principal es que
crece y decrece en tiempo de ejecucin

Estructura de Datos Plan 2010


CONCEPTO.
Un puntero C++ es la direccin de una variable.
Los punteros se rigen por cuatro reglas bsicas:
1. Un puntero es una variable como cualquier otra
2. Una variable puntero contiene una direccin que
apunta a otra direccin de memoria
3. En la direccin almacenada estn los datos a los
que apunta el puntero
4. Un puntero apunta a una variable de memoria

Estructura de Datos Plan 2010


Operador Propsito

& Obtiene la direccin de una variable

* Declara una variable como puntero

NEW Gestiona un bloque de memoria


puntero=NEW tipo

delete Libera un bloque de memoria


delete(puntero);
Estructura de Datos Plan 2010
Ejemplo:
Void main()
{
Int n=75;
Int* p = &n; //p contiene la direccin de n
Cout<<n= <<n<<, <<&n<<endl;
Cout<<p= <<p<<endl;
Cout<<&p= <<&p<<endl;
}
Estructura de Datos Plan 2010
==IMPORTANTE==
La direccin de n es C4
La direccin de p es D1
Representacin

El valor o contenido de n es 75
El valor o contenido de p es C4
P es una variable puntero que solo puede
grfica

contener direcciones de memoria


A B C D

0
p
1 C4

4 75 n

Estructura de Datos Plan 2010


EL PUNTERO NULO

Un Puntero nulo no apunta a ninguna parte,


es decir, no direcciona ningn dato vlido en
memoria.
nicamente se utiliza para conocer cundo
un puntero apunta a una direccin vlida.
Se utiliza la macro NULL definida en la
librera stdio.h

Estructura de Datos Plan 2010


Ejemplo:

class lista
{
private:
struct Nodo
{
int clave
Char nombre[30];
Int edad;
Float estatura;
Int peso;
Se puede declarar un Nodo *siguiente;
};
puntero a una Nodo *principio, *final;

estructura tal como public:


se declara un lista(){ principio=NULL; final=NULL;}
Void insertar_al_final();
puntero a cualquier Void mostrar();
Void eliminar_al_Principio();
otro objeto. };

Estructura de Datos Plan 2010


Utilizando memoria dinmica realice una lista enlazada
simple que incluya el siguiente men:

== OPERACIONES CON LISTAS ENLAZADAS SIMPLES ==


1. Insertar al final
2. Mostrar
3. Eliminar al principio
4. Consultar
0. Salir
Elija una opcin [ ]

Estructura de Datos Plan 2010


Tareas
1. Prctica de ejercicios:
MEMORIA ESTTICA
1. Vector de enteros con 10 mtodos
2. Matriz con sumas de filas y columnas
3. Vector de registros
MEMORIA DINMICA
1. Lista simple de nmeros enteros con 4 mtodos
(Insertar, Mostrar, Eliminar, Memoria utilizada)
2. Cuadro comparativo de memoria esttica &
Memoria dinmica: definicin, tipo de memoria, construccin
fsica, costo, espacio fsico, administracin, tipo promedio de
acceso, velocidad, implementacin, liberacin, grado de dificultad
de programacin, direccin, ventajas, desventajas, consumo de
energa

Estructuras de Datos
Fuentes bibliogrficas

1. Joyanes, Luis. (2006). Programacin C++. Estructuras


de datos y otros objetos. Mxico: Mc Graw Hill.

1. Scrib. (Sin fecha). Programacin orientada a objetos.


Disponible en:
http://es.scribd.com/doc/36724636/Programacion-
Orientada-A-Objetos-Luis-Joyanes-Aguilar

Estructuras de Datos

You might also like