Tipos Abstractos de Datos
Tema 1
Objetivos ! Introducir el mecanismo de abstracción y justificar la necesidad de los TAD ! Diferenciar adecuadamente los conceptos de especificación e implementación de TAD ! Presentar la especificación algebraica como método formal de definición de TAD
Contenidos 1.1 Concepto de abstracción, terminología y ejemplos 1.1.1 Concepto de abstracción 1.1.2 Tipos abstractos de datos 1.2 Programación con TAD 1.2.1 Los TAD como base del diseño modular 1.2.2 La programación en gran escala 1.2.3 TAD genéricos y algoritmos genéricos
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
1
Tipos Abstractos de Datos
Tema 1
Contenidos 1.3 Especificación algebraica de TAD 1.3.1 Introducción 1.3.2 Signatura de una especificación algebraica 1.3.3 Ecuaciones de una especificación algebraica 1.4 Construcción de especificaciones 1.4.1 Operaciones: clasificación 1.4.2 Escritura de ecuaciones 1.4.3 Situaciones de error 1.4.4 Ejemplos de especificaciones algebraicas
Duración ! 5 clases (7,5 h)
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
2
Tema 1
Tipos Abstractos de Datos
Bibliografía ! Estructuras de datos. Especificación, diseño e implementación Autor: Xavier Franch Gutiérrez Editorial: Ediciones UPC, 1999 Págs. 19-65 ! Diseño de programas. Formalismo y abstracción Autor: Ricardo Peña Marí Editorial : Prentice-Hall, 1999 Págs. 155-204
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
3
Tipos Abstractos de Datos
1.1 Conceptos, terminología y ejemplos 1.1.1 Concepto de abstracción
ABSTRACCIÓN: Método de resolución de problemas que consiste en destacar los detalles importantes y dejar a un lado los irrelevantes
! Ejemplos de abstracción en ciencia de la computación: ! Lenguajes de alto nivel respecto lenguaje ensamblador ! Procedimientos y funciones con parámetros ! Librerías de los lenguajes de programación ! Lenguajes visuales (DELPHI, Visual Basic, Visual C, etc.)
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
4
Tipos Abstractos de Datos
Tema 1
!
Distinguimos 2 formas de abstracción
!
Abstracción de acciones o funcional
!
"
Procedimientos y funciones
"
Se le asigna un nombre y se parametriza
"
Se oculta información
"
Separación entre qué hace (especificación) y cómo se hace (implementación)
Abstracción de Datos "
Tipos básicos o estándar: entero, carácter, booleano, etc.
"
Tipos simples definidos por el programador: enumerado, subrango
"
Tipos estructurados: array, registro → constructores genéricos (genericidad)
"
Tipo Abstracto de Datos (TAD)
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
5
Tipos Abstractos de Datos
Tema 1
1.1.2 Tipos Abstractos de Datos Definición de TAD Colección de valores y de operaciones definidas sobre ellos mediante una especificación independiente de cualquier representación ! La programación con TAD requiere 2 pasos que generan 2 piezas de documentación " PASO 1: Definición o especificación del tipo # Visible al usuario # Precisa, legible y no ambigua # Nombre del tipo + sintaxis y semántica de las operaciones
" PASO 2: Implementación del tipo # Oculta al usuario # Estructurada, eficiente y legible # Elección de la representación más adecuada + algoritmos de las operaciones Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
6
Tipos Abstractos de Datos
Tema 1
! Objetivo: separar el uso del tipo de dato de su implementación
TAD
Especificación Sintaxis
Implementación
Semántica
Algoritmos y Estructuras de Datos II
Representación
Algoritmos
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
7
Tipos Abstractos de Datos
Tema 1
! Métodos para especificar un tipo abstracto de datos ! Especificación formal (especificación algebraica)
! Especificación informal (lenguaje natural) ! Especificación semi-formal ! Para el tipo # Nombre # Descripción # Características # Valores no admitidos
! Para las operaciones # Parámetros # Valor de retorno # Precondiciones. Requisitos que se deben cumplir para que una llamada al procedimiento o función se comporte como se describe en “efecto” # Efecto. Resultado que se produce cuando se realiza una llamada correcta # Excepciones. Comportamiento cuando se da una circunstancia que no permite la realización exitosa de su ejecución Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
8
Tipos Abstractos de Datos
Tema 1
! Precondiciones vs. Excepciones " Precondiciones: # Contexto muy limitado (fácil verificar que se satisfacen las restricciones), implementación más eficiente o más simple " Excepciones: # Siempre que sea posible, la implementación debería comprobar las restricciones y lanzar una excepción en caso de que no se satisfagan. Puede no tener sentido, como en una búsqueda binaria en un vector ordenado # Si una excepción se produce para un cierto subconjunto de valores de los argumentos, este subconjunto no debería aparecer en la cláusula precondiciones
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
9
Tipos Abstractos de Datos
! Ejemplo. Un TAD para almacenar fichas de personas con una serie de operaciones:
Documento de definición del TAD Ficha de personas
Definición del TIPO Nombre: ficha Descripción: Este tipo almacena información sobre personas. Se puede almacenar el nombre, la edad y el número de hijos Características: Permite nombres iguales. Admite cualquier cadena de caracteres como nombre. Otras características. Valores no admitidos: Los descritos en la operación Crear
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
10
Tema 1
Tipos Abstractos de Datos
Definición de las OPERACIONES constructor Crear (n: cadena; e, h: byte); { Parámetros: n: cadena de caracteres donde se almacena el nombre de la persona e: número natural que indica la edad de la persona h: número natural que indica el número de hijos que tiene la persona Devuelve: Precondiciones: 0 < e ≤ 110 0 ≤ h ≤ 15 Efecto: Crea una ficha con los valores indicados en los argumentos Excepciones: Si (e < 16 y h > 0) no se crea la ficha }
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
11
Tipos Abstractos de Datos
... function Descuento: Real; { Parámetros: Devuelve: El porcentaje del descuento Precondiciones: Efecto: Calcula el descuento de una persona dependiendo del número de hijos que tenga, según esta tabla: Un 25% si tiene 1 ó 2 hijos Un 50% si tiene entre 3 y 5 hijos Un 75% si tiene entre 6 y 10 hijos Un 100% si tiene entre 11 y 15 hijos Excepciones: }
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
12
Tipos Abstractos de Datos
Tema 1
En PASCAL, los TAD se crean en unidades independientes unit tadFicha; interface uses ... type cadena = String[50]; type Ficha = object public constructor crear (n: cadena; e, h: byte); procedure ver; function descuento: real; private nombre: cadena; edad: 1..110; hijos: 0..15; end; implementation uses ... constructor Ficha.crear (n: cadena; e, h: byte); { codificación de la operación } { Fin de la unidad }
end.
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
13
Tipos Abstractos de Datos
! El usuario sólo podrá crear y manipular variables de tipo ficha con las operaciones que se ofrecen program usuario; uses tadFichas; var f1, f2, f3, f4: Ficha; d1: Real; res: Integer; f1 := ¿? f2.crear ('José Luís … ', 30, 3);
{ resultado correcto }
f3.crear ('Antonio … ', 5, 2);
{ salta una excepción }
f4.crear ('Isabel … ', 26, -5);
{ no cumple las precondiciones. Resultado impredecible }
d1 := f2.descuento ;
La encapsulación u ocultación de la información consiste en: $ Privacidad de la representación. El usuario no conoce los detalles de cómo se representan los datos en la memoria del ordenador. $ Protección del tipo. El usuario sólo puede usar las operaciones definidas en la especificación.
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
14
Tipos Abstractos de Datos
Tema 1
! Abstracción →TAD distingue entre: ! Elementos importantes " La interfaz que debe conocer el usuario " Nombre del tipo y los encabezamientos + la especificación de las operaciones
! Detalles ocultables " Elección de la representación de los valores " Implementación de las operaciones básicas: #
Si no se eligen operaciones útiles, el tipo carecerá de funcionalidad
#
Una de las operaciones permita generar valores del tipo → operación generadora
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
15
Tipos Abstractos de Datos
1.2 Programación con TAD 1.2.1 Los TAD como base del diseño modular ! Modularidad. Mecanismo que permite descomponer el código de un proyecto software ! Módulo. Unidad de programa que puede ser desarrollada independientemente del resto ! Un diseño modular correcto desde el punto de vista de la Ingeniería de la
Programación o Ingeniería del Software, debe cumplir una serie de requisitos: $ Facilidad de descomponer un problema en subproblemas menos complejos $ Mínima conexión entre los módulos $ Los cambios y mejoras del proyecto deben afectar sólo a un número pequeño de módulos ! Los TAD son una base ideal para la división modular $ Interfaz simple + ocultación de información $ Cambios en la implementación sin afectar a los programas que usan el tipo $ Tamaño adecuado
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
16
Tipos Abstractos de Datos
Tema 1
1.2.2 La programación en gran escala ! El diseño descendente junto con la abstracción funcional no es suficiente: $ Desequilibrio entre acciones abstractas o de alto nivel y tipos de datos concretos o de bajo nivel $ Decisiones sobre la representación de los datos se toman desde el principio
algoritmos de datos
algoritmos + estructuras de datos = programas algoritmos de control
algoritmos de control + TAD = programas
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
17
Tipos Abstractos de Datos
Tema 1
! Ejemplo: Programa que lea una secuencia de enteros desde fichero y escriba en pantalla cada entero distinto leído junto con su frecuencia de aparición, en orden decreciente de frecuencias
ENTRADA: 5 15 25 5 7 5 7 15 7 5 SALIDA:
5
4
7
3
15
2
25
1
El algoritmo recoge sólo los aspectos esenciales. Falta implementar el tipo tablaF y sus operaciones
Algoritmos y Estructuras de Datos II
algoritmo estadística importa tadFrecuencias var t: tablaF; nombre: cadena; dato: entero; fvar inicio escribir (‘Nombre del fichero: ’); leer (nombre); asociar (f, nombre); iniciarLectura (f); t.inicializar; mientras fin (f) hacer leer (f, dato); t.añadir (dato); fmientras para orden:= 1 hasta t.total hacer escribir (‘Número: ’, t.infoEnt(orden), ‘Frecuencia: ’, t.infoFrec(orden)); fpara falgoritmo
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
18
Tema 1
Tipos Abstractos de Datos
Documento de definición del TAD tablaF
Definición del TIPO Nombre: tablaF Descripción: Almacena números enteros junto con la frecuencia de aparición de cada uno de ellos Características: Se utiliza para contar las veces en las que aparece cada número cuando se lee una secuencia de números enteros Valores no admitidos:
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
19
Tipos Abstractos de Datos
Definición de las OPERACIONES constructor inicializar; { Parámetros: Devuelve: Precondiciones: Efecto: crea una tabla de frecuencias vacía Excepciones: }
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
20
Tema 1
Tipos Abstractos de Datos
Definición de las OPERACIONES acción añadir (n: entero); { Parámetros: n: entero que debe añadirse a la tabla de frecuencias Devuelve: Precondiciones: Efecto: Si n no está en la tabla, lo añade e inicializa a 1 su frecuencia de apariciones. En caso contrario, se incrementa en 1 su frecuencia. Excepciones: }
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
21
Tipos Abstractos de Datos
Definición de las OPERACIONES función total: entero; { Parámetros: Devuelve: el número de enteros distintos que hay en la tabla Precondiciones: Efecto: Excepciones: }
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
22
Tema 1
Tipos Abstractos de Datos
Definición de las OPERACIONES función infoEnt (i:entero): entero; { Parámetros: i: posición i-ésima de la tabla Devuelve: entero que ocupa el i-ésimo lugar en la tabla en orden decreciente de frecuencias Precondiciones: 1 ≤ i ≤ total Efecto: Excepciones: }
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
23
Tipos Abstractos de Datos
Definición de las OPERACIONES función infoFrec (i:entero): entero; { Parámetros: i: posición i-ésima de la tabla Devuelve: número de veces que se encuentra el entero que ocupa la posición i-ésima en la tabla, según el orden descendiente de frecuencias Precondiciones: 1 ≤ i ≤ total Efecto: Excepciones: }
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
24
Tipos Abstractos de Datos
Tema 1
! Siguiente refinamiento: elección de la representación del tipo tablaF e implementación de las operaciones tipo elemento = registro número, frec: entero; fregistro; tablaF = clase frecs: tabla [1..max] de elemento; numElems: entero; fclase;
! Distintas soluciones ! Ninguna debe influir en el código del algoritmo principal ! Ejemplo: la ordenación se puede hacer en las operaciones infoX en lugar de ir ordenándola cada vez que se añade un elemento mediante la operación añadir
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
25
Tipos Abstractos de Datos
Tema 1
1.2.3 TAD genéricos y algoritmos genéricos
! La parametrización aplicada a la abstracción de datos permite definir TAD genéricos. Ej.: tablaF capaz de almacenar frecuencias de elementos de un tipo cualquiera
! Se pueden definir también acciones genéricas: se utilizan parámetros en lugar de tipos concretos. Ej.: acción intercambiar(x, y: entero); var t: entero; inicio t := x; x := y; y := t facción
Algoritmos y Estructuras de Datos II
acción intercambiar (x, y: T); var t: T; inicio t := x; x := y; y := t facción
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
26
Tipos Abstractos de Datos
Tema 1
1.3 Especificación algebraica de un TAD 1.3.1 Introducción ! Especificación algebraica. Técnica formal para especificar tipos abstractos de datos
conjunto de valores
OBJETIVO Definir sin ambigüedades un tipo de datos
sintaxis y significado de cada operación permitida
VENTAJAS ! Define tipos independientemente de cualquier representación e implementación ! Consigue unanimidad en la interpretación del tipo ! Posibilita la obtención de código automáticamente a partir de la especificación algebraica (aún no muy desarrollado) Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
27
Tipos Abstractos de Datos
1.3.2 Signatura de una especificación algebraica !
Signatura. Define los géneros y los nombres de las operaciones con sus perfiles
nombres de los nuevos tipos a especificar
número y tipo de los parámetros, y tipo del resultado
CARACTERISTICAS ! Notación funcional ! Cada operación es una función con 0 o más parámetros ! Todas las operaciones devuelven un único valor de un tipo determinado
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
28
Tipos Abstractos de Datos
Tema 1
Ejemplo: Signatura del TAD tablaF
espec tadFrecuencia
palabras reservadas para indicar el comienzo y el final de una especificación
usa naturales, enteros
importación de definiciones hechas en otras especificaciones
género tablaF operaciones inicializar: % tablaF
nombre de los tipos que se van a especificar
añadir: tablaF entero % tablaF total: tablaF % natural infoEnt: tablaF natural % entero
nombre de operación
infoFrec: tablaF natural % natural
perfil de operación fespec
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
29
Tipos Abstractos de Datos
Tema 1
OTRAS CARACTERISTICAS
! Existen operaciones sin parámetros
CONSTANTES
# t.inicializar; # En un lenguaje imperativo: • t := inicializar(); • inicializar(t);
! La traducción de notación algebraica (funcional) a OO es inmediata. El parámetro cuyo tipo es el que aparece en el género se convierte en el objeto sobre el que se aplica el método # inicializar se transforma en un procedimiento sin parámetros # total se transforma en una función sin parámetros # añadir, infoEnt, infoFrec se transforman en funciones con un único parámetro
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
30
Tipos Abstractos de Datos
Tema 1
Ejemplo. Posible signatura de los tipos booleanos y naturales con el 0
Constantes espec boolnat géneros booleano, natural Notación prefija. El nombre de la operación y los parámetros entre paréntesis, separados por comas.
operaciones verdad, falso : % booleano _ : booleano % booleano
suc(x) = y
_ ∧ _ , _ ∨ _ : booleano booleano % booleano 0 : % natural
Notación infija. El símbolo _ indica la posición de los argumentos o parámetros.
suc : natural % natural _ + _ , _ * _ : natural natural % natural _ ≤ _ , _ > _ : natural natural % booleano
x ≤ y = verdad
Algoritmos y Estructuras de Datos II
fespec
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
31
Tipos Abstractos de Datos
Tema 1
! Para cada género existe un conjunto de términos bien formados ⇒ sintácticamente correctos
! Cada constante es un término y mediante la aplicación sucesiva y correcta de símbolos de operaciones de una signatura se pueden construir términos
! Ejemplos de términos bien formados : 0 (suc (suc (0)) * suc(0)) ≤ suc(0) ((verdad ∧ falso) ∧ ( falso)) ∨ (0 > (suc (0))) ! Cada valor del tipo puede caracterizarse por un término denominado término canónico
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
32
Tema 1
Tipos Abstractos de Datos
1.3.3 Ecuaciones de una especificación algebraica
! También se conocen con el nombre de axiomas ! Determinan las propiedades y el comportamiento de las operaciones
! Toda especificación debe cumplir: & sólo pertenecen al tipo los valores que puedan ser creados mediante términos sintácticamente correctos & cada término bien formado denota un valor diferente del tipo especificado
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
33
Tipos Abstractos de Datos
Ejemplo. Queremos especificar el tipo naturales con el 0 espec naturales_1 género natural operaciones 0 : % natural suc : natural % natural fespec
# únicos valores que pueden construirse: 0, suc (0), suc (suc (0)), suc (suc (suc (0))), etc. # cada término denota un valor diferente
Añadimos a la especificación la operación suma espec naturales_2 género natural operaciones 0 : % natural suc : natural % natural _ + _ : natural natural % natural fespec Algoritmos y Estructuras de Datos II
# incumple la segunda propiedad # "suc (0)" y "0 + suc (0)“ generan el natural 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
34
Tema 1
Tipos Abstractos de Datos
! 2 puntos de vista respecto al papel de las ecuaciones en las especificaciones algebraicas: # igualar términos que generan el mismo valor (punto de vista algebraico) # definir el comportamiento de las operaciones con todas las posibles combinaciones de valores (patrones) que pueden tomar sus parámetros (punto de vista semántico)
! Formato de una ecuación:
término_1 = término_2
# donde término_1 y término_2 son términos bien formados de un mismo género
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
35
Tipos Abstractos de Datos
espec naturales_3 género natural operaciones 0 : % natural
! Punto de vista algebraico # igualar términos
suc : natural % natural _ + _ : natural natural % natural ecuaciones x, y: natural x+0=x
! Punto de vista semántico # definir el comportamiento de las operaciones con todos los patrones o representantes del tipo
x + suc (y) = suc (x+y) fespec
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
36
Tipos Abstractos de Datos
Tema 1
Ejemplo. Completar la especificación algebraica de los booleanos espec bool género booleano operaciones verdad, falso: % booleano _: % booleano _ ∧ _ , _ ∨ _ : booleano booleano % booleano ecuaciones b: booleano verdad = falso = b ∨ verdad =
verdad ∨ b =
b ∨ falso =
falso ∨ b =
b ∧ verdad =
verdad ∧ b =
b ∧ falso =
falso ∧ b =
fespec
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
37
Tipos Abstractos de Datos
Tema 1
1.4 Construcción de especificaciones 1.4.1 Operaciones: clasificación ! g: símbolo o identificador del género correspondiente al tipo que se desea especificar ! OP(g): conjunto de operaciones relacionadas con g
Gen(g)
! Clasificación: Cons(g) =
' Constructoras. Cons(g)
Mod(g)
& Generadoras. Gen(g) & Modificadoras. Mod(g)
OP(g) =
' Observadoras. Obs(g) Obs(g)
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
38
Tema 1
Tipos Abstractos de Datos
Natural
Bolsa
espec naturales
espec secuenciaDeNaturales
usa booleanos
usa naturales_3
género natural
género secN
operaciones
operaciones
0 : % natural suc: natural % natural _ + _ : natural natural % natural
[ ] : % secN
{secuencia vacía}
[ _ ] : natural % secN
{secuencia unitaria}
_ ++ _ : secN secN % secN
{concatenar secuencias}
_ ⊕ _ : natural secN % secN
_ ≤ _ : natural natural % booleano
{añadir un natural a una secuencia}
fespec
ecuaciones x: natural; s, s1, s2, s3: secN s ++ [ ] = s [ ] ++ s = s (s1 ++ s2) ++ s3 = s1 ++ (s2 ++ s3)
¿Clasificación de las operaciones?
x ⊕ s = [x] ++ s fespec
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
39
Tipos Abstractos de Datos
! El conjunto Gen(g) puede ser: & Conjunto libre de generadoras: todo término formado sólo por constructoras generadoras denota un valor diferente en el tipo de datos correspondiente a g & Conjunto no libre de generadoras: dos o más términos distintos formados sólo por constructoras generadoras denotan un mismo valor del tipo ¿Son libres o no libres?
• Gen (natural) = {0, suc} • Gen (secN) = { [ ], _ ⊕ _ } • Gen (secN) = { [ ], [ _ ], _ ++ _ }
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
40
Tema 1
Tipos Abstractos de Datos
1.4.2 Escritura de ecuaciones ! Paso 1. Elegir conjunto de operaciones generadoras ! Paso 2. Si Gen(g) es un conjunto no libre, escribir ecuaciones entre generadoras. Si es libre, no hacer nada ! Paso 3. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación modificadora
! Paso 4. Escribir todas las ecuaciones necesarias para definir el comportamiento de cada operación observadora
Algoritmos y Estructuras de Datos II
Tema 1
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
41
Tipos Abstractos de Datos
1.4.3 Situaciones de error Ejemplo. Queremos añadir la operación predecesor a los naturales espec naturales_4 género natural operaciones 0 : % natural suc : natural % natural parcial pred: natural % natural dominios de definición x: natural pred (suc (x)) ecuaciones x: natural
# la operación predecesor no está definida para el natural 0 → situación de error # es una operación parcial → no puede aplicarse a todos los valores del dominio # en la sección dominios de definición se especifican los dominios donde están definidas las operaciones parciales de la especificación
pred (suc (x)) = x fespec
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
42
Tema 1
Tipos Abstractos de Datos
1.4.4 Ejemplos de especificaciones algebraicas
Ejemplo. Completar la especificación algebraica del TAD Conjunto de caracteres. espec conjunto de caracteres usa booleanos, caracteres, naturales genero conjcar operaciones ∅: % conjcar poner, quitar: carácter conjcar % conjcar _ ∪ _ , _ ∩ _ : conjcar conjcar % conjcar _ ∈ _ : carácter conjcar % booleano esVacío: conjcar % booleano cardinal: conjcar % natural
Algoritmos y Estructuras de Datos II
I.T. en Informática de Gestión/Sistemas
Universidad de Huelva
43