Está en la página 1de 66

TEMA1.

TIPOSABSTRACTOSDEDATOS

ProgramacinII1GradoEI

ndice
1. Introduccinalaresolucindeproblemas 2. Conceptogeneraldeabstraccin 3. Tiposabstractosdedatos
1. Conceptosyterminologa 2. ClasificacindeTADs

4. EspecificacindeTADs
1. Especificacionesinformales 2. Especificacionesformales

5. TcnicasdeimplementacindeTADs
1. 2. 3. 4. Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

ProgramacinII1GradoEI

ndice
1. Introduccinalaresolucindeproblemas 2. Conceptogeneraldeabstraccin 3. Tiposabstractosdedatos
1. Conceptosyterminologa 2. ClasificacindeTADs

4. EspecificacindeTADs
1. Especificacionesinformales 2. Especificacionesformales

5. TcnicasdeimplementacindeTADs
1. 2. 3. 4. Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

ProgramacinII1GradoEI

1.Introduccinalaresolucindeproblemas

Resolucindeunproblema
Descripcin Desarrollodelprogramaqueloresuelva

Pasosadar:
1. 2. 3. 4. 5. Especificacinyanlisisdelproblema. Diseodesolucinconceptualoalgoritmo. Implementacinodesarrollodedichasolucin. Validacin. Mantenimiento.

ProgramacinII1GradoEI

1.Introduccinalaresolucindeproblemas
FASEDERESOLUCINDEL PROBLEMA FASEDEIMPLEMENTACIN

Anlisis Solucingeneral(ALGORITMO) Prueba

SolucinEspecfica (PROGRAMA) Prueba Uso

ProgramacinII1GradoEI

1.Introduccinalaresolucindeproblemas
Caractersticasalgoritmos
Preciso Definido Finito Independientedellenguajedeprogramacin Contemplartodaslasposibilidades Fcildeleereimplementar

ProgramacinII1GradoEI

1.Introduccinalaresolucindeproblemas
Resolucin concreta de un problema=> Estudio de la informacinamanejar
Determinarlamejorformadealmacenamiento Operacionesarealizar

Entidadfundamental=TAD

ProgramacinII1GradoEI

1.Introduccinalaresolucindeproblemas
Herramientas disponibles para disear la solucin ms apropiadaaunproblema:
Diseodescendente
descomposicindelproblemaenotrosmssencillos

Abstraccinprocedimental
Indica el propsito del proceso de forma independiente a su implementacin.Complementariaconlamodularidad.

Modularidad
Resolucin independiente de subproblemas resultantes de Diseo Descendente.

Abstraccindedatos
Conjunto de valores que pueden tomar los datos + Operaciones que se puedenrealizarsobreellos Vistaspblicaodeaccesoalmdulo(usuariofinal)yprivadau oculta.
ProgramacinII1GradoEI

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

2.Conceptogeneraldeabstraccin
Abstraccin
Simplificacindeunobjetoounprocesodelarealidad, resaltandosuscaractersticasmsimportantes.

Abstraccinenprogramacin
Abstraccindedatos
Facilitanladefinicindenuevostiposdedatos,especificando: posibles valores+operaciones. Accesoasusvalores:usandolasoperacionesdefinidasendichoTAD,sin preocuparnosdecmosonrepresentados ytratadosporelordenador.

Abstraccinprocedimentalofuncional
loimportanteesquhacensinpreocuparnosdecmolohacennienqu tiempo

ProgramacinII1GradoEI

10

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

11

3.1.ConceptoyterminologadeTADs
Tipodedatos=>coleccindevalores+operaciones
Bsicos:Enteros,reales,booleanos,caracteres. Definidosporelprogramador:Enumerados,subrango Opacos
Representacininvisiblealprogramador Operacionespredefinidas

Tiposestructurados=>genericidad
Riesgodecrearvaloressinsemntica (ej:racional,fecha)

TiposAbstractosdeDatos(TADs)=>coleccindevalores+ operaciones
TiposdeDatoscreadosporelprogramador Independientesdelarepresentacin Opacos
ProgramacinII1GradoEI 12

3.1.ConceptoyterminologadeTADs
Tiposabstractosdedatos
EllenguajedeprogramacintrataalosTADs deigualformaque asuspropiostiposdedatos,esdecir,comotiposopacos:
Privacidaddelarepresentacin Proteccin

Paraqueestoseaposible,laimplementacindeberrealizarse enunmbitodedeclaracininaccesiblealrestodelos programas. Elconjuntodeoperacioneshadepermitirgenerarcualquier valordeltipo,yaquelosusuariosnotienenotromodode crearlos.

ProgramacinII1GradoEI

13

3.1.ConceptoyterminologadeTADs
Tiposabstractosdedatos Existendospiezasdedocumentacinbiendiferenciadas:
EspecificacindelTAD(interfaz)
EslonicoqueconoceelusuariodelTAD Consisteenelnombredeltipo ylaespecificacindelasoperaciones Tienepartesintctica(nombreoperacinytipos)ypartesemntica (significado,informaloformal)

ImplementacindelTAD
ConocidasloporelprogramadordelTAD Consisteenlarepresentacindeltipopormediodeotrostiposyenla realizacin delasoperaciones Serealizaenunlenguajedeprogramacinconcreto

ProgramacinII1GradoEI

14

3.1.ConceptoyterminologadeTADs
Tiposabstractosdedatos UnTADrepresentaunaabstraccin:
Sedestacanlosdetallesdelcomportamientoobservabledel tipo:
Pocosdetalles Estables

Seocultanlosdetallesdelaimplementacin:
Muchosdetalles Propensosacambios

ProgramacinII1GradoEI

15

3.Tiposabstractosdedatos
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

16

3.2.ClasificacindeTADs
TipoAbstractosdeDatossimples:
Cambiansuvalorperonosuestructura:
Espaciodealmacenamientoconstante

Enteros,reales,booleanos,carcter,enumerado,subrango,

TiposAbstractosdeDatoscontenedores:
Cambiansuvaloryestructura:
Coleccionesdeelementosdenmerovariable Espaciodealmacenamientovariable

Listas,colas,pilas,rboles,grafos,

ProgramacinII1GradoEI

17

3.2.ClasificacindeTADs
TipoAbstractosdeDatosinmutables:
Suscasosnopuedenmodificarse:
Noexistenoperacionesdemodificacin

Representacininmutableomutable EjemploTADs inmutableconrepresentacinmutable


racionaly2/4 TADpolinomio:2xyx+x

TiposAbstractosdeDatosmutables:
Suscasospuedenmodificarse:
Existenoperacionesdemodificacin

Representacinmutable

ProgramacinII1GradoEI

18

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

19

4.EspecificacindeTADs

ProgramacinII1GradoEI

20

4.EspecificacindeTADs
Especificacionesinformales:
Lenguajenatural.
Pocoprecisas,nosonbreves. Ambigedad Sencillasdeescribir,leeryentender

Especificacionesformales:
Lenguajealgebraico
Precisasybreves Verificacinformal Complejasdeescribir,leeryentender

ProgramacinII1GradoEI

21

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

22

4.1.Especificacionesinformales
Cabecera: Nombredelasoperaciones. Descripcin: Sedescribedeformageneralenquconsistela abstraccin,sindecirnadaacercadelaimplementacin.
LoscasosdelTADpuedenescribirseentrminosdeotrostiposparalosqueseespera queellectordelaespecificacinestmsfamiliarizado. Sepuedenutilizargrficosyabstraccionesmatemticas. SepuedeincluirenladescripcinsielTADesmutableoinmutable.

Especificacindelasoperaciones: Modelo: nombre operacin (entrada) devuelve (salida)


requerimientos: Muestralasrestriccionesdeuso. modifica: Identificalasentradasquevanasermodificadas. efecto: Defineelcomportamiento

ProgramacinII1GradoEI

23

4.1.Especificacionesinformales
Enlaespecificacindelasoperaciones,observamoslossiguientes componentes: Cabecera: Eslainformacinsintctica
Nombreoperacinynmero,ordenytiposentradasysalidas Debendarsenombresparaentradasypuedendarseparasalidas

Cuerpo: Eslainformacinsemntica.
Requerimientos: Restringendominiodeprocedimiento/funcin
Introducirrequerimientos=>Abstraccinoperacionalparcial Abstraccintotal=>sepuedenomitirlosrequerimientos Quienuselaabstraccinesresponsabledecumplirlosrequerimientos. Requerimientoimplcito:Lasentradashansidocorrectamenteconstruidas

Modifica: Indicaargumentosdeentradaquecambiandevalor. Efecto: Indicaelefectoqueseproducealejecutarlaoperacin


Definequsalidassonproducidasytambinqumodificacionessehacenenlas entradasdelaclusulamodifica. Seasumequesesatisfacenlosrequerimientos

ProgramacinII1GradoEI

24

4.1.Especificacionesinformales
EspecificacininformaldelTADRacional racional=tipodedatosescrea, num, den, suma, resta, multiplica, divide, simplifica DESCRIPCIN:
LosvaloresdelTADracional sonnmerosracionales ElTADracional esinmutable(=>noincluimosoperacionesdemodificacinde
loscasosdelTAD)

OPERACIONES: crea(a,b:entero) devuelve (racional)


requerimientos:b0 efecto:devuelveunnmeroracionalcuyonumeradoresa ycuyo denominadoresb.
ProgramacinII1GradoEI 25

4.1.Especificacionesinformales
num(a:racional) devuelve (entero)
efecto:devuelveelnumeradordelnmeroracionala.

den(a:racional) devuelve (entero)


efecto:devuelveeldenominadordelnmeroracionala.

suma(a,b:racional) devuelve (racional)


efecto:devuelveunnmeroracionalqueeslasumadelos nmerosracionalesa yb.

resta(a,b:racional) devuelve (racional)


efecto:devuelveunnmeroracionalqueeslarestadelos nmerosracionalesa yb.

ProgramacinII1GradoEI

26

4.1.Especificacionesinformales
multiplica(a,b:racional) devuelve (racional)
efecto:devuelveunnmeroracionalqueeslamultiplicacinde losnmerosracionalesa yb.

divide(a,b:racional) devuelve (racional)


requerimientos:num(b)0 efecto:devuelveunnmeroracionalqueesladivisindelos nmerosracionalesa yb.

simplifica(a:racional) devuelve (racional)


efecto:devuelveunnmeroracionalqueeslasimplificacindel nmeroracionala.

ProgramacinII1GradoEI

27

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

28

4.2.Especificacionesformales
Tipo:NombredelTAD Sintaxis:Formadelasoperaciones
Asumimosunesquemafuncional:
nombre funcin (tipo argumentos) tipo resultado

Semntica:Comportamientodelasoperaciones
Conjuntodereglasdetipoalgebraico:
nombre funcin (valores particulares) expresin del resultado

ProgramacinII1GradoEI

29

4.2.Especificacionesformales
Debemostenerencuentalossiguientesaspectos: Nosedefinenreglassemnticasparaciertasfunciones. Laexpresindelresultadopuedeserrecursiva
ContienereferenciasalamismafuncinoaotrasdelTAD Seconsideranaxiomas,porejemplo,algunasfuncionesconstructoras.

Lasexpresionespuedencontenerreferenciasaotrostiposque consideramospredefinidos:

Eltipobooleano,conlosvalorescierto yfalso Elvalorpredefinidoerror,paraindicarlosvaloresdelosargumentosenlos queciertasfuncionesparcialesnoestndefinidas.

CualquierimplementacindelTADdebercumplirlascondiciones impuestasporlasemntica. Lasreglashandeintentaraplicarseenelordenindicadoparala verificacinformaldeprogramas.

ProgramacinII1GradoEI

30

4.2.Especificacionesformales
Parafacilitarlaescrituradelasexpresionesenlapartede semntica,sepermiteemplearexpresionescondicionales,que adoptanlaforma: si condicinvalor_si_cierto|valor_si_falso Lacondicinserunaexpresinquetomaunvalorbooleano.Se consideracomopredefinidalacomparacindeigualdadentre valoresdelmismotipo,escritacomo: valor1=valor2 OtraampliacindelanotacinespermitirladefinicindeTADs genricos:
TADs queseexpresanenbaseaotrouotrostipossinespecificar exactamenteculesson

ProgramacinII1GradoEI

31

4.2.Especificacionesformales
EspecificacinformaldelTADBolsa Tipo: bolsa(elemento) Sintaxis: *bolsavacia bolsa *poner(bolsa,elemento) bolsa esvacia(bolsa) booleano cuantos(bolsa,elemento) natural Semntica: bbolsa, e,felemento: esvacia(bolsavacia) cierto esvacia(poner(b,e)) falso cuantos(bolsavacia,e) cero cuantos(poner(b,f),e) si f=e sucesor(cuantos(b,e))| cuantos(b,e)
ProgramacinII1GradoEI 32

4.2.Especificacionesformales
LadefinicindelTADBolsaseapoyaenlostipospredefinidos:
booleano ynatural

queasumimossehandefinidoformalmenteconconstructores:
cierto,falso,cero ysucesor.

LosconstructoresdeloscasosdeltipoBolsason:
bolsavacia yponer

Lasfuncionesintroducidassontodasellastotales,esdecir,estn definidasparatodoslosvaloresdesusargumentos. Cuandolasfuncionesaespecificarsonparcialessedebernincluir reglassemnticasqueindiquenqueparaciertosvaloresdelos argumentoslafuncintomarelvalorpredefinidoerror:


Porejemplo,siqueremosincluirlafuncin:predecesor(natural) natural enladefinicindeltiponatural,habr queaadir,entreotras, laregla:predecesor(cero)error

ProgramacinII1GradoEI

33

4.EspecificacindeTADs Aspectosrelativosalarealizacinyusodeespecificaciones engeneral: Tratamientodeerrores:


Aadiralaslistasdeargumentosunparmetrodeerror Manejadordeexcepciones

Independenciadelaimplementacin:
Lenguajedeespecificacin Documentacinparaelusuario

Operacionesdedestruccin
Necesariasenalgunoslenguajesdeprogramacin

ProgramacinII1GradoEI

34

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

35

5.TcnicasdeimplementacindeTADs Tiposdeimplementaciones:
Estticas
Asignacindememoriaentiempodecompilacin

Dinmicas
Asignacindememoriaentiempodeejecucin

Tiposderepresentaciones:
Contiguas
Loselementossealmacenanendireccionescontiguas

Enlazadas
Loselementossealmacenanendireccionesenlazadasentresmediante punteros

ProgramacinII1GradoEI

36

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

37

5.1.Modelolgicodememoria

ProgramacinII1GradoEI

38

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

39

5.2.Implementacionesestticasydinmicas Implementacionesestticas:
Asignacindememoriaentiempodecompilacin

Implementacionesdinmicas:
Asignacindememoriaentiempodeejecucin Lasimplementacionesdinmicassonmsflexibles:
Seadaptanmejoralasnecesidadesreales

Paraqueuntipodedatosseaopaco enC:
Debeserdeclaradocomopunteroavoid enelmdulode definicin(fichero.h) Debeserdeclaradocomopunteroaltipoapropiadoenel mdulodeimplementacin(fichero.c)
ProgramacinII1GradoEI

40

5.2.1.Asignacindinmicadememoria
Variablesdinmicas:
Variablescuyoespaciodealmacenamientorequeridoseasignaentiempode ejecucin Notienennombre:seaccedeaellaspormediodevariablespuntero Podemoscrearvariablesdinmicasasignndolesmemoria:
EnC,instruccinmalloc Importarlalibrera<stdlib.h>

Podemosdestruirvariablesdinmicasliberandomemoria:
EnC,instruccinfree Importarlalibrera<stdlib.h>

Sealojanenelsegmentomontn(heap)

Variablespuntero:
Apuntanalasvariablesdinmicas Seutilizanparapoderreferenciarlasvariablesdinmicas

ProgramacinII1GradoEI

41

5.2.1.Asignacindinmicadememoria Declaracindelavariablep : typedef int tipo; typedef tipo * puntero; puntero p; tipo x; Asignacindememoriaalavariablep : p = (puntero) malloc (sizeof(tipo));

ProgramacinII1GradoEI

42

5.2.1.Asignacindinmicadememoria Referenciaap paraasignarleunvalor: *p=5;

Referenciaap paraobtenersuvalor: x=*p; printf(%d\n,x);

ProgramacinII1GradoEI

43

5.2.1.Asignacindinmicadememoria Liberarlamemoriadep : free(p); Variablebasura:(esunerror!!) p = (puntero) malloc (sizeof(tipo)); q = (puntero) malloc (sizeof(tipo)); q=p;

ProgramacinII1GradoEI

44

5.2.1.Asignacindinmicadememoria
Variablesdetipopuntero:
Ubicacin:
Segmentodedatos (sisonglobales) Segmentodepila (sisonlocales) Segmentomontn (sisondinmicas) Sumbitoyextensindependeportantodeestacircunstancia

Puedenserutilizadaseninstrucciones:
malloc, free, etc. Puedenserasignadasaotrasvariablespunterodelmismotipo SelespuedeasignarladireccinconstanteNULL Puedenpasarsecomoparmetrosdeunafuncin PuedensercomparadasconotrasvariablesdetipopunterooconNULL mediante losoperadoresrelacionales= y<> Puedenusarseparaaccederalasvariablesdinmicas

ProgramacinII1GradoEI

45

5.2.1.Asignacindinmicadememoria Variablesdinmicas:
Secreanconinstrucciones:
malloc

Sedestruyenconinstrucciones:
free

Seubicanenelsegmentomontn:
Sumbito estodoelprograma Suextensin esdesdeelmomentoenquesecreanhastaelmomentoen quesedestruyen

Sereferencian mediantevariablespuntero Suusoestlimitadoporlasrestriccionesqueimponeellenguaje parasutipodedatos

ProgramacinII1GradoEI

46

5.3.Representacionescontiguasyenlazadas
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

47

5.3.Representacionescontiguasyenlazadas EnlarepresentacindeTADs formadosporcoleccionesde elementos,nosencontramoslassiguientessituaciones: 1. LacantidaddeelementosdeloscasosdelTADesfija y conocidaapriori (entiempodecompilacin) 2. LacantidaddeelementosdeloscasosdelTADesfija, peroseconoceentiempodeejecucin 3. LacantidaddeelementosdeloscasosdelTADes variable entiempodeejecucin

ProgramacinII1GradoEI

48

5.3.Representacionescontiguasyenlazadas
1. Lacantidadn deelementosdeloscasosdelTADesfijayconocidaapriori(en tiempodecompilacin)

DECLARACIN: typedef tipoelem estructura [n]; estructura p;

ACCESO: x=p[i];

ProgramacinII1GradoEI

49

5.3.Representacionescontiguasyenlazadas
2. La cantidad n de elementos de los casos del TAD es fija, pero se conoce en tiempo de ejecucin DECLARACIN:
typedef tipoelem * estructura; estructura p;

CREACIN:
p= (estructura) malloc (n*sizeof(tipoelem) );

DESTRUCCIN:
free(p);

ACCESO:
for (i=0; i < n ; i++) { x= *(p+i); /* o x = p[i]; */ ... }

ProgramacinII1GradoEI

50

5.3.Representacionescontiguasyenlazadas
3. LacantidaddeelementosdeloscasosdelTADesvariableen tiempodeejecucin Alternativa1 DECLARACIN:
typedef struct datos { tipoelem elementos[max]; short longitud; } sdatos; typedef sdatos * estructura; estructura p;

CREACIN: p = (estructura) malloc(sizeof(sdatos)); DESTRUCCIN:free(p); ACCESO:x:=p->elementos[i];


ProgramacinII1GradoEI 51

5.3.Representacionescontiguasyenlazadas
Alternativa2 DECLARACIN:
typedef struct datos { tipoelem * elementos; short longitud; } sdatos; typedef sdatos * estructura; estructura p; tipoelem x;

CREACIN:
p = (estructura) malloc(sizeof(sdatos)); p->elementos = (tipoelem *) malloc (n * sizeof(tipoelem));

DESTRUCCIN:
free(p->elementos); free(p);

ACCESO:
x= p->elementos[i]; a n-1*/ /* o bien, *(p->elementos + i), con i de 0

ProgramacinII1GradoEI

52

5.3.Representacionescontiguasyenlazadas Inconvenientesalternativas1y2:
Nosepuedenrepresentarcasosconnelementos>max yse desperdiciarmemoriasielndeelementosdeuncasoes <<max Insertar/eliminarelementos=>reubicacin

Representacincontigua:
Cuandosesabeelndeelementosentiempodecompilacin (situacin1) Cuandosesabeelndeelementosentiempodeejecucin (situacin2)y/oserequieranpocasoperacionesde insercin/eliminacin

ProgramacinII1GradoEI

53

5.3.Representacionescontiguasyenlazadas
Alternativa3(enlazada) DECLARACIN:

typedef struct celda { tipoelem elemento; struct celda * siguiente; } tipocelda ; typedef tipocelda * estructura; estructura p, aux;
CREACIN(porinicio):

DESTRUCCIN:
while (p!=NULL) { aux=p; p=p->siguiente; free(aux); }

p=NULL; for (i=1; i<=n ; i++) { aux = (estructura)malloc(sizeof(tipocelda)); aux->siguiente=p; p=aux; }

ACCESO:
aux=p; while (aux!=NULL) { x=aux->elemento; aux=aux->siguiente; }

ProgramacinII1GradoEI

54

ndice
Introduccinalaresolucindeproblemas Conceptogeneraldeabstraccin Tiposabstractosdedatos
Conceptosyterminologa ClasificacindeTADs Especificacionesinformales Especificacionesformales Modelolgicodememoria Implementacionesestticasydinmicas Representacionescontiguasyenlazadas Ejemplosdeimplementaciones

EspecificacindeTADs

TcnicasdeimplementacindeTADs

ProgramacinII1GradoEI

55

5.5.Ejemplosdeimplementaciones TADBolsa:
TADContenedor DefinicinMutable ImplementacinImperativa RepresentacinEnlazada

ProgramacinII1GradoEI

56

5.5.Ejemplosdeimplementaciones
ImplementacindelTADbolsa
#include "errores.h" typedef void * bolsa; typedef int tipoelem; void bolsavacia(bolsa *b); void poner (bolsa *b, tipoelem e, codigo_error * cod); int esvacia (bolsa b); short cuantos (bolsa b, tipoelem e); void dest (bolsa *b); /* un tipo opaco */

bolsa.h

ProgramacinII1GradoEI

57

5.5.Ejemplosdeimplementaciones
#include <stdlib.h> #include "errores.h" typedef int tipoelem; typedef struct celda { tipoelem elemento; struct celda * siguiente; } tipocelda ; typedef tipocelda * puntero; typedef puntero bolsa;

bolsa.c (i)

void bolsavacia(bolsa *b) { *b=NULL; }


ProgramacinII1GradoEI 58

5.5.Ejemplosdeimplementaciones
void poner (bolsa *b, tipoelem e, codigo_error * cod) { puntero aux; aux=(puntero) malloc(sizeof(tipocelda)); bolsa.c if (aux == NULL) (ii) *cod = meminsu; else { aux->elemento = e; /* equivale a *aux.elemento= e */ aux->siguiente = *b; /* equivale a ... */ *b = aux; *cod = exito; } } int esvacia (bolsa b) { if (b==NULL) return 1; else return 0; }
ProgramacinII1GradoEI 59

5.5.Ejemplosdeimplementaciones
short cuantos (bolsa b, tipoelem e) { short cont=0; puntero aux=b; while (aux!=NULL) { if (aux->elemento == e) cont++; aux = aux->siguiente; } return cont; } void dest (bolsa *b) { puntero aux=*b, aux2; while (aux!=NULL) { aux2 = aux; aux = aux->siguiente; free(aux2); *b = aux ; } }
ProgramacinII1GradoEI

bolsa.c (iii)

60

5.5.Ejemplosdeimplementaciones
errores.h

typedef enum{exito,meminsu} codigo_error; /* exito: Operacin con xito meminsu : Memoria insuficiente */

ProgramacinII1GradoEI

61

6.Ejercicios
1. ConstruyeelTADBooleano conlosconstructoresTrue y False ylasoperacionesNot,And yOr.
Anlisisdelproblema: SilosconstructoressonTrue yFalse,hayqueexpresartodaslasoperacionesenfuncinde ellos.
Especificacinformal: Tipo: Boolean Sintaxis: *True Boolean *False Boolean Not(Boolean) Boolean And((Boolean, Boolean) Boolean Or(Boolean, Boolean) Boolean Semntica:eBoolean Not(True) False Not(False) True And(e,True) e And(e,False) False Or(e,True) True Or(e,False) e Especificacininformal: Cabecera: Booleano=tipo dedatosesNot,And,Or Descripcin:LosvaloresdelTADBooleano sonTrue oFalse. Operaciones:

Not(a: Boolean) devuelve(Boolean) Efecto:devuelveelnegativodelbooleano a And(a,b:Boolean) devuelve(Boolean) Efecto:devuelveTrue sia yb sonTrue yFalse en
otrocaso

Or(a,b:Boolean) devuelve(Boolean) Efecto:devuelveTrue sia ob sonTrue yFalse en


otrocaso

ProgramacinII1GradoEI

62

6.Ejercicios
2. ConstruyeelTADNatural conlosconstructoresCero ySucesor ylas operacionesEsCero,Igual,Suma,Antecesor yDiferencia.
Anlisisdelproblema: SilosconstructoressonCeroySucesorhayqueexpresartodaslasoperacionesenfuncindeellos. Usaremoserrorparaindicarlasexcepciones.

Especificacinformal: Tipo:Natural Sintaxis: *Cero Natural *Sucesor(Natural) Natural EsCero(Natural) Boolean Igual(Natural,Natural) Boolean Suma(Natural, Natural) Natural Antecesor(Natural)Natural Diferencia(Natural,Natural)Natural

Semntica:m,nNatural EsCero(Cero) True EsCero(Sucesor(n)) False Igual(Cero,n) EsCero(n) Igual(Sucesor(n),Cero) False Igual(Sucesor(n),Sucesor(m)) Igual(m,n) Suma(Cero,n) n Suma(Sucesor(m),n) Sucesor(Suma(m,n)) Antecesor(Cero) error Antecesor(Sucesor(n)) n Diferencia(n,0) n Diferencia(Cero,Sucesor(n))error Diferencia(Sucesor(m),Sucesor(n)) Diferencia(m,n) 63

ProgramacinII1GradoEI

6.Ejercicios
Especificacininformal: Cabecera:
Natural=tipodedatosesCero,EsCero,Sucesor,Igual,Suma,Antecesor, Diferencia Descripcin:LosvaloresdelTADNatural sonenterospositivosincluido0.

Operaciones:
Sucesor(a: Natural) devuelve(Natural) Efecto:devuelveelnmeronaturalquesigueenordenaa:a+1 EsCero(a:Natural) devuelve(Boolean) Efecto:devuelveTrue sia esceroyFalse enotrocaso Igual(a,b: Natural) devuelve(Boolean) Efecto:devuelveTrue sia yb sonigualesyFalse enotrocaso Suma(a,b: Natural) devuelve(Natural) Efecto:devuelveunnaturalresultadodesumara yb Antecesor(a: Natural) devuelve(Natural) Requerimientos:a>0pues0notieneantecesor Efecto:devuelveelnaturalqueprecedeenordenaa Diferencia(a,b: Natural) devuelve(Natural) Requerimientos:b>=a puessinoelresultadoseraunnmeronegativo Efecto:devuelveunnaturalresultadoderestara yb

ProgramacinII1GradoEI

64

3.ConstruyeelTADComplejo conlasoperacionesCrea, Conjugado,Suma,Producto,ParteReal y ParteImaginaria.


Elcuerpodelosnmeroscomplejosrespondealassiguientes definiciones:
1. Sedefinenmerocomplejoatodoparordenado(a,b) dondea yb sonnmerosreales(sesuelerepresentarcomoa+bi) 2. Dadoelnmerocomplejo(a,b),sedicequea essuparterealyb su parteimaginaria 3. Llamaremosconjugadodelnmerocomplejo(a,b) alnmero complejo(a,-b) 4. Sedefinelasumadecomplejoscomo (a1,b1)+(a2,b2)=(a1+a2,b1+b2) 5. Sedefineelproductodecomplejoscomo (a1,b1)*(a2,b2)=(a1*a2-b1*b2 , a1*b2+b1*a2)
ProgramacinII1GradoEI

65

4.ConstruyeelTADRacional segnlasespecificaciones descritasanteriormente

ProgramacinII1GradoEI

66