Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

25
Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez

Transcript of Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Page 1: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Programación IIFacultad de Ciencias de la Computación

MC Beatriz Beltrán Martínez

Page 2: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Introducción a la abstracción de datosMC Beatriz Beltrán Martínez

Primavera 2015

Page 3: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Introducción a la abstracción de datos• ¿Qué es abstracción?

• La abstracción consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" más que en el "¿cómo lo hace?"

FC

C -

BU

AP

P

rimav

era

2015

BB

M

3

Page 4: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

• La abstracción es una estrategia de resolución de problemas en la cual el programador se concentra en resolver una parte del problema ignorando completamente los detalles sobre cómo se resuelven el resto de las partes.

• En este proceso de abstracción se considera que el resto de las partes ya han sido resueltas y por lo tanto pueden servir de apoyo para resolver la parte que recibe la atención.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

4

Abstracción

Page 5: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

• La abstracción es la estrategia de programación más importante en computación. Sin abstracción las personas serían incapaces de abordar los problemas complejos.

• La pericia de un programador no está en ser veloz para escribir líneas de programa, si no que en saber descubrir, en el proceso de diseño, cuáles son las partes del problema, y luego resolver cada una de ellas abstrayéndose de las otras.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

5

Abstracción

Page 6: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

• Un ejemplo de abstracción es el hecho de que uno pueda conducir un automóvil sin ser un mecánico (lo cual probablemente no era cierto con los primeros vehículos). Al conducir, uno se abstrae de cómo funciona la combustión en el motor. Sólo se requiere saber cómo se maneja el volante y los pedales, y cuales son las reglas del tránsito.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

6

Abstracción

Page 7: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

• Dos de los tipos mas importantes de abstracción son los siguientes: División en partes: Abstracción “Tiene un”

Dividir un sistema complejo en sus partes, y dividir las partes en sus componentes puede considerar algunas de éstas de forma aislada. Con la característica de la palabra «tiene-un».

División en especialización: Abstracción “Es un” La abstracción “Es-un” toma un sistema complejo, y lo ve

como una instancia de una abstracción más general. Se caracteriza por las sentencias que tienen las palabras «Es-un».

FC

C -

BU

AP

P

rimav

era

2015

BB

M

7

Abstracción

Page 8: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

•Un proceso de generalización mediante la reducción de información de un concepto o un fenómeno observable, típicamente para retener solo la información que es relevante a un propósito particular. •Tratar de entender el problema para separar los detalles necesarios de los que no los son.

• Tratamos de obtener nuestra propia vista abstracta, o modelo, del problema.

•Este proceso de modelado es llamado abstracción.

8

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15Abstracción

Page 9: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Conjunto de valores que sirve de dominio de ciertas operaciones.

Dominio(int)= ZDominio(float)=R

FC

C -

BU

AP

P

rimav

era

2015

BB

M

9

Tipo de datos

Page 10: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

•Este concepto aparece a mediados de la década de los 70's•Tipo abstracto de dato (TDA)

• conjunto de valores que lo caracteriza.• operaciones que sobre él se pueden aplicar.• propiedades que determinan inequívocamente su

comportamiento.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

10

Tipos de datos abstractos

Page 11: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

• P/E Tipo int del Lenguaje C• Valores (rango) : -32..., 32..• Operaciones: suma, resta, producto, cociente,

módulo.• Propiedades: a+b=b+a, a*0=0, etc.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

11

Tipos de datos abstractos

Page 12: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

•¿Por qué abstracto?

•Proviene de “abstracción”, y responde al hecho de que los valores de un tipo pueden ser manipulados mediante sus operaciones si se saben las propiedades que éstas cumplen, sin que sea necesario ningún conocimiento acerca de su implementación en la máquina.

FC

C -

BU

AP

P

rimav

era

2015

BB

M

12

Tipo abstracto de datos

Page 13: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

•Los Tipos de Datos Abstractos son una solución parcial a los modelos.

•El TDA define la interface a la abstracción de datos sin especificar detalles de la implementación.

13

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15Tipos de datos abstractos

Page 14: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Modelo

•Un modelo es una abstracción u objeto conceptual usado en la creación de una fórmula predecible o una solución.

•Un modelo define una vista abstracta del problema, se enfoca solamente en aspectos relacionados y trata de definir propiedades:

• Los datos que son afectados;• Las operaciones que son identificadas;

•El tipo de dato abstracto (TDA) es un tipo de Modelo. 14

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 15: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Propiedades de los TDA• Con abstracción, creamos una entidad bien-definida,

la cual puede ser adecuadamente manejada.• Estas entidades definen la estructura de datos de un

conjunto de ítems o elementos. • Por ejemplo, cada empleado administrado tiene un

nombre, fecha de nacimiento, número de seguridad social …

• La estructura de datos solamente puede ser accedida con operaciones bien definidas.• Este conjunto de operaciones se llama interface y

es exportada por la entidad.• Una entidad con las propiedades justamente descritas

se llama tipo de dato abstracto (TDA). 15

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 16: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Definición de un TDA

• TDA se caracteriza por las siguientes propiedades: 1. Exporta un tipo. 2. Exporta un conjunto de operaciones. Este

conjunto es llamado interface.3. Las Operaciones de la interface son el único

mecanismo de acceso a la estructura de datos del tipo.

4. Axiomas y precondiciones definen el dominio de la aplicación del tipo.

16

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 17: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Objetivo de un TDA• El fin que persigue el concepto de TDA es separar el

uso del tipo de dato, de su implementación.• Para conseguir este objetivo, la definición de un TDA

se divide en dos partes:• Especificación• Implantación

17

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 18: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Especificación Sintáctica

•Qué hace? Especificación de las entidades y sus propiedades (interface).

•Definir el nombre de las entidades abstractas.

•Definir el nombre de las operaciones indicando el dominio (argumentos) y el co-dominio o rango (los valores de retorno).

18

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 19: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Especificación Semántica

•Cómo lo hace? Descripción de la representación del objeto (estructuras de los datos) y desarrollo de las operaciones.•Definir el significado de cada operación usando los símbolos definidos en la especificación sintáctica.•La especificación puede ser de dos tipos:

• Informal, a través del lenguaje natural.• Formal, rigurosa y fundamentada

matemáticamente. 19

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 20: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

•Además:• {P} Pre-condición: condiciones que deben cumplirse

antes de realizar la operación.• {Q} Post-condición: condiciones que se cumplen

una vez realizada la operación.

•La notación usual es {P} S {Q}, donde S es la función o procedimiento.

20

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15Especificación Semántica

Page 21: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Especificación de un TDA• La especificación de un TDA consiste en establecer las

propiedades que lo definen.• Para describir un TDA es necesario describir:

• Los valores que pueden tomar los datos de ese tipo.• Todas las operaciones realizables sobre de ellos.

• Una especificación debe poseer 4 propiedades:• Ser precisa: Solo dice lo imprescindible.• Ser general: Es adaptable a diferentes contextos.• Ser legible: Transmite a los usuarios del tipo y al

implementador el comportamiento del tipo.• No ambigua: Evita dobles interpretaciones. 21

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 22: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Ejemplo: TDA Bolsa• Definición: Es una colección no ordenada de elementos con repetición.• Tipo: Bolsa.• Sintaxis:

CrearBolsa () BolsaBolsaVacia BolsaBolsaLlena BolsaPoner (Bolsa, Objeto) BolsaEsVacia (Bolsa) BooleanRetirar (Bolsa, Objeto) Objeto

• Semántica: b es Bolsa, e, f son elementosCrearBolsa () = BolsaVaciaEsVacia (CrearBolsa()) = VerdaderoEsVacia (Poner(CrearBolsa(), e)) = FalsoRetirar (BolsaVacia, e) = ErrorRetirar (Poner(CrearBolsa(), f), e) = f si f=ePoner (BolsaLlena, e) = Error 22

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 23: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Ejemplo: TDA Bolsa• Definición: Es una colección no ordenada de elementos con

repetición.• Tipo: Bolsa.• Operaciones:

Función Construir_Bolsa () bolsa{postcondición: Devuelve una bolsa vacía}Función Poner (B: bolsa; e: elemento) bolsa{precondición: La bolsa no esta llena}{postcondición: Añade el elemento e a la bolsa}Función EsVacia (B: bolsa) boolean{postcondición: Devuelve verdadero si la bolsa no tiene elementos, falso en otro caso}Función Retirar (B: bolsa; e: elemento) elemento{precondición: La bolsa no esta vacía}{postcondición: Elimina el elemento e de la bolsa B} 23

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

Page 24: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Ejemplo: TDA Fracción

24

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15

• Definición: Una fracción es un par ordenado de enteros siempre y cuando la segunda componente sea distinta de cero.

• Tipo: Fracción.• Tipo abstracto Racional: (e(1), e(2)).• Operaciones:

Función ConstruirFraccion (a,b: Entero) Fracción{precondición: b ≠ 0}{postcondición: e(1) = a AND e(2) = b}Función Numerador (r: Fracción) entero{postcondición: Numerador = e(1)}Función Denominador (r: Fracción) entero{postcondición: Denomidador = e(2)}Función Multiplicar (r1, r2: Fracción) Fracción{Inicio multiplicar = contruirFraccion (Numerador(r1) * Numerador(r2), Denominador(r1) * Denominador(r2)) Fin}

Page 25: Programación II Facultad de Ciencias de la Computación MC Beatriz Beltrán Martínez.

Ejemplo TDA bool• Definición: Tipo booleano • Tipo: bool• Sintaxis:

cierto, falso bool~ (bool) boolV(bool, bool) boolΛ (bool, bool) bool

• Semántica:~ cierto = falsob V cierto = ciertob V falso = bb Λ cierto = bb Λ falso = falso

25

BB

MF

CC

- B

UA

P

Prim

aver

a 20

15