Sunteți pe pagina 1din 13

INTRODUCCIN

Estructura de Datos
Tipos Abstractos de Datos (TADS)

Para poder obtener un programa que resuelva un problema dado, son


necesarios varios pasos :

Profs.

Lorna
Figueroa
Mauricio
Solar
UTFSM 1 / 2008

La formulacin y especificacin del problema


El diseo de una solucin
La implementacin
Las pruebas y documentacin
Evaluacin de la solucin

M.
F.

L.F.M.

Como obtener a partir de un problema, un programa


que lo resuelva?

Lo importante es saber claramente lo que se quiere resolver (tener


especificaciones claras).

Hay problemas que no tienen definido un modelo claro, que slo se puede definir
experimentando.

Una vez conocido el modelo del problema, se intenta resolver basndose en


dicho modelo.

Esta solucin se alcanza mediante la aplicacin de un algoritmo.

Otros se pueden plantear usando modelos formales: hay un modelamiento que se


soporta en una teora bien definida (matemtica, fsica, ciencias de la
computacin, etc.)

Algoritmo: una secuencia finita de instrucciones, cada una de ellas con un


significado muy claro, que tienen realizarse con una cantidad finita de esfuerzo
y en un tiempo finito.

MODELO
MATEMATICO

ALGORITMO
INFORMAL

TIPOS DE
DATOS
ABSTRACTOS

ESTRUCTURA
DE DATOS

PROGRAMA
EN EL
LENGUAJE

PROGRAMA
EN PSEUDOCODIGO

INSTANCIACIONES

Especificacin
Especificacin
del
delproblema
problema

EJECUCION
EN LA
MAQUINA

Programa
Programa
Algoritmo
Definicin
de TDAs

Abstraccin - Modelo

Abstraccin - Modelo

Uno de los objetivos de la computacin es resolver


problemas.
Normalmente los problemas son confusos y lo primero que se
tiene que hacer es entender el problema para apartar los
detalles no esenciales y dejar slo los que sirven.
Tu debes hacer tu propia representacin abstracta o modelo
del problema. Este proceso se llama abstraccin.
Problema

Entonces, el modelo define una perspectiva abstracta del


problema.
Esto implica que el modelo se enfoca solamente en aspectos
relacionados con el problema, definiendo solo las propiedades
del problema.
Estas propiedades incluyen
los datos que son afectados,
las operaciones que son identificadas por el problema.

abstraccin
modelos
7

Tipo de datos (TD)

Tipo de datos (TD)

Concepto
En un lenguaje de programacin, el tipo de datos de una
variable (o constante o resultado de una funcin) est
determinado por:
conjunto de valores que dicha variable puede tomar
conjunto de operaciones que se pueden realizar con
variables del mencionado tipo (argumentos y/o resultado).

Ejemplo:
el tipo boolean tiene dos valores: {false, true},
es decir que una variable de este tipo podra tomar
slo uno de esos valores;
con respecto a las operaciones cuenta con la negacin,
la conjuncin y la disyuncin cuya representacin es:
not, and y or respectivamente.

10

Estructura de datos

Estructura de Datos
Representacin en el computador de los datos o
caractersticas relevantes de un objeto o de un
concepto.

Una estructura de datos es una coleccin de variables


organizadas de alguna manera determinada.

Los datos o caractersticas que se considerarn


relevantes dependern del contexto en que se
aplicarn.

Es una manera de almacenar y organizar datos para


facilitar el acceso, modificaciones y poder operar con sus
elementos.
Se construyen mediante agrupamiento de elementos
bsicos de almacenamiento.
Agrupamientos reciben un nombre que se puede usar
para formar otras estructuras.

crculo
C1

datos
centro

radio

color
11

12

Estructura de datos

Abstraccin de Datos - TAD


Un TDA es un tipo de dato definido por el programador que se
puede manipular de un modo similar a los tipos de datos
definidos por el lenguaje,

Para formar las agrupaciones existen varios mecanismos:


Arreglo: formado por una secuencia de celdas o estructuras
de tipos iguales. Cada celda de un arreglo se referencia
mediante un ndice.

Los TDA constituyen una forma de generalizacin


encapsulamiento de los aspectos ms importantes de
informacin que se debe manejar en la resolucin de
problema, sin considerar las cuestiones relativas a
implementacin.

Registro: formado por una coleccin de celdas, campos, de


tipos posiblemente distintos. Se pueden agrupar en arreglos.

13

Ejemplo:
int vector [10];

Un TDA es una generalizacin de los tipos de datos bsicos y


de las operaciones primitivas.

++

14

Abstraccin de Datos - TAD

Abstraccin de Datos - TAD

TAD
TAD == Representacin
Representacin
(estruct.
(estruct.de
dedatos)
datos)

y
la
un
la

declaracin del arreglo

Operaciones
Operaciones
(mtodos)
(mtodos)

vector
sumar
insertar
asignar
eliminar
15

buscar
16

Definici
Definicin

Abstraccin de Datos - TAD

Formalmente
FormalmenteelelTDA
TDAes
esuna
unatripleta
tripleta(D,
(D,F,
F,A)
A)con
conlos
los siguientes
siguientes
componentes:
componentes:

Un TAD engloba dos clases de abstracciones:

Abstracciones de datos.

Un
Unconjunto
conjuntode
dedominios,
dominios,DD

Abstracciones funcionales.

Un
Unconjunto
conjuntode
defunciones
funcionessobre
sobrelos
losdominios,
dominios,FF
Un
Un conjunto
conjunto de
de axiomas
axiomas oo propiedades
propiedades definidas
definidas aa partir
partir de
de
las
lasfunciones
funcionesyyelementos
elementosde
delos
losdominios,
dominios,AA

17

Cmo realizar la especificacin formal


un TDA?

Abstraccin de Datos - TAD


Abstracciones de datos

Definicin del tipo: Se debe indicar


el nombre tanto del TDA y del elemento base del mismo
y/o otros TDA involucrados en la definicin del TDA
los invariantes de representacin.

Aparecen al abstraer el significado de los diferentes tipos


de datos significativos que intervienen en el problema.
Permiten definir nuevos tipos de datos especificando sus
posibles valores y las operaciones que los manipulan.

Invariante de un TDA (Dominio de la estructura): Es una


proposicin que expresa el conjunto de valores vlidos del
TDA.
El invariante permite saber qu elementos pertenecen o no
al TDA (opcional).

Abstracciones funcionales
Surgen al plantearse de una manera abstracta las
operaciones significativas del problema.
Permiten dar a una aplicacin operaciones que no estn
definidas directamente en el lenguaje en el que se est
trabajando.

18

19

20

Tipos de especificaciones formales de un


TDA:

Cmo realizar la especificacin formal


un TDA?

1. Axiomtica: expresin de la forma de las operaciones,


indicando las reglas a seguir para realizar cada operacin.

La especificacin de un TDA es la descripcin del


comportamiento del mismo. Debe formalizarse.
Indica qu hace el TDA.
Especificar la sintaxis correspondiente a las operaciones
propias del TDA, o primitivas del mismo.

2. Semntica: expresin de la operatoria de las operaciones.


Se especifican las consecuencias de las operaciones para
el TDA.
Se da mediante el lenguaje natural, o mediante
especificacin algebraica.
Generalmente con notacin funcional, se indica sobre qu
conjunto actan las operaciones y qu dan como resultado.

21

22

Ejemplo: Especificacin Lgica del TDA


Cadena

Descripcin de las operaciones


Cada operacin relacionada con la estructura se describe con:
Nombre de la operacin.
Descripcin breve de su utilidad.
Datos de entrada a la operacin
Datos que genera como salida la operacin.
Pre-condicin: Condicin que deber cumplirse antes de
utilizar la operacin para que se realice sin problemas
Post-condicin:Condicin en que queda el TDA despus de
ejecutar la operacin.

23

Elementos:
todos los caracteres alfabticos (letras maysculas y
minsculas), caracteres numricos y caracteres especiales.

Estructura: hay una relacin lineal entre los caracteres.

Dominio: existen entre 0 y 80 caracteres en cada valor del


TDA CADENA.
El dominio sern todas aquellas secuencias de caracteres
que cumplan con las reglas.

24

Ejemplo: Especificacin Lgica del TDA


Cadena

Ejemplo: Especificacin Lgica del TDA


Cadena

Operaciones:
BORRA_INICIO
UTILIDAD: Sirve para eliminar el primer carcter de
una cadena.
ENTRADA: Cadena S sobre la que se desea eliminar
el primer carcter.
SALIDA: El carcter ms a la izquierda de la cadena
S y la cadena S modificada.
PRECONDICIN: La cantidad de caracteres es
mayor que cero.
POSTCONDICIN: La cadena S tiene todos los
caracteres, menos el primero.

Operaciones: (continuacin)
AGREGA_FINAL
UTILIDAD: Sirve para agregar un carcter al final
de una cadena.
ENTRADA: Cadena S y el carcter L, que se aadir
a la cadena S.
SALIDA: Cadena S modificada.
PRECONDICIN: La cantidad de caracteres en S es
menor que 80.
POSTCONDICIN: La cadena S tiene el carcter L
que queda al extremo derecho de la cadena.

25

26

Ejemplo: Especificacin Lgica del TDA


Cadena

Ejemplo: Especificacin Lgica del TDA


Cadena

Operaciones: (continuacin)
VACA
UTILIDAD: Sirve para verificar si una cadena esta
vaca o no.
ENTRADA: Cadena S que se verificar
SALIDA: VERDADERO si la cadena S no tiene
caracteres, FALSO en caso contrario.
PRECONDICIN : Ninguna
POSTCONDICIN: Ninguna (pues la cadena S no
se modifica).

27

Operaciones: (continuacin)
LLENA
UTILIDAD: Sirve para verificar si una cadena esta
llena o no.
ENTRADA: cadena S que ser verificada.
SALIDA: VERDADERO si la cadena S contiene ya
80 caracteres, FALSO en caso contrario.
PRECONDICIN : Ninguna
POSTCONDICIN: Ninguna (pues la cadena S no se
modifica).
28

Ejemplo: Especificacin Lgica del TDA


Cadena

TADs - Representacin

Operaciones: (continuacin)
INVIERTE
UTILIDAD: Sirve para invertir el orden de los
caracteres en una cadena.
ENTRADA: Cadena S a la que se desea invertir el
orden de los caracteres.
SALIDA: Cadena S modificada.
PRECONDICIN: Ninguna
POSTCONDICIN: La secuencia de caracteres en la
cadena S se invierte, de forma que el primer carcter

Es la forma concreta en que se representan los datos en un


determinado lenguaje de programacin.
Se debe ocultar la representacin de los elementos del tipo de
modo que slo se pueda actuar sobre ellos con las operaciones
proporcionadas.
Una vez definido se podrn declarar variables de ese tipo y
operar con ellas.

29

30

el TDA NumeroComplejo

TADs - Implementacin
Es la forma especfica en que se expresan las operaciones.
Aqu se considerar la estructura de datos ms conveniente.
Est dado por un grupo de instrucciones que sern ejecutadas
por el computador, y se escribe en un lenguaje de
programacin.
Cada implementacin corresponde a alguna especificacin.
Normalmente la implementacin del tipo se realiza en un
mdulo separado que ser enlazado al programa principal.
Los algoritmos ms la representacin da como resultado una
implementacin del TAD.

31

Definicin del tipo


Numero complejo: Conjunto de pares de elementos (a,b) de
tipo entero.
Operaciones: descripcin de cada una de elas
suma :
NumeroComplejo NumeroComplejo NumeroComplejo
suma((x, y), (u, v)) = (x + u, y + v)
producto :
NumeroComplejo NumeroComplejo NumeroComplejo
producto((x, y), ((u, v), = (xu yv, xv + yu)

32

TADs - Ejemplo

el TDA NumeroRacional
Definicin del tipo
Numero racional: Conjunto de pares de elementos (a,b) de
tipo entero, con b 0.
Operaciones:
CrearRacional: a, b = (a,b)
Divisin: (a,b) / (c,d) = (a*d , b*c)
Numerador: (a,b) = a
Denominador: (a,b) = b
ValorReal: (a,b) = a/b
Potencia: (a,b)^c = (a^c , b^c)

Editor de archivos secuenciales con las operaciones:

Crear un nuevo archivo,


Insertar,
Reemplazar,
Eliminar,
Avanzar y retroceder, actuando siempre sobre el registro
actual.

33

TADs - Ejemplo

34

TADs - Ejemplo

Operaciones:
Archivo_Nuevo (Archivo): Crea un archivo nuevo sin
introducir ningn registro (nmero de registros es 0).
Insertar (Archivo, Registro): Inserta un registro despus del
registro actual y el nuevo pasa a ser el actual.
Reemplazar (Archivo, Registro): Cambia el registro actual por
el nuevo.
Eliminar (Archivo): Borra el registro actual y una vez
eliminado el actual pasa a ser el siguiente.
Avanzar (Archivo): El registro siguiente pasa a ser el actual.
Retroceder (Archivo): El registro anterior pasa a ser el actual.
35

Implementacin de las operaciones:

Archivo_Nuevo (Archivo) {
Longitud = 0;
Reg_Actual = 0;
}

36

TADs - Ejemplo

TADs - Ejemplo

Insertar (Archivo, RegNuevo) {


for (j = Longitud; j <= RegActual; j--)
Archivo [j+1] = Archivo[j];
Archivo[RegActual+1] = RegNuevo;
Longitud ++;
RegActual ++;
}

Retroceder (Archivo) {
if RegActual != 0
RegActual --;
}

37

38

TADs - Ejemplo

TADs - Ejemplo

Eliminar (Archivo) {
if RegActual != 0
for( j =Actual; j <= Longitud-1; j++)
Archivo[j] = Archivo[j+1];
if RegActual >Longitud
RegActual --;
}

Avanzar (Archivo) {
if RegActual != Longitud
RegActual ++;
}

39

40

10

TADs - Ejemplo

TADs - Ejemplo

Operacin
Operacin
r1
r1==Crear_Racional
Crear_Racional (2,
(2, 3);
3);
r2
r2==Crear_Racional
Crear_Racional(5,
(5, 7);
7);
//// sses
esla
lasuma
suma de
der1
r1yyr2
r2
ss==Crear_Racional
Crear_Racional (( Numerador(
Numerador( r1
r1 )) ** Denominador
Denominador (( r2
r2 ))
++Numerador
Numerador((r2
r2))**Denominador
Denominador(( r1
r1 ),),
Denominador
Denominador((r1
r1 ))**Denominador
Denominador (( r2
r2 )) ););
printf(
printf(%d
%d // %d
%d,,Numerador
Numerador((ss),),Denominador
Denominador(( ss))))

Reemplazar (Archivo,RegNuevo) {
if RegActual != 0
Archivo[RegActual] = RegNuevo;
}

41

42

Implementaci
Implementacin

ESPECIFICACIN

#define
#defineMAX
MAX100
100
typedef
typedefstruct
structRacional
Racional{{
int
intnum,
num,den;
den;
};
};
Racional
Racionalinfo[MAX];
info[MAX];//// arreglo
arreglopara
paraalmacenar
almacenarlos
losracionales
racionales
int
//// para
intultimo
ultimo==-1;
-1;
paracontrolar
controlareleltamao
tamaodel
delarreglo
arreglo

Racional
RacionalCrear_Racional
Crear_Racional(Entero
(Enteron,d)
n,d){{
Necesita:
dos
Necesita:
dosvalores
valoresenteros,
enteros,nnyyd.
d.
Produce:
elelnmero
Produce:
nmeroracional
racionalnn//d.
d.
Error:
si
d
es
cero.
Error:
si d es cero.
}}
Entero
EnteroNumerador
Numerador(Racional
(Racionalrr)) {{
Necesita:
un
Necesita:
unracional
racionalr.r.
Produce:
elelnumerador
Produce:
numeradorde
der.r.
}}

Un racional

Entero
EnteroDenominador
Denominador(Racional
(Racionalrr)) {{
Necesita:
un
Necesita:
unracional
racionalr.r.
Produce:
eleldenominador
Produce:
denominadorde
der.r.
}}

info

43

num

17

den

ltimo

MAX

44

11

Implementaci
Implementacin

Implementaci
Implementacin
int
intCrear_Racional
Crear_Racional(int
(intn,
n,int
intd,d,int
inti)i){{
ifif(d
(d==
==0)
0){{
printf("\n
printf("\nError:Division
Error:Divisionpor
porcero");
cero");
getch();
getch();
exit(0);
exit(0);
}}
else
else{{
info[i].num
info[i].num==n;
n;
info[i].den
info[i].den==d;
d;
ultimo++;
ultimo++;
}}
return
returnultimo;
ultimo;
}}

int
intNumerador
Numerador(int
(intr)r){{
return
returninfo[r].num;
info[r].num;
}}

int
intDenominador
Denominador(int
(intr)r){{
return
returninfo[r].den;
info[r].den;
}}

45

Implementaci
Implementacin

46

Implementaci
Implementacin

void
voidImprime_Racional(void)
Imprime_Racional(void){{
int
intnum;
num;
printf("\nIndique
printf("\nIndiquelalaposicion
posiciondel
delracional
racionalque
quequiere
quierever:
ver:");
");
scanf("%d",
scanf("%d",&num);
&num);
if(
if(num
num>=
>=ultimo)
ultimo)
printf(\n
printf(\nError,
Error,fuera
fuerade
derango);
rango);
else
else
printf(
printf("\nRacional
"\nRacionalingresado
ingresadoes
es::%d/%d
%d/%d en
enlalaposicion
posicion%d",
%d",
Numerador(num),
Numerador(num),Denominador(num),
Denominador(num),num);
num);getch();
getch();
}}
47

#include
#include<stdio.h>
<stdio.h>
#include
#include<stdlib.h>
<stdlib.h>
#include
#include<conio.h>
<conio.h>
#define
#defineMAX
MAX100
100
typedef
typedefstruct
structRacional
Racional{{
int
intnum,
num,den;
den;
};
};
Racional
Racionalinfo[MAX];
info[MAX]; //// arreglo
arreglodonde
dondese
sealmacenaran
almacenaranlos
los
////numeros
numerosracionales
racionales
int
intultimo
ultimo==-1;
-1;
48

12

Implementaci
Implementacin
int
intmain()
main(){{
int
intnume,
nume,deno,
deno,pos,
pos,i,i,n;
n;
printf("\n
printf("\nCuantos
Cuantosdatos?
datos?");
"); scanf("%d",&n);
scanf("%d",&n);
ifif((nn>=
>=ultimo)
ultimo){{
printf(\n
printf(\nError,
Error,fuera
fuerade
derango);
rango);
return
return1;
1;
}}
else
else
for(i
for(i==0;
0;ii<<n;
n;i++)
i++){{
printf("\nNumerador:
printf("\nNumerador:");
"); scanf("%d",
scanf("%d",&nume);
&nume);
printf("\nDenominador:
printf("\nDenominador:");
"); scanf("%d",
scanf("%d",&deno);
&deno);
pos
pos==Crear_Racional(nume,
Crear_Racional(nume,deno,
deno,i);
i);
}}
Imprime_Racional();
Imprime_Racional();
return
return0;
0;
}}

49

13

S-ar putea să vă placă și