41
Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/ Estructuras/ Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y Estructuras de datos y algoritmos algoritmos

Estructuras de datos y algoritmos

  • Upload
    drea

  • View
    83

  • Download
    1

Embed Size (px)

DESCRIPTION

Estructuras de datos y algoritmos. Oscar Bedoya. [email protected] http://eisc.univalle.edu.co/~oscarbed/Estructuras/ Edificio 331, 2º piso, E.I.S.C. CONTENIDO ¿Qué es un tipo de dato? ¿Qué es un tipos de dato abstracto (TDA)? ¿Cuál es el ciclo de vida de un TDA? - PowerPoint PPT Presentation

Citation preview

Page 1: Estructuras de datos y algoritmos

Oscar Bedoya.

[email protected]

http://eisc.univalle.edu.co/~oscarbed/Estructuras/

Edificio 331, 2º piso, E.I.S.C.

Estructuras de datos y Estructuras de datos y algoritmosalgoritmos

Page 2: Estructuras de datos y algoritmos

CONTENIDO

• ¿Qué es un tipo de dato?

• ¿Qué es un tipos de dato abstracto (TDA)?

• ¿Cuál es el ciclo de vida de un TDA?

• Ejemplos de TDA

Page 3: Estructuras de datos y algoritmos

Tipos de datos

Algunos tipos de datos que se encuentran en los lenguajes de programación son:

• int

• float

• double

• char

• cadena de caracteres(String)

• arreglos.

Page 4: Estructuras de datos y algoritmos

Tipos de datos

Considere el tipo de datos int

• Cuáles números pertenecen a este tipo de dato

• Cuántos elementos tiene

• Qué operaciones se pueden realizar sobre enteros

Page 5: Estructuras de datos y algoritmos

Tipos de datos

El tipo de datos int es un subconjunto de los números enteros. Son finitos.

int Z

Algunas de las operaciones que están permitidas sobre enteros son:

+: int x int → int

- : int x int → int

* : int x int → int

/ : int x int → double

%: int x int → double

Page 6: Estructuras de datos y algoritmos

Tipos de datos

El tipo de datos float es un subconjunto de los números reales. Son finitos.

float R

Algunas de las operaciones que están permitidas sobre flotantes son:

+: float x float → float

-: float x float → float

*: float x float → float

/: float x float → float

Page 7: Estructuras de datos y algoritmos

Tipos de datos

El tipo de datos String (cadena de caracteres)

cadena = <carácter0,carácter1, … , caráctern-1>

Algunas de las operaciones que están permitidas sobre cadenas de caracteres son:

strlen : cadena → int

+ : cadena x cadena → cadena

Page 8: Estructuras de datos y algoritmos

Tipos de datos

Desde un enfoque orientado a objetos, considere el tipo Automóvil, definido de la siguiente manera

Automovil = (motor, baul, areapasajeros, chasis,carroceria)

Automovil Vehiculo

Algunas de las operaciones que están permitidas sobre un Automovil

encender : Automovil x Llave → Automovil

acelerar : Automovil x Intensidad → Automovil

Page 9: Estructuras de datos y algoritmos

Tipos de datos

En todos los tipos definidos considerados anteriormente se tienen en cuenta dos aspectos

• Proposiciones lógicas que indican qué elementos pertenecen, o no, al tipo

• Conjunto de operaciones o acciones que se pueden realizar sobre los elementos del tipo

Page 10: Estructuras de datos y algoritmos

Tipos de datos

Un tipo de datos define el conjunto de valores válidos del tipo y las operaciones que se pueden aplicar al tipo.

Page 11: Estructuras de datos y algoritmos

Tipos de datos

Un Tipo de Dato Abstracto debe definir dos partes:

• El invariante

• Un conjunto de operaciones.

Page 12: Estructuras de datos y algoritmos

Tipos de datos

• El invariante.

El invariante es una proposición que expresa el conjunto de valores válidos del TDA. Permite saber qué elementos pertenecen al TDA y qué elementos no.

Un invariante también expresa la estructura abstracta del TDA.

Page 13: Estructuras de datos y algoritmos

Tipos de datos

Se dice que la estructura es abstracta porque se trata de que el TDA tenga un nivel alto de generalidad

Una de las formas para que esto se cumpla es que el TDA debe ser lo más independiente posible de su implementación

Page 14: Estructuras de datos y algoritmos

Tipos de datos

• Un conjunto de operaciones

Una operación es algo que se le puede hacer al TDA.

El conjunto de las operaciones define el comportamiento del TDA, esto es, define lo que se puede hacer o no con el TDA.

Page 15: Estructuras de datos y algoritmos

Tipos de datos

Un TDA puede estar compuesto por otros TDAs.

En términos formales, un TDA se define como el par (invariante , operaciones), donde invariante es una proposición (que tiene un valor verdadero o falso) y operaciones es el conjunto de las operaciones del TDA.

Page 16: Estructuras de datos y algoritmos

Tipos de datos

¿Que es una instancia de TDA?

Una instancia de TDA, o simplemente instancia, es un elemento que pertenece al TDA.

El TDA es abstracto mientras que la instancia es concreta

Page 17: Estructuras de datos y algoritmos

Tipos de datos

¿Que es una instancia de TDA?

Un TDA es como un molde, o un sello, que define como será la forma y comportamiento de los elementos que le pertenecen.

Una instancia, por su parte, es la impresión del sello o molde.

Page 18: Estructuras de datos y algoritmos

Tipos de datos

Considere el TDA Automóvil. A partir de este TDA podemos definir cualquier cantidad de instancias. Cada una con valores concretos que permiten diferenciar una instancia de otra

Page 19: Estructuras de datos y algoritmos

Tipos de datos

El ciclo de vida de un TDA, se compone de tres etapas:

• Diseño• Implementación• Uso.

DISEÑO IMPLEMENTACION USO

Page 20: Estructuras de datos y algoritmos

Tipos de datos

DISEÑO

Se describe cómo va a ser el TDA, su invariante y sus operaciones.

Es en esta etapa cuando el TDA es verdaderamente abstracto, en las otras etapas comienza a ser real.

La etapa de diseño del TDA responde a las preguntas:

¿Cómo es el TDA?. ¿Cómo es la estructura del TDA?¿Cuál es el conjunto de valores válidos?¿Cuáles son sus operaciones?

Page 21: Estructuras de datos y algoritmos

Tipos de datos

DISEÑO

• Proposiciones lógicas que indican qué elementos pertenecen, o no, al tipo

• Conjunto de operaciones o acciones que se pueden realizar sobre los elementos del tipoPor cada operación se debe establecer el dominio y el codominio

Page 22: Estructuras de datos y algoritmos

Tipos de datos

DISEÑO (Documento formal)

1. Nombre: La letra inicial en mayúscula el resto en minúsculas. 2. Descripción del TDA: Una frase en lenguaje natural

describiendo el TDA. 3. Invariante de TDA: Una proposición lógica que expresa el

conjunto de valores válidos del TDA. 4. Las operaciones 4.1 Nombre de operación: Todas las letras en minúscula a

excepción de las operaciones constructoras que tienen el mismo nombre del

TDA.

4.1.1 Descripción: Una frase en lenguaje natural describiendo la operación.

4.1.2 Descripción operacional: La descripción en términos del dominio y

codominio de la operación. 4.1.3 Precondición: Una proposición lógica 4.1.4 Poscondición: Una proposición lógica.

Page 23: Estructuras de datos y algoritmos

Tipos de datos

IMPLEMENTACION

La implementación consiste en tomar el diseño del TDA y convertirlo en algo real, en nuestro caso es llevarlo a un lenguaje de programación.

La implementación de un TDA no es única; dado un diseño de un TDA es posible implementarlo de diversas formas,

Page 24: Estructuras de datos y algoritmos

Tipos de datos

IMPLEMENTACION

DISEÑO IMPLEMENTACION 1 USO

IMPLEMENTACION 2

IMPLEMENTACION 3

IMPLEMENTACION 4

Diferentes implementaciones pueden representar el mismo TDA

Page 25: Estructuras de datos y algoritmos

Tipos de datos

USO

El uso de un TDA se refiere a cuando se utiliza en una aplicación para resolver una problema especifico.

Los diversos usos de un TDA es una prueba de la generalidad de este.

Tener un conjunto de TDAs reutilizables hace mucho más fácil construir un software complejo. Para hacer esto es solo unir las implementaciones que necesitemos de la forma adecuada y se tiene la aplicación.

Page 26: Estructuras de datos y algoritmos

Tipos de datos

USO

En el caso en que se presenten errores en la implementación de un TDA es más fácil corregir un error pues es solo corregir en este y automáticamente quedará corregido en todo el software que lo utilice, ya que los errores están modularizados.

La reutilización y la modularidad hacen las implementaciones de los TDA una herramienta poderosa para el desarrollo de software de calidad.

Page 27: Estructuras de datos y algoritmos

Tipos de datos

IMPLEMENTACION

IMPLEMENTACION USO 1

USO 2

USO 3

USO 4

Diversos usos de la implementación de un TDA.

Page 28: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo

Un número complejo es un objeto matemático que se puede representar como una pareja ordenada, por ejemplo (2,3) o como el polinomio 2 + 3i , donde i es la unidad básica de los números imaginarios.

Los números complejos tienen operaciones como las de suma, resta y multiplicación. Si tenemos dos complejos c1=(r1,i1) y c2=(r2,i2), las operaciones se pueden definir de la siguiente manera:

C1 + C2 = (r1 + r2, i1 + i2)C1 - C2 = (r1 - r2, i1 - i2)

Page 29: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo(Invariante)

Para establecer el invariante debemos responder a las dos preguntas:

¿Cómo es la estructura del TDA?

El TDA Complejo contiene dos partes: la real y la imaginaria.

Page 30: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo(Invariante)

¿Cuál es el conjunto de valores válidos?

Se puede expresar en términos del conjunto de valores válidos de cada una de las partes del TDA, es decir, la primera parte de un Complejo es un número que pertenece al conjunto de los números reales y las segunda es un número imaginario. Formalmente se puede expresar como:

Complejo=(real, imaginario), real R л imaginario I

Page 31: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo(Operaciones)

¿Cuáles son sus operaciones?

sumar: Complejo x Complejo → Complejo

restar: Complejo x Complejo → Complejo

obtenerReal: Complejo → R

obtenerImaginario: Complejo → I

Complejo: R x I → Complejo (Operación de construcción)

Las operaciones sumar y restar tienen como dominio el producto cartesiano de Complejos y como rango un Complejo.

Page 32: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo (Documento final)

TDA Complejo

Descripción: El TDA Complejo representa al concepto

matemático de número complejo, es decir, un número que tiene una parte real y otra imaginaria.

Invariante: Complejo=(real, imaginario), real R л imaginario I

Operaciones:

Page 33: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo (Documento final)

Operación: Complejo

Descripción: Construye un número complejo con base en un

real real y un imaginario imaginario. Descripción operacional: Complejo: R x I → Complejo Precondición: real R л imaginario I Poscondición: Complejo = (real, imaginario)

Page 34: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo (Documento final)

Operación: Sumar

Descripción: Suma dos números complejos. Descripción operacional: sumar: Complejo x Complejo → Complejo Precondición: otro Complejo Poscondición: sumar = (real + otro.real, imaginario +

otro.imaginario)

Page 35: Estructuras de datos y algoritmos

Tipos de datos

TDA Complejo (Documento final)

Operación: ObtenerReal

Descripción: Retorna la parte real del número complejo. Descripción operacional: obtenerReal: Complejo → R Precondición:

Poscondición: obtenerReal = real

Page 36: Estructuras de datos y algoritmos

Tipos de datos

IMPLEMENTACION

Page 37: Estructuras de datos y algoritmos

Tipos de datos

public class Complejo{

double real; double imaginario;

public Complejo(double r, double i) { real = r; imaginario = i; }

Page 38: Estructuras de datos y algoritmos

Tipos de datos

public Complejo sumar(Complejo C1, Complejo C2){

Complejo C3 = new Complejo(0,0); C3.real = C1.real + C2.real; C3.imaginario = C1.imaginario + C2.imaginario; return C3; }

Page 39: Estructuras de datos y algoritmos

Tipos de datos

public double obtenerReal(Complejo C1) { return C1.real; }

Page 40: Estructuras de datos y algoritmos

Tipos de datos

USO

Page 41: Estructuras de datos y algoritmos

Tipos de datos

TDA RACIONAL

TDA Racional

Descripción: El TDA Racional representa al concepto matemático de número racional, es decir, un número que tiene un numerador y un denominador, ambos valores deben ser de tipo entero.

Invariante:

Operaciones: