SlideShare a Scribd company logo
1 of 64
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 1
09/03/2022
Introducción a las
estructuras de datos (TDA)
con objetos
Unidad 1
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo
para uso de los cursos de Estructuras de Datos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 2
09/03/2022
Objetivo general de la Unidad 1
Definir “Estructura de datos”, su representación mediante
objetos para el diseño y almacenamiento de los datos en
los programas.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 3
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 4
09/03/2022
Recordando…
• Un tipo es una colección de valores.
– Por ejemplo, el tipo boolean consta de los valores true y false.
Los enteros también forman un tipo.
• Un tipo de dato es un tipo con una colección de operaciones
que manipulan el tipo.
– Por ejemplo, una variable entera es un miembro del tipo de dato
entero. La suma es un ejemplo de una operación sobre tipos de
datos enteros.
• Un elemento dato es una pieza de información o un registro
cuyos valores se especifican a partir de un tipo. Un elemento
dato se considera que es un miembro de un tipo de dato.
– El entero es un elemento de datos simple ya que no contiene
subpartes.
• Un registro de una cuenta corriente de un banco puede
contener varios campos o piezas de información como
nombre, número de la cuenta, saldo y dirección. Dicho
registro es un dato agregado.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 5
09/03/2022
Problemas, programas, algoritmos
y estructuras de datos
• Problema: Conjunto de hechos o circunstancias que
dificultan la consecución de algún fin.
• Algoritmo: Conjunto de reglas finito e inambiguo.
• Estructura de datos: Disposición en memoria de la
información.
• Programa: Algoritmos + Estructuras de datos.
PROBLEMA PROGRAMA
Algoritmos
+
Estructuras
de datos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 6
09/03/2022
Estructuras de datos
• Concepto:
Agrupación de datos que se trata como una unidad en su
conjunto.
Se construyen a partir de los tipos de datos simples
• Clasificación:
–Por su naturaleza:
• Homogénea: Todos del mismo tipo (ej: vectores, tablas,
matrices n dimensionales).
• Heterogénea: De diferente tipo (ej: registros).
–Por su forma de almacenamiento.
• Memoria central:
– Estática. Tamaño es conocido de antemano (a priori).
– Dinámica. El tamaño varía durante la ejecución del programa
(ej: listas, árboles, grafos).
• Memoria externa (ficheros y bases de datos).
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 7
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 8
09/03/2022
Necesidad de las estructuras de datos
• A pesar de la gran potencia de las
computadoras actuales, la eficiencia de los
programas sigue siendo una de las
características más importantes a considerar.
• Los problemas complejos que procesan las
computadoras cada vez más obligan, sobre
todo, a pensar en su eficiencia dado el
elevado tamaño que suelen alcanzar.
• Hoy, más que nunca, los profesionales
deben formarse en técnicas de construcción
de programas eficientes.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 9
09/03/2022
Elección de la estructura de datos (ED)
adecuada
• La mayoría de los lenguajes de programación
soportan diferentes EDs
• Dentro de la elección debe considerarse también
la posibilidad de poder realizar operaciones sobre
dichas estructuras definidas.
• La elección de una ED redundará en una mayor
eficiencia del programa y, sobre todo, en una
mejor resolución del problema en cuestión.
• Una elección inadecuada de EDs puede conducir
a programas lentos, largos y poco eficientes
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 10
09/03/2022
Elección de la estructura de datos (ED)
adecuada
• Una solución se denomina eficiente si resuelve el
problema dentro de las restricciones de recursos
requeridas.
– Restricciones de recursos pueden ser el espacio total
disponible para almacenar los datos o el tiempo
permitido para ejecutar cada subtarea
– Una solución es eficiente cuando requiere menos
recursos que las alternativas conocidas
• El costo de una solución es la cantidad de
recursos que la solución consume.
– Normalmente, el coste se mide en término de
recursos clave, especialmente el tiempo
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 11
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 12
09/03/2022
Etapas en la selección de una
estructura de datos
Los pasos a seguir son [SHAFFER 97]:
1. Analizar el problema para determinar las
restricciones de recursos que debe cumplir cada
posible solución.
2. Determinar las operaciones básicas que se deben
soportar y cuantificar las restricciones de recursos
para cada una. Ejemplos de operaciones básicas son
la inserción de un dato en la estructura de datos,
suprimir un dato de la estructura o encontrar un dato
determinado en dicha estructura.
3. Seleccionar la estructura de datos que cumple mejor
los requisitos o requerimientos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 13
09/03/2022
Consideraciones importantes para la
elección de la estructura de datos
• ¿Todos los datos se insertan en la estructura de
datos al principio o se entremezclan con otras
operaciones?
• ¿Se pueden eliminar los datos?
• ¿Los datos se procesan en un orden bien
definido o se permite el acceso aleatorio?
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 14
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 15
09/03/2022
Abstracción
• Es “ignorancia selectiva”
– Decidir que es importante y que no lo es
– Enfocarse y depender de lo que ES
importante
– Ignorar y no depender de lo que NO ES
importante
El propósito de la abstracción no es ser
poco específico, es más bien crear un
nuevo nivel, en el cual se puede ser
absolutamente preciso
Edsger Dijkstra
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 16
09/03/2022
Abstracción para resolver
problemas
• La mejor abstracción es aquella que hace
simples las cosas complejas.
– Rescatar y resaltar los conceptos
fundamentales
– Esconder los aspectos no importantes
• Ejemplo: Detalles de la implementación
Mientras mas perfecta es una máquina, mas oculto se encuentra
su funcionamiento. Al parecer, la perfección no se logra cuando
no hay mas que añadir, si no cuando no haya mas que quitar.
Antoine de Saint-Exupéry
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 17
09/03/2022
Abstracción de datos
• Es una técnica poderosa de programación
• Permite “inventar”, o definir nuevos tipos de datos
– Observando e identificando entidades del mundo real:
objetos
– Ocultando datos irrelevantes para la resolución del
problema
• Gracias a esto, se pueden diseñar programas
– Mas cortos, Legibles y Flexibles
• Estos nuevos tipos de datos se conocen como:
– TIPOS DE DATOS ABSTRACTOS (TDA)
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 18
09/03/2022
TDAs: Tipos de datos abstractos
• Un TDA trata de representar entidades del mundo real:
objetos
– Especificando el QUE y no el COMO
• Se componen de
– Comportamiento → Operaciones
• Los TDAs existen PARA proveer operaciones
• Ejemplo: Un carro, es útil porque se lo puede manejar
• Manejar es un comportamiento u operación del TDA Carro
– Estado
• Se refiere al funcionamiento interno del TDA
• Un TDA correctamente creado mantiene su estado OCULTO
• Ejemplo: No nos interesa como Carro funciona, solo nos interesa… que
funciona
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 19
09/03/2022
Ejemplo
• Se necesita crear un TDA para representar los
números racionales
• La abstracción nos permitirá reconocer
– El comportamiento de un número racional y
– El estado (datos) del mismo
• TDA: Racional
– Comportamiento:
• Sumar, Restar, Multiplicar, Simplificar, etc.
– Estado:
• Numerador
• Denominador, siempre debe ser diferente de 0
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 20
09/03/2022
Ventajas de los TDAs
• Permiten una mejor representación del mundo real
– Una solución puede estar compuesta de un grupo de TDAs
• Cada uno con sus comportamientos y estados
– El código se comprende mejor, pues los TDAs representan
entidades del mundo real
• Permite llevar un control de cambios
– Si el estado de un TDA esta oculto, si se modifica, nadie se
verá afectado
– Ejemplo: Se pueden hacer modificaciones a un auto sin que el
usuario del mismo se entere o cambie su forma de USAR el
auto
• Permite la extensibilidad de un sistema
– Cada Nuevo Tipo de Dato es un modulo que se adapta a una
solución
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 21
09/03/2022
Estructuras de datos lineales y no
lineales
• Estructuras de datos lineales
– Cada componente tiene un único sucesor y un único
predecesor con excepción del último y el primero
• Estructura de datos no lineal
– Cada componente puede tener varios sucesores y
varios predecesores
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 22
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 23
09/03/2022
Estructuras lineales
• Están conformadas por ninguno, uno o varios elementos
que tienen una relación de adyacencia ordenada donde
existe un primer elemento, seguido de un segundo
elemento y así sucesivamente hasta llegar al último
• El tipo de dato de los elementos puede ser cualquiera,
pero debe ser el mismo tipo para todos
• El valor contenido en los elementos puede ser el mismo
o diferente.
• En estas estructuras se realizan operaciones de agregar
y/o eliminar elementos a la lista según un criterio
particular.
10 5 8 2 31
25
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 24
09/03/2022
Estructuras de datos lineales: listas
• Estructura lineal compuesta por una
secuencia de 0 o más elementos de algún
tipo determinado y ordenados de alguna
forma
– Es decir, sus elementos están colocados uno
detrás de otro
• Puede crecer o disminuir en el número de
elementos y podrán insertarse o eliminarse
elementos en cualquier posición sin alterar
su orden lógico
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 25
09/03/2022
Listas: Tipos
• De acuerdo a su implementación, las listas
se clasifican en
– Simples
– Doblemente Enlazadas
– Circulares
• De acuerdo a su comportamiento, los
conjuntos lineales se clasifican en
– Listas
– Pilas
– Colas
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 26
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 27
09/03/2022
Estructuras de datos no lineales
• En una estructura lineal, cada elemento sólo
puede ir enlazado al siguiente o al anterior
• A las estructuras de datos no lineales se les llama
también estructuras de datos multienlazadas
– Cada elemento puede estar enlazado a cualquier otro
componentes
• Se trata de estructuras de datos en las que cada
elemento puede tener varios sucesores y/o varios
predecesores
– Árboles
– Grafos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 28
09/03/2022
Estructuras de datos no lineales
• Árboles
– Cada elemento sólo
puede estar enlazado
con su predecesor y
sus sucesores
• Puede tener varios
sucesores
• Grafos
– Cada elemento puede
estar enlazado a
cualquier otro
A
B
D E
C
F
Guayaquil Quito
Cuenca
Ambato
Riobamba
5
5
7
9
8
7
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 29
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 30
09/03/2022
Definicion de un TDA
• La definición de un TDA durante el diseño
debería
– Clara, concisa, sin ambigüedades
• Sin embargo, muchos de nosotros usamos
– Lenguaje natural: sujeto a ambigüedades
– Lenguaje de programación en particular
• No todos lo entienden
– Una notación formal, generalizada
• Todos lo podrán entender y la definición será clara y
concisa
• Una notación formal propuesta es BNF
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 31
09/03/2022
¿Qué es BNF?
• Backus-Naur Form
• Es una notación formal matemática
• Es utilizada para definir la sintaxis de los
lenguajes
– Que esta permitido en cierto lenguaje y que no
– Sin lugar a ambigüedades
• Ejemplo: En lenguaje C,
– Hay reglas para declarar variables
– Y cada sentencia de control tiene su propia regla
de sintaxis
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 32
09/03/2022
¿Cómo funciona BNF?
• Es como un juego matemático
• Se busca definir un símbolo, dando las reglas
para reemplazarlo
– Símbolo := alternativa1 | alternativa2
• Si una expresión escrita
– Se puede expresar usando su definición BNF
– Estará correctamente escrita
– Si no, no será permitida según la sintaxis del lenguaje
• ¡ERROR!
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 33
09/03/2022
Reglas y sintaxis de BNF
• Una regla en BNF indica que
– Un símbolo no terminal a la izquierda del := puede ser
reemplazado por la o las alternativas del lado derecho
• Las alternativas de reemplazo se separan
con |
• Cada alternativa puede ser
– Otro símbolo no terminal
• Que aún falta por definir, va encerrado entre <>
– Un simbolo terminal
• Que ya no necesita más definición
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 34
09/03/2022
Símbolos en el BNF
• :=
– Equivalencia
• |
– Separa opciones de reemplazo para un símbolo dado
• [..]
– Todo lo encerrado entre corchetes se considera
opcional
• {..}
– Todo lo encerrado entre llaves se puede repetir mas
de una vez
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 35
09/03/2022
El TDA racional con BNF
Comportamiento:
Sumar, Restar, Multiplicar, Simplificar
Estado:
<racional> := <numerador>/<denominador>
<numerador>:=<digito>{<digito>}
<denominador>:=<dig_no_cero>{<digito>}
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 36
09/03/2022
Contenido
• Concepto de estructuras de datos
• Necesidad de las estructuras de datos
– Etapas en la selección de una estructura de datos
• Tipos de datos abstractos (TDA):
– Estructuras lineales
– Estructuras no lineales
• Representación de TDA
– Caso de estudio: Memoria dinámica vs POO
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 37
09/03/2022
Recordando…
• La programación
estructurada separa
los datos de las
funciones
• La programación
orientada a
objetos define un
conjunto
de objetos donde se
combina de forma
modular los datos con
las funciones.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 38
09/03/2022
Recordando…
• TDA : Especificación algebraica (abstracta) de
una estructura de datos junto con el conjunto de
operaciones que se pueden hacer sobre ese tipo
de datos.
– Un TDA se asocia a una o más implementaciones
distintas. Al ser una especificación formal
– No soporta el concepto de herencia
• CLASE: Concepto que describe un TDA y una de
sus implementaciones (total o parcial).
– Así, una clase es un TDA equipado con una
implementación posiblemente parcial.
– Soporta herencia.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 39
09/03/2022
Evolución e historia de la
programación
Lenguajes
de bajo nivel
(Basic, Fortran,
Ensamblador, …)
Lenguajes
estructurados
(Pascal, C,
Modula, ADA, …)
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 40
09/03/2022
Lenguajes estructurados
UNIT calculo;
INTERFACE
const
NMAX= 10;
MAX_GUARDA= 2000;
type
TDatosEnt= array [1..NMAX] of integer;
TDatosSal= record
NPasos: Shortint;
Paso: array [1..NMAX-1] of record
O1: byte;
O2: byte;
Fn: byte;
end;
end;
procedure Operar (var Arr: TDatosEnt; O1, O2, Func, Nivel: byte; var Vale: boolean); forward;
procedure CalculaCifras (var Entrada: TDatosEnt); forward;
procedure CalculaCifrasRec (var Entrada: TDatosEnt; PA, PB, Func, Nivel: byte); forward;
Concepto de
módulo/unidad
Separación de
interface/implementación
Tipos definidos
por el usuario
Procedimientos
y funciones
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 41
09/03/2022
Lenguajes estructurados
IMPLEMENTATION
var
suma, num: integer;
CopiaOrden: TDatosEnt;
procedure OrdenaComb (var Entrada: TDatosEnt; Nivel: byte);
var
i, j, maxim, pmaxim, tmp: integer;
begin
CopiaOrden:= Entrada;
num:= Nivel;
for i:= 1 to Nivel-1 do begin
maxim:= CopiaOrden[i];
pmaxim:= i;
j:= i+1;
while j<=Nivel do begin
if CopiaOrden[j]>maxim then begin
maxim:= CopiaOrden[j];
....
end;
end;
end;
Procedimiento
con parámetros
Bloques de
control
estructurados
Separación
interface/
implementación
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 42
09/03/2022
Lenguajes estructurados
• Procedimientos y funciones son abstracciones
de control
• Los tipos definidos por el usuario son
abstracciones de datos
• Las unidades, módulos o paquetes son
abstracciones de nivel superior: abstracciones
de funcionalidades
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 43
09/03/2022
Lenguajes estructurados
Inconvenientes:
• Los datos y los procedimientos de manipulación
sobre los mismos van por separado.
• Es necesario garantizar la ocultación de la
implementación.
• Proliferación de variables globales. ¿Qué papel
juegan?
• Los programas son cada vez más complejos y
difíciles de mantener.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 44
09/03/2022
Evolución e historia de la
programación
Lenguajes
de bajo nivel
(Basic, Fortran,
Ensamblador, …)
Lenguajes
estructurados
(Pascal, C,
Modula, ADA, …)
Lenguajes
orientados a objetos
(Smalltalk, C++,
Java, Eiffel, …)
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 45
09/03/2022
Lenguajes
orientados
a
objetos
// Interface
class Timer {
private:
double StartTime;
double ClockRate;
public:
Timer (void);
bool StartTimer (void);
double ReadTimer (void);
bool Exists;
};
class Elipse {
protected:
double Fcx, Fcy;
double Frx, Fry, Fang;
void FsetXY (int x1, int y1, int x2, int y2);
public:
Elipse (int x1, int y1, int x2, int y2);
Elipse * Clonar (void);
void Pinta (IplImage *image, int color= 0, int ancho= -1);
};
Encapsulación de
datos y operaciones
Los datos
son privados
Las operaciones
son públicas
Una clase es un Tipo
Abstracto de Datos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 46
09/03/2022
Lenguajes orientados a objetos
• Una clase encapsula los datos de un tipo y las
operaciones sobre el mismo
• Una clase es, al mismo tiempo, un tipo
abstracto de datos y un módulo que encierra
un conjunto de funciones relacionadas
• Separación clara entre interface (parte visible
desde fuera) e implementación (oculta)
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 47
09/03/2022
Recordando…
• TDA representa una
vista del mundo
centrada en datos (su
estructura,
representación y
manipulación)
• POO representa una
vista del mundo
orientada al servicio
(qué pueden ofrecer
esos TDAs al resto
del programa)
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 48
09/03/2022
Memoria estática vs dinámica
• Memoria estática: es un
espacio de memoria
reservado para x variable
donde esta no se puede
cambiar durante el
tiempo de ejecución.
• Por ejemplo una variable
a la que se le asigna una
constante
• Memoria dinámica: es
un espacio de memoria
reservado para x
variable.
• Dinámica se refiere a que
en el transcurso de la
ejecución del programa
esta memoria puede ir
cambiando, por ejemplo
incrementando.
• Como un arreglo, tienes
tu arreglo, y en tiempo de
ejecución lo llenas.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 49
09/03/2022
Operador de indirección/desreferencia
• El operador de indirección "*" es un operador unario usado en
lenguajes de programación que incluyen variables de tipo
puntero, como el lenguaje C y varios de sus descendientes.
• Opera sobre una variable de tipo puntero y devuelve una
expresión equivalente al valor contenido en la dirección
apuntada por dicho puntero.
• Esta operación recibe el nombre de "desreferenciar". Por
ejemplo:
int x = 0;
int *puntero_a_x = &x; // * se usa para declarar un
puntero
*puntero_a_x = 1; // * es el operador de indireccion
// x ahora contiene 1
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 50
09/03/2022
50
Referencias, punteros y memoria
• Aparte de las variables primitivas, todas las
variables de Java son referencias
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 51
09/03/2022
Referencias, punteros y memoria
• Java: Las referencias a objetos se pasan por valor
– Todas las referencias a objetos en Java se pasan por valor. Esto
significa que se pasará una copia del valor a un método. Pero el
truco es que pasar una copia del valor también cambia el valor
real del objeto. Para entender por qué, comience con este
ejemplo:
public class ObjectReferenceExample {
public static void main(String... doYourBest) {
Simpson simpson = new Simpson();
transformIntoHomer(simpson);
System.out.println(simpson.name);
}
static void transformIntoHomer(Simpson simpson) {
simpson.name = "Homer";
}
}
class Simpson { String name; }
¿Cuál crees que será
simpson.name después
de que se ejecute el
método
transformIntoHomer?
En este caso, ¡será Homer! La razón es que las variables de objeto de Java son
simplemente referencias que apuntan a objetos reales en la cabecera de memoria (memory
heap). Por lo tanto, aunque Java pasa parámetros a métodos por valor, si la variable apunta
a una referencia de objeto, el objeto real también cambiará.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 52
09/03/2022
Referencias, punteros y memoria
• Java: ¿Se pasan los tipos primitivos por valor?
– Al igual que los tipos de objeto, los tipos primitivos también se pasan
por valor. ¿Puede deducir qué pasará con los tipos primitivos en el
siguiente ejemplo de código?
public class PrimitiveByValueExample {
public static void main(String... primitiveByValue) {
int homerAge = 30;
changeHomerAge(homerAge);
System.out.println(homerAge);
}
static void changeHomerAge(int homerAge) {
homerAge = 35;
}
}
Es 30 porque
(nuevamente) Java
pasa parámetros de
objeto por valor
El número 30 es solo una copia del valor, no el valor real. Los tipos primitivos se asignan en
la pila de memoria (stack memory), por lo que solo se cambiará el valor local. En este caso,
no hay referencia de objeto.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 53
09/03/2022
Referencias, punteros y memoria
• ¿Cómo se relacionan las referencias y los punteros?
– Muchos lenguajes de programación (ej: C, C++, Pascal)
usan variables de punteros
• Los punteros son variables que almacenan direcciones de otras
ubicaciones de memoria.
• Los punteros permiten el acceso indirecto a los datos de los
objetos.
X 010010
Object A
101001
010010
Object B
Y 101001
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 54
09/03/2022
Referencias, punteros y memoria
• Entonces el valor almacenado en un puntero es
una dirección de memoria
• Sin embargo, si se indirecciona un puntero, se
obtiene acceso al objeto al que "apunta"
X = Y; // Changes what X points to
// X no longer has access to
// Object B
X 101001
Object A
101001
010010
Object B
Y 101001
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 55
09/03/2022
55
Referencias, punteros y memoria
• En C++, se desreferencian punteros usando el
operador *
*X = *Y;// Changes contents of object
// that X points to. The
// value of X is unchanged
X 010010
Object A
101001
010010
Object A
Y 101001
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 56
09/03/2022
56
Referencias, punteros y memoria
• Referencias en Java
– Se comportan de manera similar a los
punteros, pero con más restricciones
• Indirección es implícita – no existe el operador de
indirección
• Se pueden asignar valores de referencia
(direcciones) pero no pueden ser manipulados
– Pero el aliasing todavía se produce y se debe
tener mucho cuidado
• Tenga en cuenta cuándo desea un objeto nuevo o
una referencia a uno antiguo
Aliasing: acceso a una ubicación de datos en la memoria a través de diferentes nombres
simbólicos en el programa
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 57
09/03/2022
57
Referencias, punteros y memoria
• Java Memory Use
– Todos los objetos en Java se asignan
dinámicamente
• La memoria se asigna utilizando el operador new
• Una vez asignados, los objetos existen por un período
de tiempo indefinido…
– Siempre que exista una referencia activa al objeto
• Los objetos que no tienen referencias a ellos ya no son
accesibles en el programa
– Ex. Object B del ejemplo mostrado
• Estos objetos están marcados para la GARBAGE
COLLECTION
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 58
09/03/2022
58
Referencias, punteros y memoria
– El recolector de basura de Java (garbage
collector) es un proceso que se ejecuta en
segundo plano durante la ejecución del
programa.
• Cuando la cantidad de memoria disponible se agota, el
recolector de basura recupera los objetos que se han
marcado para la recolección
– Se utiliza un algoritmo bastante sofisticado para determinar
qué objetos se pueden recolectar como basura
• Si hay suficiente memoria disponible, es muy probable
que el recolector de basura nunca se ejecute
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 59
09/03/2022
Construcción Propensa al Error
(programación estructurada)
• Números de punto flotante
– Inherentemente imprecisos. La imprecisión puede dar lugar a
comparaciones válidas.
• Punteros
– Los punteros que apuntan a áreas incorrectas de memoria puede dañar
los datos. El Aliasing puede hacer que los programas sean difíciles de
entender y cambiar.
• Aliasing
– El uso de más de 1 nombre para referirse al mismo espacio de
memoria.
• Asignación dinámica de memoria
– Asignación de tiempo de ejecución puede ocasionar desbordamiento de
memoria.
• Paralelismo
– Puede dar lugar a errores de sincronización sutil imprevistos debido a la
interacción entre los procesos paralelos.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 60
09/03/2022
Construcción Propensa al Error
• Interrupciones
– Las interrupciones pueden causar una operación crítica que terminar y
hacer un programa difícil de entender.
• Herencia
– El código no es localizado. Esto puede resultar en comportamiento
inesperado cuando se realizan cambios y los problemas de
comprensión.
• Recursión
– Los errores en la recursividad puede causar una sobrecargar de
memoria
• Matrices sin límites
– Los fallos de desbordamiento de búfer puede producirse si no hay
control de la envolvente en las matrices.
• Procesamiento de entrada por defecto
– Una acción de entrada que se produce independientemente de la
entrada.
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 61
09/03/2022
61
TDAs vs. Clases
• Las diapositivas anteriores deberían resultarle
familiares
– Ya hemos discutido la idea de abstracción de
datos de clases
– TDAs son representationes de tipos de datos
independientes del lenguaje
• Se puede usar para especificar un nuevo tipo de
datos que luego se puede implementar de varias
maneras usando diferentes lenguajes de
programación
– Las clases son estructuras específicas del
lenguaje que permiten la implementación de
TDAs
• Solo existen en lenguajes orientados a objetos o
basados en objetos
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 62
09/03/2022
62
TDAs vs. Clases
– Un TDA dado se puede implementar de
diferentes maneras usando diferentes clases
• Veremos algunos de estos pronto
• Ej: Stack, Queue, SortedList
– De hecho, una clase determinada puede
usarse para representar más de un TDA
• La clase ArrayList de Java se puede utilizar para
representar un Stack, Queue, Deque y otros TDAs
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 63
09/03/2022
63
Interfaces como TDAs
• En este curso tipicamente se usarán a las
interfaces como TDAs y a las clases como
implementaciones TDA
– Al usar la interfaz, tendremos que confiar en las
descripciones de los datos en lugar de en los datos
reales
• Los datos en sí se dejan sin especificar y se detallarán en la
(s) clase (s) que implementan las interfaces
– Esto está bien, ya que los datos suelen ser específicos de una
implementación de todos modos
• Ej: TDA Stack
– Push un objeto sobre el tope del Stack (pila)
– Pop un objeto sobre el tope del Stack
» En este nivel (TDA) no nos importa cómo se representan
realmente los datos, siempre que los métodos funcionen
como se especifica
Estructuras de datos Carrera de Software
Ph.D. Franklin Parrales 64
09/03/2022
Introducción a las
estructuras de datos (TDA)
con objetos
Unidad 1
Final de la unidad

More Related Content

What's hot

Operaciones con matrices
Operaciones con matricesOperaciones con matrices
Operaciones con matrices
silesilfer
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
Blanca Parra
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
Luis Jherry
 

What's hot (20)

Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Fundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacionalFundamentos de BD - Unidad 5 algebra relacional
Fundamentos de BD - Unidad 5 algebra relacional
 
Algoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externoAlgoritmos de Ordenamiento externo
Algoritmos de Ordenamiento externo
 
Aplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafosAplicaciones de los árboles y grafos
Aplicaciones de los árboles y grafos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
IN Unidad 4: Visualización de información
IN Unidad 4: Visualización de informaciónIN Unidad 4: Visualización de información
IN Unidad 4: Visualización de información
 
Normalizacion de base de datos
Normalizacion de base de datosNormalizacion de base de datos
Normalizacion de base de datos
 
Fundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacionalFundamentos de BD - Unidad 4 diseño de bd relacional
Fundamentos de BD - Unidad 4 diseño de bd relacional
 
Colas
ColasColas
Colas
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
modelo entidad-relacion
modelo entidad-relacionmodelo entidad-relacion
modelo entidad-relacion
 
Unidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos ConceptualUnidad 3 Modelamiento De Datos Conceptual
Unidad 3 Modelamiento De Datos Conceptual
 
Operaciones con matrices
Operaciones con matricesOperaciones con matrices
Operaciones con matrices
 
Método de Búsqueda Hash
Método de Búsqueda HashMétodo de Búsqueda Hash
Método de Búsqueda Hash
 
Programación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivosProgramación Orientada a Objetos -Unidad 6 archivos
Programación Orientada a Objetos -Unidad 6 archivos
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Diseño de bases de datos
Diseño de bases de datosDiseño de bases de datos
Diseño de bases de datos
 
Estructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de OrdenamientoEstructura de Datos Unidad - V: Métodos de Ordenamiento
Estructura de Datos Unidad - V: Métodos de Ordenamiento
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 

Similar to ED Unidad 1: Introducción a las estructuras de datos (TDA) con objetos

ADM BD UNIDAD 1 CLASE 1 y 2.pptx
ADM BD UNIDAD 1 CLASE 1 y 2.pptxADM BD UNIDAD 1 CLASE 1 y 2.pptx
ADM BD UNIDAD 1 CLASE 1 y 2.pptx
Karina88635
 

Similar to ED Unidad 1: Introducción a las estructuras de datos (TDA) con objetos (20)

PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 APRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
 
Evidencias1 (Diapositivas - Rubi Veronica)
Evidencias1 (Diapositivas  - Rubi Veronica)Evidencias1 (Diapositivas  - Rubi Veronica)
Evidencias1 (Diapositivas - Rubi Veronica)
 
Introduccion a las bases de datos 1 parte
Introduccion a las bases de datos 1 parteIntroduccion a las bases de datos 1 parte
Introduccion a las bases de datos 1 parte
 
Inducción
InducciónInducción
Inducción
 
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOSPRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
PRINCIPIOS DEL DISEÑO DE ESTRUCTURAS DE DATOS
 
Conceptos de bases de datos
Conceptos de bases de datosConceptos de bases de datos
Conceptos de bases de datos
 
Bases de datos
Bases de datosBases de datos
Bases de datos
 
introduccion bases de datos
introduccion bases de datosintroduccion bases de datos
introduccion bases de datos
 
Mineria de Datos
Mineria de DatosMineria de Datos
Mineria de Datos
 
1. Presentacion Estructura de datos.pptx
1. Presentacion Estructura de datos.pptx1. Presentacion Estructura de datos.pptx
1. Presentacion Estructura de datos.pptx
 
Gestión de datos: 5 tendencias para lograr el cambio
Gestión de datos: 5 tendencias para lograr el cambioGestión de datos: 5 tendencias para lograr el cambio
Gestión de datos: 5 tendencias para lograr el cambio
 
Bases de datos 1
Bases de datos 1Bases de datos 1
Bases de datos 1
 
Ciclo de vida de un sistema de informacion
Ciclo de vida de un sistema de informacionCiclo de vida de un sistema de informacion
Ciclo de vida de un sistema de informacion
 
ilovepdf_merged (10).pdf
ilovepdf_merged (10).pdfilovepdf_merged (10).pdf
ilovepdf_merged (10).pdf
 
Tema1 (2)
Tema1 (2)Tema1 (2)
Tema1 (2)
 
Funciones de DBA Y Tipos de base de datos
Funciones de DBA Y Tipos de base de datosFunciones de DBA Y Tipos de base de datos
Funciones de DBA Y Tipos de base de datos
 
Modelado de datos
Modelado de datosModelado de datos
Modelado de datos
 
ADM BD UNIDAD 1 CLASE 1 y 2.pptx
ADM BD UNIDAD 1 CLASE 1 y 2.pptxADM BD UNIDAD 1 CLASE 1 y 2.pptx
ADM BD UNIDAD 1 CLASE 1 y 2.pptx
 
FUNCIONES DEL DBA
FUNCIONES DEL DBAFUNCIONES DEL DBA
FUNCIONES DEL DBA
 
Base de datos
Base de datosBase de datos
Base de datos
 

More from Franklin Parrales Bravo

More from Franklin Parrales Bravo (20)

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en Cuenca
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicua
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidas
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgos
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidos
 
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectos
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestra
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software
 
POO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivosPOO Unidad 4: Persistencia de objetos y manejo de archivos
POO Unidad 4: Persistencia de objetos y manejo de archivos
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y Enrutamiento
 

ED Unidad 1: Introducción a las estructuras de datos (TDA) con objetos

  • 1. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 1 09/03/2022 Introducción a las estructuras de datos (TDA) con objetos Unidad 1 Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para uso de los cursos de Estructuras de Datos
  • 2. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 2 09/03/2022 Objetivo general de la Unidad 1 Definir “Estructura de datos”, su representación mediante objetos para el diseño y almacenamiento de los datos en los programas.
  • 3. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 3 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 4. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 4 09/03/2022 Recordando… • Un tipo es una colección de valores. – Por ejemplo, el tipo boolean consta de los valores true y false. Los enteros también forman un tipo. • Un tipo de dato es un tipo con una colección de operaciones que manipulan el tipo. – Por ejemplo, una variable entera es un miembro del tipo de dato entero. La suma es un ejemplo de una operación sobre tipos de datos enteros. • Un elemento dato es una pieza de información o un registro cuyos valores se especifican a partir de un tipo. Un elemento dato se considera que es un miembro de un tipo de dato. – El entero es un elemento de datos simple ya que no contiene subpartes. • Un registro de una cuenta corriente de un banco puede contener varios campos o piezas de información como nombre, número de la cuenta, saldo y dirección. Dicho registro es un dato agregado.
  • 5. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 5 09/03/2022 Problemas, programas, algoritmos y estructuras de datos • Problema: Conjunto de hechos o circunstancias que dificultan la consecución de algún fin. • Algoritmo: Conjunto de reglas finito e inambiguo. • Estructura de datos: Disposición en memoria de la información. • Programa: Algoritmos + Estructuras de datos. PROBLEMA PROGRAMA Algoritmos + Estructuras de datos
  • 6. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 6 09/03/2022 Estructuras de datos • Concepto: Agrupación de datos que se trata como una unidad en su conjunto. Se construyen a partir de los tipos de datos simples • Clasificación: –Por su naturaleza: • Homogénea: Todos del mismo tipo (ej: vectores, tablas, matrices n dimensionales). • Heterogénea: De diferente tipo (ej: registros). –Por su forma de almacenamiento. • Memoria central: – Estática. Tamaño es conocido de antemano (a priori). – Dinámica. El tamaño varía durante la ejecución del programa (ej: listas, árboles, grafos). • Memoria externa (ficheros y bases de datos).
  • 7. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 7 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 8. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 8 09/03/2022 Necesidad de las estructuras de datos • A pesar de la gran potencia de las computadoras actuales, la eficiencia de los programas sigue siendo una de las características más importantes a considerar. • Los problemas complejos que procesan las computadoras cada vez más obligan, sobre todo, a pensar en su eficiencia dado el elevado tamaño que suelen alcanzar. • Hoy, más que nunca, los profesionales deben formarse en técnicas de construcción de programas eficientes.
  • 9. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 9 09/03/2022 Elección de la estructura de datos (ED) adecuada • La mayoría de los lenguajes de programación soportan diferentes EDs • Dentro de la elección debe considerarse también la posibilidad de poder realizar operaciones sobre dichas estructuras definidas. • La elección de una ED redundará en una mayor eficiencia del programa y, sobre todo, en una mejor resolución del problema en cuestión. • Una elección inadecuada de EDs puede conducir a programas lentos, largos y poco eficientes
  • 10. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 10 09/03/2022 Elección de la estructura de datos (ED) adecuada • Una solución se denomina eficiente si resuelve el problema dentro de las restricciones de recursos requeridas. – Restricciones de recursos pueden ser el espacio total disponible para almacenar los datos o el tiempo permitido para ejecutar cada subtarea – Una solución es eficiente cuando requiere menos recursos que las alternativas conocidas • El costo de una solución es la cantidad de recursos que la solución consume. – Normalmente, el coste se mide en término de recursos clave, especialmente el tiempo
  • 11. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 11 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 12. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 12 09/03/2022 Etapas en la selección de una estructura de datos Los pasos a seguir son [SHAFFER 97]: 1. Analizar el problema para determinar las restricciones de recursos que debe cumplir cada posible solución. 2. Determinar las operaciones básicas que se deben soportar y cuantificar las restricciones de recursos para cada una. Ejemplos de operaciones básicas son la inserción de un dato en la estructura de datos, suprimir un dato de la estructura o encontrar un dato determinado en dicha estructura. 3. Seleccionar la estructura de datos que cumple mejor los requisitos o requerimientos
  • 13. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 13 09/03/2022 Consideraciones importantes para la elección de la estructura de datos • ¿Todos los datos se insertan en la estructura de datos al principio o se entremezclan con otras operaciones? • ¿Se pueden eliminar los datos? • ¿Los datos se procesan en un orden bien definido o se permite el acceso aleatorio?
  • 14. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 14 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 15. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 15 09/03/2022 Abstracción • Es “ignorancia selectiva” – Decidir que es importante y que no lo es – Enfocarse y depender de lo que ES importante – Ignorar y no depender de lo que NO ES importante El propósito de la abstracción no es ser poco específico, es más bien crear un nuevo nivel, en el cual se puede ser absolutamente preciso Edsger Dijkstra
  • 16. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 16 09/03/2022 Abstracción para resolver problemas • La mejor abstracción es aquella que hace simples las cosas complejas. – Rescatar y resaltar los conceptos fundamentales – Esconder los aspectos no importantes • Ejemplo: Detalles de la implementación Mientras mas perfecta es una máquina, mas oculto se encuentra su funcionamiento. Al parecer, la perfección no se logra cuando no hay mas que añadir, si no cuando no haya mas que quitar. Antoine de Saint-Exupéry
  • 17. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 17 09/03/2022 Abstracción de datos • Es una técnica poderosa de programación • Permite “inventar”, o definir nuevos tipos de datos – Observando e identificando entidades del mundo real: objetos – Ocultando datos irrelevantes para la resolución del problema • Gracias a esto, se pueden diseñar programas – Mas cortos, Legibles y Flexibles • Estos nuevos tipos de datos se conocen como: – TIPOS DE DATOS ABSTRACTOS (TDA)
  • 18. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 18 09/03/2022 TDAs: Tipos de datos abstractos • Un TDA trata de representar entidades del mundo real: objetos – Especificando el QUE y no el COMO • Se componen de – Comportamiento → Operaciones • Los TDAs existen PARA proveer operaciones • Ejemplo: Un carro, es útil porque se lo puede manejar • Manejar es un comportamiento u operación del TDA Carro – Estado • Se refiere al funcionamiento interno del TDA • Un TDA correctamente creado mantiene su estado OCULTO • Ejemplo: No nos interesa como Carro funciona, solo nos interesa… que funciona
  • 19. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 19 09/03/2022 Ejemplo • Se necesita crear un TDA para representar los números racionales • La abstracción nos permitirá reconocer – El comportamiento de un número racional y – El estado (datos) del mismo • TDA: Racional – Comportamiento: • Sumar, Restar, Multiplicar, Simplificar, etc. – Estado: • Numerador • Denominador, siempre debe ser diferente de 0
  • 20. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 20 09/03/2022 Ventajas de los TDAs • Permiten una mejor representación del mundo real – Una solución puede estar compuesta de un grupo de TDAs • Cada uno con sus comportamientos y estados – El código se comprende mejor, pues los TDAs representan entidades del mundo real • Permite llevar un control de cambios – Si el estado de un TDA esta oculto, si se modifica, nadie se verá afectado – Ejemplo: Se pueden hacer modificaciones a un auto sin que el usuario del mismo se entere o cambie su forma de USAR el auto • Permite la extensibilidad de un sistema – Cada Nuevo Tipo de Dato es un modulo que se adapta a una solución
  • 21. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 21 09/03/2022 Estructuras de datos lineales y no lineales • Estructuras de datos lineales – Cada componente tiene un único sucesor y un único predecesor con excepción del último y el primero • Estructura de datos no lineal – Cada componente puede tener varios sucesores y varios predecesores
  • 22. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 22 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 23. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 23 09/03/2022 Estructuras lineales • Están conformadas por ninguno, uno o varios elementos que tienen una relación de adyacencia ordenada donde existe un primer elemento, seguido de un segundo elemento y así sucesivamente hasta llegar al último • El tipo de dato de los elementos puede ser cualquiera, pero debe ser el mismo tipo para todos • El valor contenido en los elementos puede ser el mismo o diferente. • En estas estructuras se realizan operaciones de agregar y/o eliminar elementos a la lista según un criterio particular. 10 5 8 2 31 25
  • 24. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 24 09/03/2022 Estructuras de datos lineales: listas • Estructura lineal compuesta por una secuencia de 0 o más elementos de algún tipo determinado y ordenados de alguna forma – Es decir, sus elementos están colocados uno detrás de otro • Puede crecer o disminuir en el número de elementos y podrán insertarse o eliminarse elementos en cualquier posición sin alterar su orden lógico
  • 25. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 25 09/03/2022 Listas: Tipos • De acuerdo a su implementación, las listas se clasifican en – Simples – Doblemente Enlazadas – Circulares • De acuerdo a su comportamiento, los conjuntos lineales se clasifican en – Listas – Pilas – Colas
  • 26. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 26 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 27. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 27 09/03/2022 Estructuras de datos no lineales • En una estructura lineal, cada elemento sólo puede ir enlazado al siguiente o al anterior • A las estructuras de datos no lineales se les llama también estructuras de datos multienlazadas – Cada elemento puede estar enlazado a cualquier otro componentes • Se trata de estructuras de datos en las que cada elemento puede tener varios sucesores y/o varios predecesores – Árboles – Grafos
  • 28. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 28 09/03/2022 Estructuras de datos no lineales • Árboles – Cada elemento sólo puede estar enlazado con su predecesor y sus sucesores • Puede tener varios sucesores • Grafos – Cada elemento puede estar enlazado a cualquier otro A B D E C F Guayaquil Quito Cuenca Ambato Riobamba 5 5 7 9 8 7
  • 29. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 29 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 30. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 30 09/03/2022 Definicion de un TDA • La definición de un TDA durante el diseño debería – Clara, concisa, sin ambigüedades • Sin embargo, muchos de nosotros usamos – Lenguaje natural: sujeto a ambigüedades – Lenguaje de programación en particular • No todos lo entienden – Una notación formal, generalizada • Todos lo podrán entender y la definición será clara y concisa • Una notación formal propuesta es BNF
  • 31. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 31 09/03/2022 ¿Qué es BNF? • Backus-Naur Form • Es una notación formal matemática • Es utilizada para definir la sintaxis de los lenguajes – Que esta permitido en cierto lenguaje y que no – Sin lugar a ambigüedades • Ejemplo: En lenguaje C, – Hay reglas para declarar variables – Y cada sentencia de control tiene su propia regla de sintaxis
  • 32. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 32 09/03/2022 ¿Cómo funciona BNF? • Es como un juego matemático • Se busca definir un símbolo, dando las reglas para reemplazarlo – Símbolo := alternativa1 | alternativa2 • Si una expresión escrita – Se puede expresar usando su definición BNF – Estará correctamente escrita – Si no, no será permitida según la sintaxis del lenguaje • ¡ERROR!
  • 33. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 33 09/03/2022 Reglas y sintaxis de BNF • Una regla en BNF indica que – Un símbolo no terminal a la izquierda del := puede ser reemplazado por la o las alternativas del lado derecho • Las alternativas de reemplazo se separan con | • Cada alternativa puede ser – Otro símbolo no terminal • Que aún falta por definir, va encerrado entre <> – Un simbolo terminal • Que ya no necesita más definición
  • 34. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 34 09/03/2022 Símbolos en el BNF • := – Equivalencia • | – Separa opciones de reemplazo para un símbolo dado • [..] – Todo lo encerrado entre corchetes se considera opcional • {..} – Todo lo encerrado entre llaves se puede repetir mas de una vez
  • 35. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 35 09/03/2022 El TDA racional con BNF Comportamiento: Sumar, Restar, Multiplicar, Simplificar Estado: <racional> := <numerador>/<denominador> <numerador>:=<digito>{<digito>} <denominador>:=<dig_no_cero>{<digito>}
  • 36. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 36 09/03/2022 Contenido • Concepto de estructuras de datos • Necesidad de las estructuras de datos – Etapas en la selección de una estructura de datos • Tipos de datos abstractos (TDA): – Estructuras lineales – Estructuras no lineales • Representación de TDA – Caso de estudio: Memoria dinámica vs POO
  • 37. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 37 09/03/2022 Recordando… • La programación estructurada separa los datos de las funciones • La programación orientada a objetos define un conjunto de objetos donde se combina de forma modular los datos con las funciones.
  • 38. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 38 09/03/2022 Recordando… • TDA : Especificación algebraica (abstracta) de una estructura de datos junto con el conjunto de operaciones que se pueden hacer sobre ese tipo de datos. – Un TDA se asocia a una o más implementaciones distintas. Al ser una especificación formal – No soporta el concepto de herencia • CLASE: Concepto que describe un TDA y una de sus implementaciones (total o parcial). – Así, una clase es un TDA equipado con una implementación posiblemente parcial. – Soporta herencia.
  • 39. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 39 09/03/2022 Evolución e historia de la programación Lenguajes de bajo nivel (Basic, Fortran, Ensamblador, …) Lenguajes estructurados (Pascal, C, Modula, ADA, …)
  • 40. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 40 09/03/2022 Lenguajes estructurados UNIT calculo; INTERFACE const NMAX= 10; MAX_GUARDA= 2000; type TDatosEnt= array [1..NMAX] of integer; TDatosSal= record NPasos: Shortint; Paso: array [1..NMAX-1] of record O1: byte; O2: byte; Fn: byte; end; end; procedure Operar (var Arr: TDatosEnt; O1, O2, Func, Nivel: byte; var Vale: boolean); forward; procedure CalculaCifras (var Entrada: TDatosEnt); forward; procedure CalculaCifrasRec (var Entrada: TDatosEnt; PA, PB, Func, Nivel: byte); forward; Concepto de módulo/unidad Separación de interface/implementación Tipos definidos por el usuario Procedimientos y funciones
  • 41. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 41 09/03/2022 Lenguajes estructurados IMPLEMENTATION var suma, num: integer; CopiaOrden: TDatosEnt; procedure OrdenaComb (var Entrada: TDatosEnt; Nivel: byte); var i, j, maxim, pmaxim, tmp: integer; begin CopiaOrden:= Entrada; num:= Nivel; for i:= 1 to Nivel-1 do begin maxim:= CopiaOrden[i]; pmaxim:= i; j:= i+1; while j<=Nivel do begin if CopiaOrden[j]>maxim then begin maxim:= CopiaOrden[j]; .... end; end; end; Procedimiento con parámetros Bloques de control estructurados Separación interface/ implementación
  • 42. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 42 09/03/2022 Lenguajes estructurados • Procedimientos y funciones son abstracciones de control • Los tipos definidos por el usuario son abstracciones de datos • Las unidades, módulos o paquetes son abstracciones de nivel superior: abstracciones de funcionalidades
  • 43. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 43 09/03/2022 Lenguajes estructurados Inconvenientes: • Los datos y los procedimientos de manipulación sobre los mismos van por separado. • Es necesario garantizar la ocultación de la implementación. • Proliferación de variables globales. ¿Qué papel juegan? • Los programas son cada vez más complejos y difíciles de mantener.
  • 44. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 44 09/03/2022 Evolución e historia de la programación Lenguajes de bajo nivel (Basic, Fortran, Ensamblador, …) Lenguajes estructurados (Pascal, C, Modula, ADA, …) Lenguajes orientados a objetos (Smalltalk, C++, Java, Eiffel, …)
  • 45. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 45 09/03/2022 Lenguajes orientados a objetos // Interface class Timer { private: double StartTime; double ClockRate; public: Timer (void); bool StartTimer (void); double ReadTimer (void); bool Exists; }; class Elipse { protected: double Fcx, Fcy; double Frx, Fry, Fang; void FsetXY (int x1, int y1, int x2, int y2); public: Elipse (int x1, int y1, int x2, int y2); Elipse * Clonar (void); void Pinta (IplImage *image, int color= 0, int ancho= -1); }; Encapsulación de datos y operaciones Los datos son privados Las operaciones son públicas Una clase es un Tipo Abstracto de Datos
  • 46. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 46 09/03/2022 Lenguajes orientados a objetos • Una clase encapsula los datos de un tipo y las operaciones sobre el mismo • Una clase es, al mismo tiempo, un tipo abstracto de datos y un módulo que encierra un conjunto de funciones relacionadas • Separación clara entre interface (parte visible desde fuera) e implementación (oculta)
  • 47. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 47 09/03/2022 Recordando… • TDA representa una vista del mundo centrada en datos (su estructura, representación y manipulación) • POO representa una vista del mundo orientada al servicio (qué pueden ofrecer esos TDAs al resto del programa)
  • 48. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 48 09/03/2022 Memoria estática vs dinámica • Memoria estática: es un espacio de memoria reservado para x variable donde esta no se puede cambiar durante el tiempo de ejecución. • Por ejemplo una variable a la que se le asigna una constante • Memoria dinámica: es un espacio de memoria reservado para x variable. • Dinámica se refiere a que en el transcurso de la ejecución del programa esta memoria puede ir cambiando, por ejemplo incrementando. • Como un arreglo, tienes tu arreglo, y en tiempo de ejecución lo llenas.
  • 49. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 49 09/03/2022 Operador de indirección/desreferencia • El operador de indirección "*" es un operador unario usado en lenguajes de programación que incluyen variables de tipo puntero, como el lenguaje C y varios de sus descendientes. • Opera sobre una variable de tipo puntero y devuelve una expresión equivalente al valor contenido en la dirección apuntada por dicho puntero. • Esta operación recibe el nombre de "desreferenciar". Por ejemplo: int x = 0; int *puntero_a_x = &x; // * se usa para declarar un puntero *puntero_a_x = 1; // * es el operador de indireccion // x ahora contiene 1
  • 50. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 50 09/03/2022 50 Referencias, punteros y memoria • Aparte de las variables primitivas, todas las variables de Java son referencias
  • 51. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 51 09/03/2022 Referencias, punteros y memoria • Java: Las referencias a objetos se pasan por valor – Todas las referencias a objetos en Java se pasan por valor. Esto significa que se pasará una copia del valor a un método. Pero el truco es que pasar una copia del valor también cambia el valor real del objeto. Para entender por qué, comience con este ejemplo: public class ObjectReferenceExample { public static void main(String... doYourBest) { Simpson simpson = new Simpson(); transformIntoHomer(simpson); System.out.println(simpson.name); } static void transformIntoHomer(Simpson simpson) { simpson.name = "Homer"; } } class Simpson { String name; } ¿Cuál crees que será simpson.name después de que se ejecute el método transformIntoHomer? En este caso, ¡será Homer! La razón es que las variables de objeto de Java son simplemente referencias que apuntan a objetos reales en la cabecera de memoria (memory heap). Por lo tanto, aunque Java pasa parámetros a métodos por valor, si la variable apunta a una referencia de objeto, el objeto real también cambiará.
  • 52. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 52 09/03/2022 Referencias, punteros y memoria • Java: ¿Se pasan los tipos primitivos por valor? – Al igual que los tipos de objeto, los tipos primitivos también se pasan por valor. ¿Puede deducir qué pasará con los tipos primitivos en el siguiente ejemplo de código? public class PrimitiveByValueExample { public static void main(String... primitiveByValue) { int homerAge = 30; changeHomerAge(homerAge); System.out.println(homerAge); } static void changeHomerAge(int homerAge) { homerAge = 35; } } Es 30 porque (nuevamente) Java pasa parámetros de objeto por valor El número 30 es solo una copia del valor, no el valor real. Los tipos primitivos se asignan en la pila de memoria (stack memory), por lo que solo se cambiará el valor local. En este caso, no hay referencia de objeto.
  • 53. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 53 09/03/2022 Referencias, punteros y memoria • ¿Cómo se relacionan las referencias y los punteros? – Muchos lenguajes de programación (ej: C, C++, Pascal) usan variables de punteros • Los punteros son variables que almacenan direcciones de otras ubicaciones de memoria. • Los punteros permiten el acceso indirecto a los datos de los objetos. X 010010 Object A 101001 010010 Object B Y 101001
  • 54. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 54 09/03/2022 Referencias, punteros y memoria • Entonces el valor almacenado en un puntero es una dirección de memoria • Sin embargo, si se indirecciona un puntero, se obtiene acceso al objeto al que "apunta" X = Y; // Changes what X points to // X no longer has access to // Object B X 101001 Object A 101001 010010 Object B Y 101001
  • 55. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 55 09/03/2022 55 Referencias, punteros y memoria • En C++, se desreferencian punteros usando el operador * *X = *Y;// Changes contents of object // that X points to. The // value of X is unchanged X 010010 Object A 101001 010010 Object A Y 101001
  • 56. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 56 09/03/2022 56 Referencias, punteros y memoria • Referencias en Java – Se comportan de manera similar a los punteros, pero con más restricciones • Indirección es implícita – no existe el operador de indirección • Se pueden asignar valores de referencia (direcciones) pero no pueden ser manipulados – Pero el aliasing todavía se produce y se debe tener mucho cuidado • Tenga en cuenta cuándo desea un objeto nuevo o una referencia a uno antiguo Aliasing: acceso a una ubicación de datos en la memoria a través de diferentes nombres simbólicos en el programa
  • 57. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 57 09/03/2022 57 Referencias, punteros y memoria • Java Memory Use – Todos los objetos en Java se asignan dinámicamente • La memoria se asigna utilizando el operador new • Una vez asignados, los objetos existen por un período de tiempo indefinido… – Siempre que exista una referencia activa al objeto • Los objetos que no tienen referencias a ellos ya no son accesibles en el programa – Ex. Object B del ejemplo mostrado • Estos objetos están marcados para la GARBAGE COLLECTION
  • 58. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 58 09/03/2022 58 Referencias, punteros y memoria – El recolector de basura de Java (garbage collector) es un proceso que se ejecuta en segundo plano durante la ejecución del programa. • Cuando la cantidad de memoria disponible se agota, el recolector de basura recupera los objetos que se han marcado para la recolección – Se utiliza un algoritmo bastante sofisticado para determinar qué objetos se pueden recolectar como basura • Si hay suficiente memoria disponible, es muy probable que el recolector de basura nunca se ejecute
  • 59. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 59 09/03/2022 Construcción Propensa al Error (programación estructurada) • Números de punto flotante – Inherentemente imprecisos. La imprecisión puede dar lugar a comparaciones válidas. • Punteros – Los punteros que apuntan a áreas incorrectas de memoria puede dañar los datos. El Aliasing puede hacer que los programas sean difíciles de entender y cambiar. • Aliasing – El uso de más de 1 nombre para referirse al mismo espacio de memoria. • Asignación dinámica de memoria – Asignación de tiempo de ejecución puede ocasionar desbordamiento de memoria. • Paralelismo – Puede dar lugar a errores de sincronización sutil imprevistos debido a la interacción entre los procesos paralelos.
  • 60. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 60 09/03/2022 Construcción Propensa al Error • Interrupciones – Las interrupciones pueden causar una operación crítica que terminar y hacer un programa difícil de entender. • Herencia – El código no es localizado. Esto puede resultar en comportamiento inesperado cuando se realizan cambios y los problemas de comprensión. • Recursión – Los errores en la recursividad puede causar una sobrecargar de memoria • Matrices sin límites – Los fallos de desbordamiento de búfer puede producirse si no hay control de la envolvente en las matrices. • Procesamiento de entrada por defecto – Una acción de entrada que se produce independientemente de la entrada.
  • 61. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 61 09/03/2022 61 TDAs vs. Clases • Las diapositivas anteriores deberían resultarle familiares – Ya hemos discutido la idea de abstracción de datos de clases – TDAs son representationes de tipos de datos independientes del lenguaje • Se puede usar para especificar un nuevo tipo de datos que luego se puede implementar de varias maneras usando diferentes lenguajes de programación – Las clases son estructuras específicas del lenguaje que permiten la implementación de TDAs • Solo existen en lenguajes orientados a objetos o basados en objetos
  • 62. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 62 09/03/2022 62 TDAs vs. Clases – Un TDA dado se puede implementar de diferentes maneras usando diferentes clases • Veremos algunos de estos pronto • Ej: Stack, Queue, SortedList – De hecho, una clase determinada puede usarse para representar más de un TDA • La clase ArrayList de Java se puede utilizar para representar un Stack, Queue, Deque y otros TDAs
  • 63. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 63 09/03/2022 63 Interfaces como TDAs • En este curso tipicamente se usarán a las interfaces como TDAs y a las clases como implementaciones TDA – Al usar la interfaz, tendremos que confiar en las descripciones de los datos en lugar de en los datos reales • Los datos en sí se dejan sin especificar y se detallarán en la (s) clase (s) que implementan las interfaces – Esto está bien, ya que los datos suelen ser específicos de una implementación de todos modos • Ej: TDA Stack – Push un objeto sobre el tope del Stack (pila) – Pop un objeto sobre el tope del Stack » En este nivel (TDA) no nos importa cómo se representan realmente los datos, siempre que los métodos funcionen como se especifica
  • 64. Estructuras de datos Carrera de Software Ph.D. Franklin Parrales 64 09/03/2022 Introducción a las estructuras de datos (TDA) con objetos Unidad 1 Final de la unidad