tipos de datos abstractos colas
Upload: instituto-universitario-de-tecnologia-dr-federico-rivero-palacio
Post on 24-Dec-2014
6.385 views
DESCRIPTION
TRANSCRIPT
10/04/23 Marbella Castañeda 1
Tipo de Dato Abstracto
COLAMarbella Castañeda
Email: [email protected]
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 2
CONTENIDO:• Introducción• Definición y Conceptos Básicos• Especificación Sintáctica• Especificación Semántica• Representación• Implementación
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 3
• Definición y Conceptos Básicos
Una COLA es otro tipo especial de Lista en el cual los elementos se insertan en
un extremo (el posterior) y la supresiones tienen lugar en el otro extremo denominado anterior o frente. A las Colas se les llama también Listas FIFO (first in firts out) o Listas (primero en entrar, primero en salir).
Un tipo de dato abstracto (TDA) de la familia COLA incluye a menudo las cinco operaciones que se especificarán a través de su sintáctica y semántica.
Las diferencias sustanciales con las Colas es que las inserciones se realizan en un extremo (al final o posterior) y las eliminaciones en el otro extremo (anterior o frente)
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 4
• Especificación Sintáctica y Semántica
Para definir el objeto abstracto COLA y sus propiedades (operaciones) se describe el tipo de dato COLA independientemente de cualquier representación e implementación
Para ello es necesario definir el TDA COLA en términos de su especificación sintáctica y semántica:
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 5
• Especificación SintácticaTipo: COLA
DOMINIO RANGO
1. COLA_VACÍA: COLA COLA
2. ES_VACÍA : COLA LÓGICO
3. ENCOLAR : COLA x ELEMENTO COLA
4. DESENCOLAR : COLA COLA
5. PRIMERO: COLA COLA
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 6
• Especificación Semántica
Tipo: COLA
Procedimiento COLA_VACÍA (Var C:COLA);Precondición: NingunaPostcondición: C = ( )Acción: C = ( )fin;
Función ES_VACÍA (C:COLA):LÓGICO;Precondición: NingunaPostcondición: ES_VACÍA := falso o ES_VACÍA := verdadAcción: Si C = ( ) entonces ES_VACIA := verdad
Sino ES_VACIA := falsofin;
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 7
• Especificación Semántica
Tipo: COLA
Procedimiento ENCOLAR (Var C:PILA, E:ELEMENTO);
Precondición: ninguna
Postcondición: P = (E) v P = (p1, p2,,pn,E)
Acción: Si C = ( ) entonces C = (E)
Sino Si C = (c1, c2,…,cn) entonces
C = (c1, c2,…,cn,E)
fin;
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 8
• Especificación Semántica
Tipo: COLA
Procedimiento DESENCOLAR(Var C: COLA)
Precondición : C <> ( )
Postcondición : C = (c2,…,cn)
Acción : Si C = (c1, c2,…,cn) entonces
C = (c2,…,cn)
fin
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 9
• Especificación Semántica
Tipo: COLA
Función PRIMERO (Var C:COLA): ELEMENTO;Precondición: C <> ( )Postcondición: PRIMERO = c1Acción:
Si C = (c1, c2,…,cn) entonces PRIMERO = c1fin;
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 10
• Representación Interna
La representación interna para los objetos del TDA COLA, se especifica en
términos de las estructuras de datos provistas por los lenguajes de programación.
Un TDA COLA puede tener diversas representaciones como una estructura de datos estáticas y/o estructuras de datos dinámicas.
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 11
Representación Interna con una Estructura de Datos Estática
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 12
• Representación Interna
Seleccionemos una estructura de datos, existentes en los lenguajes de
programación que nos permita simular un TDA COLA. Seleccionemos un arreglo
para representar la COLA y los ELEMENTOS que contiene la misma son
representados por el tipo abstracto TRIANGULO. La cantidad de ELEMENTOS
que puede contener la COLA tiene un máximo de n ELEMENTOS.
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 13
• Representación Interna
Por lo que la representación formal de este tipo se define de la siguiente manera:
TipoCOLA = registro
arreglo [1..n] de TRIANGULO;primero, ultimo : ENTERO;
fin;Var
C : COLA;
Tipos de Datos AbstractosTDA COLA
10/04/23 Marbella Castañeda 14
• Representación Gráfica
Gráficamente podríamos ver la COLA C de esta forma:
1 n
Tipos de Datos AbstractosTDA COLA
Primero Último
10/04/23 Marbella Castañeda 15
Tipos de Datos AbstractosTDA COLA
• Implementación
Procedimiento COLAVACÍA (Var C :COLA)
principio
C.primero := 1;
C.ultimo := n;
fin;
• Ejecución : COLAVACÍA( C)
C.Primero C.Último
N1
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 16
Tipos de Datos AbstractosTDA COLA
• Implementación
Función ES_VACÍA (C :COLA) : LÓGICO
principio
Si SIG (C.ultimo) = C.primero entonces
ES_VACÍA := Verdad
Sino ES_VACÍA := Falso;
fin;
• Ejecución : ES_VACÍA (C:COLA)
N1
C.Primero C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 17
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Encolar (var C:COLA, E:Elemento);
principio
Si SIG(SIG(P.ultimo)) = C.primero entonces
OVERFLOW;
Sino
principio
C.ultimo := SIG( C.ultimo);
C.arreglo [C.ultimo] := E;
fin;
fin;
• Ejecución : Encolar (C:Cola, )
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 18
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Encolar (var C:COLA, E:Elemento);
principio
Si SIG(SIG(P.ultimo)) = C.primero entonces
OVERFLOW;
Sino
principio
C.ultimo := SIG( C.ultimo);
C.arreglo [C.ultimo] := E;
fin;
fin;
• Ejecución : Encolar (C:Cola, )
N1
C.PrimeroC.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 19
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Encolar (var C:COLA, E:Elemento);
principio
Si SIG(SIG(P.ultimo)) = C.primero entonces
OVERFLOW;
Sino
principio
C.ultimo := SIG( C.ultimo);
C.arreglo [C.ultimo] := E;
fin;
fin;
• Ejecución: Encolar(C:COLA, )
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 20
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Encolar (var C:COLA, E:Elemento);
principio
Si SIG(SIG(P.ultimo)) = C.primero entonces
OVERFLOW;
Sino
principio
C.ultimo := SIG( C.ultimo);
C.arreglo [C.ultimo] := E;
fin;
fin;
• Ejecución: Encolar(C:COLA, )
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 21
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Encolar (var C:COLA, E:Elemento);
principio
Si SIG(SIG(P.ultimo)) = C.primero entonces
OVERFLOW;
Sino
principio
C.ultimo := SIG( C.ultimo);
C.arreglo [C.ultimo] := E;
fin;
fin;
• Ejecución: Encolar(Var C:COLA, )
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 22
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Desencolar (var C:COLA)
principio
Si ESVACÍO( C ) entonces
UNDERFLOW
Sino
C.primero := SIG(C.primero);
fin;
• EJECUCIÓN: Desencolar(C:COLA)
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 23
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Desencolar (var C:COLA)
principio
Si ESVACÍO( C ) entonces
UNDERFLOW
Sino
C.primero := SIG(C.primero);
fin;
• EJECUCIÓN: Desencolar(C:COLA)
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 24
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Desencolar (var C:COLA)
principio
Si ESVACÍO( C ) entonces
UNDERFLOW
Sino
C.primero := SIG(C.primero);
fin;
• EJECUCIÓN: Desencolar(C:COLA)
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 25
Tipos de Datos AbstractosTDA COLA
• ImplementaciónProcedimiento Desencolar (var C:COLA)
principio
Si ESVACÍO( C ) entonces
UNDERFLOW
Sino
C.primero := SIG(C.primero);
fin;
• EJECUCIÓN: Desencolar(C:COLA)
N1
C.Primero
C.Último
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO
10/04/23 Marbella Castañeda 26
Tipos de Datos AbstractosTDA COLA
• ImplementaciónFunción PRIMERO (C:COLA) : ENTERO;
principio
PRIMERO := C.primero;
Fin;
• Ejecución : PRIMERO (C:COLA)
N1
C.Primero
C.Último
PRIMERO
1. COLAVACÍA
2. ESVACÍA
3. ENCOLAR
4. DESENCOLAR
5. PRIMERO