You are on page 1of 30

Unidad1 Algoritmos, Estructuras, ProgramasyTADs

Bibliografa:AlgoritmosyEstructurasdedatosdeAguilaryMartinez.Unidad1,2y8 Autor:IngRolandoSimonTitiosky.

TiposdeDatos
UnTipodeDatoesunconjuntode valoresyoperacionesasociadas
ProporcionadosporlosLenguajes(C,C++, Pascal,etc)paraclasificardiversasclasesde datos.Ayudanen: Prevencinydeteccindeerrores ComprensinyOrganizacindelasideas acercadelosdatos Identificacinydescripcindelaspropiedades nicasdeciertosdatos.
Ej:6+5+Aire:Error,sesumantiposdisimiles.

TiposdedatosPrimitivos
Sonlosmassimples,ATOMICOS Noseconstruyendesdeotros. Nosondescomponibles Ej:Entero,flotante,real,carcter,lgico. TipoEntero:
Valores:4,3,2,1,0,1,2,3,4 Operaciones:*,+,,/,++,.

Susformasderepresentacininternavarande SistemaaSistema.

TiposCompuestosyAgregados
LosTIPOSCOMPUESTOSsepueden descomponerenSubcampos.
Ej:NmerodeTelfono:CodPais,CodArea, NumeroLocal.

LosTIPOSAGREGADOSson coleccionesdedatosdelmismotipo.
Tiposagregadosbsicos:Arrays,Cadenasy registros.

LaNecesidaddelas EstructurasdeDatos
UnaEstructuradedatos esunaOrganizacin oAgregacindedatosCompuestosy Atmicos
Secreanentiempodediseo Sepuedenanidarentreellas. Requierenespacioenmemoriaparaalmacenarlas

Objetivo:resolverproblemaseficientemente.
Eficiente:resuelveelproblemadentrodelas restriccionesderecursos. Costo:cantidadderecursosquelasolucin consume.

Abstraccin
[Wulft]:LaAbstraccinesunatcnicaparatratarla complejidad:Permiterepresentarlascaractersticas

esencialesdeunobjetoreal,sinpreocuparsedesus restantescaractersticas.
EsEsencialdelfuncionamientonormaldelamentehumana.

UnaAbstraccin(ModeloMental)debesermassencillo queelsistemaalcualimita.
Elmapacomomodelodelacarretera:indicasutopografa, altura,distancias,etc,mientrasignoradetallesirrelevantes (flores,materialdelacarretera,etc.)

LaHistoriainiciaconlosProcedimientos,continacon losMdulos,pasaporelTADyterminaconlosObjetos.

Historiadela AbstraccindelSoftware
Lahistoriaevolucionadesdeunnivelmnimode

Abstraccin,construyendonuevas,apoyndosepara elloenlasAbstraccionesdenivelesanteriores.
EstasAbstracciones,listadasensecuencia,fueron:
InstruccinBinarias:LosProgramadoresmanipulaban directamenteinterruptoresdelComputador. Ensamblador:NemotcnicasqueeranAbstracciones diseadasparaqueelProgramadornotuvieraquerecordarlas largassecuenciasde1sy0sdelasinstrucciones MacroInstrucciones:AgrupacinLgicadeoperaciones. LenguajesdeProgramacindeAltoNivel:permitialos programadoresdistanciarsedelasArquitecturasespecficasde lamquinadondecorrerasusprogramas.
AparecieronlosProgramasdePropsitoGeneral. SentenciasdeControl.

AbstraccinenProgramacin
Loslenguajessonherramientaspara implementarmodelosabstractos .
LasAbstraccionespuedenser: AbstraccindeControl:DescribeelOrdenen queseejecutanlasSentenciasoProcedimientos.
LenguajedeControl:Sentencia,IteracinySeleccin AbstraccionesdeProcedimiento:Sebasaenla utilizacindefuncionessinsabercmoseimplementan.

AbstraccindeDatos:Permiteinventartiposde datosparamejorarlarepresentacindelproblema.
Redundaenprogramasmascortos,flexiblesylegibles. LosNuevosTipossellamanTADs

Historia:

ProcedimientosoFunciones
Conjuntodetareascomunesyrepetitivas, reunidasunasolaentidadparaserReutilizada. Seevitaduplicarcdigoporlanecesidadde correccinyverificacin. 1eraformadeOcultamientodelaInformacin (muyprecaria):
LosprogramadoresqueusanelProcedimiento(yno lohicieron)nosabencomoesthecho,sabencomo usarlo. Nohacebuenmanejodelasvariables:debanser globalesynosepodalimitarelaccesoaellasporlo quelosprogramadoresdebanconocerlas.

Historia:Mdulos
ConjuntodeFuncionesCoherentesaUna Abstraccin,compartendatosyfunciones. Constade2partes:
Interfaz:CompuestaporPRIMITIVASpblicas. Implementacin:PrivadaalMdulo.

2daformadeOcultalaInformacin:Encapsula
Mejorala1eraForma:sinosenecesitaalgndato, nosepermiteelacceso. C/MduloeslomsIndependienteposible,as Intentaevitarqueanteuncambioensu Implementacin,seafectensusInterfaces.

NoPermitenInstanciar:capacidaddehacer mltiplescopiasdelazonadedatos.

Modularidad
SubdividirunaAplicacinenpiezasms pequeasProduceProgramasModularesdemenor complejidadc/uqueelProgramaCompleto. [Booch]LaModularidadeslaPropiedaddeun

Sistemaquehasidodescompuestoenunconjunto deMduloscohesivosydbilmenteacoplados.
Acoplamiento:EntreMdulos Mdulon Mduloi Mduloj Cohesin: IntraMdulo

Idealmente:Mdulos DbilmenteAcopladosy AltamenteCohesivos.

Acoplamiento
EselGradodeInterdependenciaentremdulos.
Comolaestructurainternadeunmoduloafectaaotrodiferente.

Estegradosirveparaevaluarlacalidaddeldiseo Objetivo:MINIMIZARelAcoplamiento
FacilitarLasustitucindeunMduloporotro:Solounpequeo grupodemdulosseverafectadoporelcambio Facilitarelseguimientodeunerrorporelaislamientodelmdulo defectuoso.

Acoplamiento Por contenido De control Datos Sin Acoplamiento

Grado de Acoplamiento Grado de Mantenibilidad Alto (fuerte) Gamaintermedia Bajo (dbil) Bajo Gamaintermedia Alto

Cohesin
DescribelasInteraccionesdentrodeun Modulo.
EsunaextensindelconceptodeOcultamientodela informacin

UnMduloCohesivoejecutaunatareasencilla Segnrequierainteraccinconotraspartesdel mduloser:


CohesinDbil:agrupaoperacionesquerealizan funcionessimilaressinrelacinentreellas. CohesinFuerte:C/partedeunmduloesnecesario paralaejecucindeunafuncinnica.

ReglasdeModularizacin
AlconstruirMdulos,selasdeberespetar: 1. UnidadesModulares:ElLenguajedeprogramacin debesercapazdecrearlasymanipularlas.
Ej:EnC,lainclusin.hysu.c

2. InterfacesAdecuadas:PartedelMdulovisible desdeelexterior.
EsbuenopocasinterfaceshaciafuerayentreMdulos.

3. InterfacesExplicitas:Selasdebedeclararydescribir explcitamente,cualessernexportadasparasuusoy cualesserninternasprivadas.


Elcompiladorverificarelaccesoycompilarelcdigo.

4. Ocultamientodelainformacin:CadaMdulodebe representaralmenos,UnaAbstraccin.

TAD
Tipoabstractodedatodefinidoporun programador.Estacompuestode
UnaEstructuradeDatos Operacionesquemanipulanesasestructuras.

TienenInterfacesPblicas,perocuyas representacioneseimplementacionesson privadas. Ayudaalosprogramadoresarealizar Softwareconfiableyreutilizable.

TAD:Ventajas
EnGral.Mejora Laconceptualizacindelproblema LaRobustez:permitelacomprobacindetipos queevitarerroresentiempodeejecucin EltiempodeCompilacin:Engrandesproyectos deSWexistirnmdulosprecompilados. SeparalaImplementacindelaespecificacin: permitemodificarsinalterarlaespecificacin ElgradodeReutilizacindelSoftware LaSemnticadelTipo:agrupaoperaciones

PartesdeunTAD
Especificacin:DescribequehaceelTAD, independientedecmolohace.
Sintaxis:definelosformatosdelasoperacionesyel tipoderesultados,sunombre,susparmetros. Semntica:defineparacadaoperacincualessu posiblesalida.

Implementacin
Representacin:especificacomosealmacenael TADenmemoria
archivo.h :interfacesylostiposdedatoscreados.

Algoritmo:especificanlospasosdentrodecada operacindelTAD
archivo.c :implementalainterfazysusfunciones auxiliares.

TAD:Especificacin
DescribeelComportamientodelTAD ConstadeladefinicindelosDatosylas Operaciones. Puedetenerunenfoque
Informal:DescripcinenLenguajeNatural. Formal:conjuntodeaxiomasquedescribenla semnticaylasintaxis.

EjemplodeEspecificacinInformal
TADConjunto:coleccindeElementossinduplicados, encualquierorden.(ElementopuedeserunTADprevio obienuntipobase) Operaciones
ConjuntoVacio: Creaunconjuntovaco
Retorna1sinopudocrearlo.

Aadir(Conjunto,Elemento): AadeElementoaConjuntosi noexiste.


Retorna:Lacantidaddeelementosdelconjuntoo1sinopudo crearlo.

Pertenece(Conjunto,Elemento): informasielElemento pertenecealConjunto


Retorna1sipertenecey1sino.

Union(Conjunto,Conjunto):realizalaUninentrelosdos conjuntossindejarduplicados.
RetornaunpunteroaConjunto.

EspecificacindeTADenC: conjunto.h
typedefstructConjunto { TipoDato*cto/*PtroaunalistadeelementosTipoDatodelconjunto*/ intcardinal /*Cantidaddeelementosdelconjunto*/ intcapacidad/*Cantidadmaximadeelementosdelconjunto*/ } voidconjuntoVacio(Conjunto*c) intesVacio(Conjuntoc) voidaadir(Conjunto*c,TipoDatoelemento) voidretirar(Conjunto*c,TipoDatoelemento) intpertenece(Conjuntoc,TipoDatoelemento) intcardinal(Conjuntoc) ConjuntounionC(Conjuntoc1,Conjuntoc2)

ImplementacindelTAD:conjunto.c
#includeconjunto.h voidconjuntoVacio(Conjunto*c) { c>cardinal=0 c>capacidad=M c>cto=(TipoDato*)malloc(M*sizeof(TipoDato)) } intesVacio(Conjuntoc) { return(c.cardinal==0)} intpertenece(Conjuntoc,TipoDatoelemento) { intk,encontrado for(k=encontrado=0,k<c.cardinal&&!encontrado,k++) encontrado=iguales(c.cto[k],elemento) returnencontrado } voidaadir(Conjunto*c,TipoDatoelemento) { if(!pertenece(*c,elemento)).. }

AlgoritmosyProgramas
Algoritmo:conjuntodeinstruccionesordenadas,que resuelvenunproblemaespecifico.
Nosonnicos,porloquepuedentenerdiferenteEficiencia. SelosescribeenSeudocdigo. esunarepresentacinidentada,enunidiomabase.
Nopuedeserejecutadoporunacomputadora.

Unbuenalgoritmodebetenerlaspropiedadesde:
ExactitudyCorreccin. Especificarclaramentesusentradasyc/instruccinsinambigedad. Etapasbiendefinidasyfinitas Descripcinderesultadooefecto. Fcildeentender,codificarydepurar. Eficienteusodelcomputador.

Programas:EslarepresentacinconcretadeunAlgoritmo (sutraduccin)codificadoenunlenguajedeprogramacin.
DebeserVerificableyEficiente

Verificacin
Eslaevaluacindelasolucinysupotencial usocomoherramienta.
UnAlgoritmoesCorrecto:siseobtienela respuestaparalacualfuecreado.

EsunapruebaFormaldelaexactituddelos resultadosobtenidos: PruebadeEscritorio


1. ComienzaconlaHiptesisdequelas Precondicionessecumplenantesdeempezarla ejecucin. 2. TerminaconunaPostCondicinocondiciones quedebencumplirlaSalida.

Eficiencia
LaEficiencianosladaelAnlisisdeAlgoritmos:
DimensinTemporal:Medidadeltiempoempleado. DimensinEspacial:medidadelosrecursosinvertidos.

EncontrarAlgoritmoseficientespuededefinirsiExisteo nounaSolucinalProblema. AlAnlisisdeAlgoritmossecentraenelestudiodelos Bucles,delcualenltimainstancia,dependernlas instruccionesaserejecutadas.


NosepuederealizarunanlisisdelnmerodeInstrucciones puessondependientesdelastecnologas(RISK,CISC).

Eficiencia=F(n)
siendonlacantidaddeelementosaserprocesados

Eficiencia(OrdenesdeMagnitud)
BuclesLineales:
E=F(n)=n
i=0 Mientrasi<n Cdigo i++ FinM i=1 Mientrasi<n Cdigo i*=2 FinM

Bucleslogartmicos:avancei*=a
E=F(n)=Log 2 n E=F(n)=Log a n

BuclesAnidados:paraybuclesdeniteracionesc/u
y E=F(n)=n *n *..n =n 1 2 y

Recursividad:seinvocaKvecesasimismoconun loteinicialn
n E=F(n)=k

MedicindelaEficiencia
Laestimacindebeserindependientedela plataformaylaLenguajeconquesecodificar perodebereflejarsusdiferencias. UsamoselOrdendeMagnitud(Ogrande)de laEficienciadelTiempoydelosRecursos.
SelocomplementaconlaTasadecrecimientodel programaparaevaluarsucomportamientoFuturo.

CmocompararlaEficienciaRealde2 Algoritmos?
Programndolos,implementndolosymidiendopara elmismoLotedePrueba:eltiempodeejecuciny losrecursosutilizados.
Suelesercaro,yunavezrealizadonosuelesersencillo volveratrsycorregir

AnlisisdeRendimiento
MediantelacomplejidadenelTiempoyenel Espacio
ComplejidadenelTiempo:cantidaddetiempo necesarioparalaejecucin ComplejidadenelEspacio:cantidaddememoria necesariaparalaejecucin

TiempodeEjecucin:dependerdelprograma ydesuentrada(cargadetrabajo).
Eltiempomediosuelesermasrealista.Parausarlo todoslostiposdeentradassonequiprobables. ElTiempoMximodependedelaCargaMxima:y nosiempresepuedeestablecerconclaridadoes estadsticamentevariable

TiempodeEjecucin
EltiempototalparaunaFuncinsepuede determinarporeltiemporequeridopara cadainstruccin,multiplicadasporlas vecesqueseejecutan.
i=0 Mientrasi<n
i++

t1 t2
t3

FinM

t4

T(n)=t1+n*t2+n*t3+t4=n(t2+t3)+t1+t4 EficienciaF(n)=n

Complejidadespacial
Cantidaddememoriaparaalcanzarlasolucin.
Dependerdellenguajeelegido.

Enelejemplolasvariablesi,nvariables positivasyenteras.
EnlenguajeC,siendoChar,usa1bytesc/u
M=2bytes

EnLenguajePascal,usandoCharoInteger,usar 2bytescadaUno.
M=4bytes.

ElAlgoritmoimplementadoenLenguaje CtienemenorcomplejidadEspacial.

i=0 Mientrasi<n Cdigo i++ FinM

TrabajosPrcticosUnidad1
COMOMINIMO,REALIZAR: DelaBibliografa
DelCapitulo1:Ejercicios:1.1,1.2,1.3,1.4, 1.5,1.6,1.8,1.9,1.12,1.13,1.15 DelCapitulo2:Ejercicios:2.5,2.7,2.8 DelCapitulo8:
Ejercicios:8.1,8.4,8.5 Problemas:8.3

You might also like