ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... ·...

108
ALGORITMOS II INGENIERIA DE SISTEMAS FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

Transcript of ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... ·...

Page 1: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

ALGORITMOS II INGENIERIA DE SISTEMAS

FACULTAD DE CIENCIAS BÁSICAS E INGENIERÍA

Page 2: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

2 ALGORITMOS II INGENIERIA DE SISTEMAS

ElmódulodeestudiodelaasignaturaAlgoritmosIIespropiedaddelaCorporaciónUniversitariaRemington.Lasimágenesfuerontomadasdediferentesfuentesqueserelacionanenlosderechosdeautorylascitasenlabibliografía.Elcontenidodelmóduloestáprotegidoporlasleyesdederechosdeautorquerigenalpaís.

Estematerialtienefineseducativosynopuedeusarseconpropósitoseconómicosocomerciales.

AUTOR

JoséAntonioPoloIngenierodesistemasdelaUniversidaddeAntioquiaEspecialistaenfinanzasdelaCorporaciónUniversitariaRemington

y estudiante demaestría en educación de la universidad Cesun (TijuanaMéxico). Participación del tercer Congreso

ColombianodeComputación–3CCCdelauniversidadEAFITParticipacióndelprimersimposioenInteligenciaArtificial

de laCorporaciónUniversitariaRemingtonParticipacióndel IVCongreso InternacionaldeSoftwareLibreGNU/Linux,

UniversidaddeManizalesParticipacióndel5ºCongresoNacionaldeRedesyTelemática,RedesdeServiciosMóviles

Integrados,CentrodeConstruccióndeConocimientoEventoCCCDocentedecátedradelpolitécnicoJaimeIsazaCadavid

DocentedecátedradelTecnológicodeAntioquiaParticipacióndelproyectodelaarticulacióndelamediatécnicadel

TecnológicodeAntioquiaDocentedelaCorporaciónUniversitariaRemington.

[email protected]:elautorcertificó(demaneraverbaloescrita)Nohaberincurridoenfraudecientífico,plagiooviciosdeautoría;encasocontrarioeximiódetodaresponsabilidadalaCorporaciónUniversitariaRemington,ysedeclarócomoelúnicoresponsable.RESPONSABLES

JorgeMauricioSepúlvedaCastañoDecanodelaFacultaddeCienciasBásicaseIngenieríajsepulveda@uniremington.edu.coEduardoAlfredoCastilloBuilesVicerrectormodalidaddistanciayvirtualecastillo@uniremington.edu.coFranciscoJavierÁlvarezGó[email protected]

GRUPODEAPOYO

PersonaldelaUnidadCUR-VirtualEDICIÓNYMONTAJEPrimeraversión.Febrerode2011.Segundaversión.Marzode2012Terceraversión.noviembrede2015

DerechosReservados

EstaobraespublicadabajolalicenciaCreativeCommons.

Reconocimiento-NoComercial-CompartirIgual2.5Colombia.

Page 3: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

3 ALGORITMOS II INGENIERIA DE SISTEMAS

TABLA DE CONTENIDO Pág.

1 MAPADELAASIGNATURA..............................................................................................................................7

2 UNIDAD1ARREGLOSDEREGISTROSYARCHIVOS..........................................................................................8

2.1 RELACIÓNDECONCEPTOS......................................................................................................................9

2.2 TEMA1DEFINICIÓN..............................................................................................................................11

2.3 TEMA2OPERACIONESCONARREGLOSDEREGISTROS........................................................................14

2.3.1 EJERCICIOSDEENTRENAMIENTO..................................................................................................15

2.4 TEMA3TIPOSDEARCHIVOS.................................................................................................................16

2.4.1 ARCHIVOS......................................................................................................................................16

2.4.2 CLASIFICACIÓNDELOSARCHIVOSSEGÚNSUUSO.......................................................................17

2.4.3 CLASIFICACIÓNDELOSARCHIVOSSEGÚNLOSDATOSQUEALMACENAN...................................17

2.5 TEMA4OPERACIONESCONARCHIVOS................................................................................................18

2.5.1 OPERACIONESBÁSICASCONARCHIVOS.......................................................................................18

2.5.2 ARCHIVODETEXTO.......................................................................................................................20

2.5.3 EJERCICIODEAPRENDIZAJE...........................................................................................................20

2.5.4 EJERCICIODEAPRENDIZAJE...........................................................................................................21

2.5.5 EJERCICIOSDEENTRENAMIENTO..................................................................................................23

2.6 TEMA5EFICIENCIADEALGORITMOS...................................................................................................23

2.6.1 EVALUACIÓNDEALGORITMOS.....................................................................................................24

2.6.2 CONTADORDEFRECUENCIAS........................................................................................................25

2.6.3 EJERCICIOSDEENTRENAMIENTO..................................................................................................27

2.6.4 ORDENDEMAGNITUD..................................................................................................................29

Page 4: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

4 ALGORITMOS II INGENIERIA DE SISTEMAS

2.6.5 EJERCICIOSDEENTRENAMIENTO..................................................................................................38

3 UNIDAD2MANEJODINAMICODEMEMORIAYPUNTEROS.........................................................................40

3.1.1 RELACIÓNDECONCEPTOS............................................................................................................41

3.2 TEMA1PUNTEROS................................................................................................................................42

3.2.1 CLASENODOSIMPLE......................................................................................................................42

3.3 TEMA2LISTASSIMPLEMENTELIGADAS...............................................................................................47

3.3.1 CLASELISTASSIMPLEMENTELIGADA............................................................................................48

3.3.2 IMPLEMENTACIÓNDELOSMÉTODOSDELACLASELISTASIMPLEMENTELIGADA......................51

3.3.3 PROCESODEINSERCIÓNDEUNDATOENUNALISTASIMPLEMENTELIGADA.............................53

3.3.4 PROCESODEBORRADODEUNDATOENUNALISTASIMPLEMENTELIGADA...............................57

3.3.5 ORDENAMIENTODEDATOSENUNALISTASIMPLEMENTELIGADA.............................................61

3.3.6 Métodoanterior(x)........................................................................................................................62

3.3.7 CONSTRUCCIÓNDELISTASSIMPLEMENTELIGADAS.....................................................................63

3.3.8 DIFERENTESTIPOSDELISTASSIMPLEMENTELIGADASYSUSCARACTERÍSTICAS.........................64

3.4 TEMA3LISTADOBLEMENTELIGADAS..................................................................................................65

3.4.1 DEFINICIÓNDECARACTERÍSTICAS.................................................................................................66

3.4.2 PROPIEDADFUNDAMENTALDELASLISTASDOBLEMENTELIGADAS............................................70

3.4.3 EJERCICIOSDEENTRENAMIENTO..................................................................................................71

4 UNIDAD3MANEJODEHILERASDECARACTERES.........................................................................................72

4.1.1RELACIÓNDECONCEPTOS...................................................................................................................72

4.1 TEMA1DEFINICIÓN..............................................................................................................................73

4.2 TEMA2OPERACIONESCONHILERAS....................................................................................................73

4.2.1 ASIGNACIÓN..................................................................................................................................74

4.2.2 FUNCIÓNLONGITUD.....................................................................................................................74

Page 5: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

5 ALGORITMOS II INGENIERIA DE SISTEMAS

4.2.3 FUNCIÓNSUBHILERA.....................................................................................................................74

4.2.4 FUNCIÓNCONCATENAR................................................................................................................75

4.2.5 MÉTODOINSERTAR.......................................................................................................................75

4.2.6 MÉTODOBORRAR.........................................................................................................................75

4.2.7 MÉTODOREEMPLAZAR.................................................................................................................76

4.2.8 FUNCIÓNPOSICIÓN.......................................................................................................................76

4.3 TEMA3EJERCICIOSDEAPLICACIÓN......................................................................................................76

4.3.1 APLICACIÓNDELACLASEHILERA..................................................................................................77

4.3.2 Ejerciciosentrenamiento...............................................................................................................83

5 UNIDAD4PILASYCOLAS..............................................................................................................................84

5.1.1 RELACIÓNDECONCEPTOS............................................................................................................85

5.2 TEMA1DEFINICIÓN..............................................................................................................................86

5.3 TEMA2PILASCONVECTORESYLISTAS................................................................................................86

5.3.1 DEFINICIÓN....................................................................................................................................87

5.3.2 REPRESENTACIÓNDEPILASENUNVECTOR.................................................................................89

5.3.3 REPRESENTACIÓNDEPILASCOMOLISTASLIGADAS.....................................................................91

5.3.4 MANEJODEDOSPILASENUNVECTOR.........................................................................................93

5.4 TEMA3COLASCONVECTORESYLISTAS...............................................................................................96

5.4.1 DEFINICIÓN....................................................................................................................................96

5.4.2 REPRESENTACIÓNDECOLASENUNVECTOR,ENFORMANOCIRCULAR.....................................97

5.4.3 REPRESENTACIÓNDECOLASCIRCULARESENUNVECTOR.........................................................101

5.4.4 REPRESENTACIÓNDECOLASCOMOLISTASLIGADAS.................................................................103

6 PISTASDEAPRENDIZAJE..............................................................................................................................106

7 GLOSARIO....................................................................................................................................................107

Page 6: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

6 ALGORITMOS II INGENIERIA DE SISTEMAS

8 BIBLIOGRAFÍA..............................................................................................................................................108

Page 7: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

7 ALGORITMOS II INGENIERIA DE SISTEMAS

1 MAPA DE LA ASIGNATURA

Page 8: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

8 ALGORITMOS II INGENIERIA DE SISTEMAS

2 UNIDAD 1 ARREGLOS DE REGISTROS Y ARCHIVOS

Pascal-029-Arrayderegistros(Listaestática):Enlace

Page 9: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

9 ALGORITMOS II INGENIERIA DE SISTEMAS

2.1 RELACIÓN DE CONCEPTOS

Arreglosderegistros:Estructurasdealmacenamientodeinformaciónaniveldememoriainterna,yquepermiterealizardiferentesoperacionesaniveldebúsqueda,inserción,borradoentreotras.

Registro: Es una estructura de datos compuesta. Se puede decir que un registro es un conjunto de camposvariablesrelacionadosque,engeneral,puedeperteneceratiposdedatosdiferentes,llamadoscomponentesdeltiporegistro,dondetodaslascomponentespuedenmanipularsebajounsolonombredevariable.

Vectoresderegistro:Otraimportanciaquetienenlosarreglosderegistrosesquecadaunodesuselementosestáformadoporvarioscampospertenecientesadiferentestiposdedatos,adiferenciadelosotrostiposdearreglosenlosquesuselementossondeunsolotipo;aunquecabeanotarque,porejemplo,unvectorpuedeserdetiporegistró.

Archivos: Se definen como estructuras de almacenamiento a nivel externo, permitiendo realizar diferentesoperacionessobreellos.

Page 10: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

10 ALGORITMOS II INGENIERIA DE SISTEMAS

Archivospermanentes:Sonarchivosrígidos,yaquelainformaciónquealmacenancambiamuypoco.

Archivosmaestros: La información almacenada en esta clase de archivosmaneja el estadoo situación de losregistrosdeunadeterminadabasededatos,ysuactualizaciónoloscambiosdelosdatosdelosregistrossehacenperiódicamente.

Archivoshistóricos:Sonarchivosmaestrosqueyanoseutilizanycuyafunciónessolodeconsultaparaquienesdeseanobtenerinformaciónsobreelpasado.

Archivosdemovimiento:Sontemporalesysufunciónprincipalescaptarinformaciónparaactualizarlosarchivosmaestros.

Archivosdeprograma:Sonlosprogramasfuentequeseescribenenundeterminadolenguajedeprogramación,dondecadainstrucciónesunregistro.

Archivos de texto o ASCII (American Standard Code for Information Interchange): Estos almacenan cualquiercarácter del código ASCII: palabras, frases, párrafos, y se suelen crear y mantener mediante programas queprocesanoeditantexto.

Archivosbinarios:Estosarchivosalmacenaninformaciónenunlenguajedescifrablesoloporelcomputador.Lainformaciónquepuedanalmacenaresdiversa:colores,sonidos,imágenes,órdenesodatosdiscretos,llamadosarchivosdedatos.

Creacióndelarchivo:Permitedefinirunavariabledentrodelprogramaquerepresenteelarchivoquesequieremanipular.

Aperturadeunarchivo:Permiterelacionarunavariabletipoarchivoconelnombrequeelarchivotendráenelmediodealmacenamiento, llamadonombreexterno.Esteeselnombreconelcualseguardaelarchivoenelmediodealmacenamiento,ysuextensióndependedelaclasedeinformaciónquesevaaguardar.

Escrituraenelarchivo:Permitealmacenarlainformaciónienelarchivoqueseestámanipulando.

Lectura de un archivo: Permite extraer la información del archivo y almacenarla en memoria principal. Lainformaciónquesetransportaa lamemoriapuedesercualquiertipodevariableuobjetosalmacenadosenelarchivo.

Cierre del archivo: Permite proteger el área donde reside el archivo y actualiza el directorio del medio dealmacenamiento,reflejandoelnuevoestadodelarchivo.Adicionalmente,destruyelasconexionesfísicasylógicasqueseconstruyeroncuandoseabrióelarchivo.

Page 11: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

11 ALGORITMOS II INGENIERIA DE SISTEMAS

2.2 TEMA 1 DEFINICIÓN Se define los arreglos de registros como estructuras de almacenamiento de información a nivel dememoriainterna,yquepermiterealizardiferentesoperacionesaniveldebúsqueda, inserción,borradoentreotras.Losarchivos se definen como estructuras de almacenamiento a nivel externo, permitiendo realizar diferentesoperacionessobreellos

Unregistroesunaestructuradedatoscompuesta.Sepuededecirqueunregistroesunconjuntodecamposvariablesrelacionadosque,engeneral,puedeperteneceratiposdedatosdiferentes,llamadoscomponentesdeltiporegistro,dondetodaslascomponentespuedenmanipularsebajounsolonombredevariable.Porejemplo,sise tiene un registro de datos compuestos por los campos: cédula, nombre, deducción y salario, podemosrepresentarlodelasiguienteforma:

32506321 SANDRA FONEGRA 40000 630000

Comopuedenotarse,dentrodelregistrosolohaydatos(información);eselprogramaquiencolocanombresacadadatoparapoderlosalmacenarenlamemoriadelacomputadora.Silainformacióndelempleadosefueraatratarenformaindividualylosnombresdevariablesseleccionadosparacadacampofuera:cc,nom,deducysal;alejecutarlainstrucción:LEA:cc,nom,deduc,salOcurriráenmemorialosiguiente:

cc deduc 32506321 40000 sal nom 630000 SANDRA

FONEGRA

MEMORIA Lainformacióndelaempleadaestádispersaenlamemoria.Laideadeusarregistroesagrupartodalainformaciónenunamismaáreadememoriabajounsolonombre.Sisetomaladeterminacióndequeemp1esunavariabledetiporegistro,osea,almacenareneláreaasignadatodalainformacióndeunempleado,gráficamentesepuedemirardelasiguientemanera:

Page 12: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

12 ALGORITMOS II INGENIERIA DE SISTEMAS

MEMORIA

emp1

<Cédula>

<Nombre>

<Deducción>

<Salario>

Paraqueemp1seatomadacomounvariabletiporegistró,sedebedefinircomotal;esdecir,sedefinealavariablecomo registro y se definen los demás campos quehabrá en dicho registro. Para nuestro ejemplo, la variableregistróquedaríaasí:

1. CLASEEjemplo2. METODOPRINCIPAL()3. empleado(Registro):4. cc,nom(Alfanuméricos)5. deduc,sal(Reales)6. VARIABLES:emp1,emp2(Empleado)7. Ejemplo.Llenar(emp1)8. end(Método)9. end(Clase)

Enelanteriorejemplosehadefinidoundatodetiporegistrollamadoempleadoyademássedefineunavariablequeesdetipoempleado;estoquieredecirquecualquiervariablequeseadetipoempleadopuedealmacenarlosvaloresdelascomponentesdelregistro,esdecir,queenemp1sealmacenan:cc,nom,deducysal.Enlaestructuraanteriorsedefineaemp1yemp2comovariablestiporegistro,porlotanto,puedenalmacenartodoslosvaloresdeloscamposqueconformanaltipodedatoempleado,ysurepresentacióninternaseria:

emp1 emp2

<Cédula> <Cédula>

<Nombre> <Nombre>

<Deducción> <Deducción>

<Salario> <Salario>

MEMORIA Las variables tipo registro emp1 y emp2 son variables compuestas; para referenciar a cada una de suscomponenteshayqueclasificarlas,o sea,deciren formaexplícitaa cuálde las componentesdel registronosvamosareferir.Dichaclasificaciónsehaceasí:variable_tipo_regristro.componente.

Page 13: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

13 ALGORITMOS II INGENIERIA DE SISTEMAS

Veamosunmétododecómollenaríamoslainformacióndeunempleado,despuésdehaberdefinidolavariabledetiporegistroempleadoyalavariabledetipoempleado:1. PUBLICOESTATICOVOIDLlenar(Reg)2. IMPRIMA(“Ingreselacédula”)3. LEA(Reg.cc)4. IMPRIMA(“Ingreseelnombre”)5. LEA(Reg.Nom)6. IMPRIMA(“Ingreseladeducción”)7. LEA(Reg.Deduc)8. IMPRIMA(“Ingreseelsalario”)9. LEA(Reg.Sal)10. end(método)

Elparámetroemp1esunparámetroporreferencia.Enla instrucción3se leelacédulaquesealmacenaráenelregistro. Igualmenteenlas instrucciones5,7, y9dondesealmacenaráelnombre,deducciónysalariodelempleado,respectivamente. Despuésdeejecutarelmétodoanterioryllenarloconlosdatosqueteníamosanteriormente,nuestramemoriaestaríadelasiguienteforma:

emp1 emp2

32506321 <Cédula>

SANDRAFONEGRA

<Nombre>

40000 <Deducción>

630000 <Salario>

MEMORIA Sihaynecesidaddemover la informacióndeunavariable tipo registroaotra, sepuedehacercomponenteacomponente,omoviendotodalainformaciónalmismotiempo.Porejemplo:

emp2.cc=emp1.ccemp2.nom=emp1.nomemp2.deduc=emp1.deducemp2.sal=emp1.salLocualseríalomismoquetener:emp2=emp1.

Page 14: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

14 ALGORITMOS II INGENIERIA DE SISTEMAS

Un arreglo de registro es una estructura de datos de gran utilidad e importancia en la programación deaplicaciones,yaquemuchasvecesesdeseable,desdeelpuntodevistadelalógicadelprogramaenparticular,mantenerdisponibleenmemoriaprincipalunaseriederegistroconinformacióndelmismotipoparasuproceso;dichosregistrosnoestarándispersos;haránpartedeunarreglo,loquefacilitasumanejo.Unarregloderegistrosesmuyparecidoaunarchivodedatos,sediferencianenquelosarreglosderegistrosresidenenmemoriaprincipalylosarchivosenmemoriaauxiliar,porlotanto,estosúltimostienenexistenciapermanente.

2.3 TEMA 2 OPERACIONES CON ARREGLOS DE REGISTROS Los arreglos de registros permiten manejar información en memoria interna, lo cual permite realizar lasoperacionesde:búsquedaquepermiteverificarsiundatoseencuentraen laestructuradealmacenamiento,inserciónquepermiteingresarunnuevodatoenelarregloderegistro,borradoquepermiteborrarundatodelarregloderegistroentreotrasoperacionesquesepuedenrealizarconestasestructuras.

Otraimportanciaquetienenlosarreglosderegistrosesquecadaunodesuselementosestáformadoporvarioscampospertenecientes adiferentes tiposdedatos, a diferenciade losotros tiposde arreglos en losque suselementossondeunsolotipo;aunquecabeanotarque,porejemplo,unvectorpuedeserdetiporegistró.Veamosunejemploendondealmacenamoslosdatosdeunregistroenunvectoryluegoimprimimosdichovector:

1. CLASERegVector2. METODOPRINCIPAL()3. R(REGISTRO):4. cc,nom(Alfanuméricos)5. deduc,sal(Reales)6. VARIABLES:vec[],emp(R)7. i,n(Entero)8. IMPRIMA(Ingreseelnúmeroderegistros”)9. LEA(n)10. para(i=1,n,1)11. RegVector.Llenar(emp)12. vec[i]=emp13. endpara14. para(i=1,n,1)15. IMPRIMA(vec[i].cc)16. IMPRIMA(vec[i].nom)17. IMPRIMA(vec[i].deduc)18. IMPRIMA(vec[i].sal)19. endpara20. end(Método)21. end(Clase) En la instrucción3definimosaRde tipo registro con los campos: cc, nom,deduc y sal; y en la instrucción6definimosnuestrasvariables,endondeutilizamos2variablesdetipoR:vec[]yemp.

Page 15: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

15 ALGORITMOS II INGENIERIA DE SISTEMAS

Enlainstrucción9leemosan,paraconocerlacantidadderegistrosquealmacenaremosy,enlainstrucción10,definimosnuestrociclodesde1hastanparallenarelvectorconlosregistros.Enlainstrucción11llamamosalmétodoLlenarparaleerlosdatosqueguardaremosenelvector.Enviamoscomoparámetroalavariableemp.Enlainstrucción12llevamosalvectorenposicióniloqueseguardóenemp.

EN LAS INSTRUCCIONES 15 A 18 IMPRIMIMOS EL CONTENIDO DE LOS VECTORES, ES DECIR, IMPRIMIMOS LOS REGISTROS QUE HEMOS ALMACENADO.

2.3.1 EJERCICIOS DE ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Puedescrearunaestructuratipovectorderegistro,conloscamposcorrespondientesalenunciadoenelejercicio,opuedesuponerquelaestructurayaestácreadaypuedestrabajarsobreella,realizandolasoperacionesquetepidecadaunodelosejerciciosmencionados.

1. UnacompañíadistribuyeNproductosadistintoscomerciosdelaciudad.Paraelloalmacenaenunarreglotodalainformaciónrelacionadaasumercancía:

• Clave

• Descripción

• Existencia

• Mininoamantenerdeexistencia

• Preciounitario

Escribaunprogramaquepuedallevaracabolassiguientesoperaciones:

a) Venta de un producto: se deben actualizar los campos que correspondan, y verificar que la nuevaexistencianoestépordebajodelmínimo.(Datos:clave,cantidadvendida)

b) Reabastecimiento de un producto: se deben actualizar los campos que correspondan. (Datos: clave,cantidadcomprada.)

c) Actualizarelpreciodeunproducto.(Datos:clave,porcentajedeaumento.)

d) Informarsobreunproducto:sedebenproporcionartodoslosdatosrelacionadosaunproducto.(Dato:clave.)

2. Unainmobiliariatieneinformaciónsobredepartamentosenrenta.Decadadepartamentoseconoce:

• Clave:esunenteroqueidentificaalinmueble.

Page 16: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

16 ALGORITMOS II INGENIERIA DE SISTEMAS

• Extensión:superficiedeldepartamento,enmetroscuadrados.

• Ubicación:(excelente,buena,regular,mala)

• Precio:esunreal.

• Disponible:VERDADEROsiestádisponibleparalarentayFALSOsiyaestárentado.

Diariamenteacudenmuchosclientesalainmobiliariasolicitandoinformación.

Escribaunprogramacapazderealizarlassiguientesoperacionessobrelainformacióndisponible:

a) ListelosdatosdelosdepartamentosdisponiblesquetenganunprecioinferioroigualaunciertocalorP.

b) ListelosdatosdelosdepartamentosquetenganunasuperficiemayoroigualaunciertovalorEyunaubicaciónexcelente.

c) Listeelmontodelarentadetodoslosdepartamentosalquilados.

d) Llega un cliente solicitando rentar un departamento. Si existe un departamento conuna superficiemayoroigualaladeseada,conunprecioyunaubicaciónqueseajustanalasnecesidadesdelcliente,eldepartamentoserenta.Actualizarlosdatosquecorrespondan.

e) Sevenceuncontrato,sinoserenueva,actualizarlosdatosquecorrespondan.

SehadecidióaumentarlasrentasenX%.Actualizarlospreciosdelasrentasdelosdepartamentosnoalquilados.

2.4 TEMA 3 TIPOS DE ARCHIVOS Existendiferentestiposdearchivoscomoson:archivosdeentrada,archivosdesalida,archivosdesituaciones,archivoshistóricos,archivossecuenciales,archivosdemovimientos,archivosdeíndice,archivosmaestrosentreotros.

2.4.1 ARCHIVOS Enlamayoríadeaplicacionesporcomputadorserequierequelainformaciónquesealmacenepermanezcaparapoderusarlaenprocesoposteriores.Paraellonecesitamosotrosmediosdealmacenamientocomolosarchivosqueseguardanen lamemoriaauxiliar (USB,discos,DVD,memoria flash,etc.)a travésdedispositivosquenonecesitan estar conectados constantemente al computador; de estemodo solo se recurre a ellos cuando senecesitausarlainformaciónquetienenalmacenada.Elhechodequeestosaparatosresidanfueradelamemoriaprincipalyguardenlainformacióndeformapermanentepermitequelosdatossirvanparadiferentesejecucionesdelmismoprogramayseanusadosporprogramasdiferentes.Desdeluego,tambiénsepuedeguardarmuchamásinformaciónqueenlamemoriaprincipal.

Page 17: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

17 ALGORITMOS II INGENIERIA DE SISTEMAS

Unarchivoes, entonces,unaestructura lógicadonde sealmacenaen formapermanente informacióncon lassiguientes ventajas: almacenamiento de grandes volúmenes, persistencia de esta en medios diferentes a lamemoriaprincipaldelcomputadoryposibilidaddequediferentesprogramaspuedanaccederaella.

2.4.2 CLASIFICACIÓN DE LOS ARCHIVOS SEGÚN SU USO

CLASIFICACIÓNSEGÚNSUUSO

CARACTERÍSTICAS

ARCHIVOSPERMANENTES

Sonarchivosrígidos,yaquelainformaciónquealmacenancambiamuypoco.Seusanparaextraerinformaciónqueseutilizaenotrosarchivosoprocesos:porejemplo,elarchivoquecontienetodalainformaciónsobrelossalariosdelosempleadosdeunaempresaenañosposteriores.

ARCHIVOSMAESTROS

Lainformaciónalmacenadaenestaclasedearchivosmanejaelestadoosituaciónde

losregistrosdeunadeterminadabasededatos,ysuactualizaciónoloscambiosde

los datos de los registros se hacen periódicamente. Por ejemplo, un archivo quealmaceneelinventariodelosbienesdeunaempresa.

ARCHIVOSHISTÓRICOS

Sonarchivosmaestrosqueyanoseutilizanycuyafunciónessolodeconsultaparaquienesdeseanobtener informaciónsobreelpasado.Porejemplo, la informacióncontenida en las hojas de vida académica de los estudiantes que terminaron sucarreraenladécadapasada.

ARCHIVOSDEMOVIMIENTO

Son temporales y su función principal es captar información para actualizar losarchivosmaestros.Susregistrosmuestran lastransaccionesomovimientosqueseproducenduranteundeterminadoperiodo.Cuandoelarchivomaestroseactualiza,usando los archivosdemovimiento, estosúltimospierden su validez y sepuedendestruir. Por ejemplo: los cambios de aumento de salarios, deducciones ysobresueldosproducidosduranteundeterminadoperiodo.

2.4.3 CLASIFICACIÓN DE LOS ARCHIVOS SEGÚN LOS DATOS QUE ALMACENAN

CLASIFICACIÓNDELOSARCHIVOSSEGÚNLOS

DATOSQUEALMACENANCARACTERÍSTICAS

Page 18: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

18 ALGORITMOS II INGENIERIA DE SISTEMAS

ARCHIVOSDEPROGRAMA

Sonlosprogramasfuentequeseescribenenundeterminadolenguajedeprogramación,dondecada instrucciónesun registro.Estosarchivos sepueden cargar del medio magnético a memoria, compilar, ejecutar,imprimir y volver a guardar donde estaban o en otro medio dealmacenamientodistinto.

ARCHIVOSDETEXTOOASCII(AMERICANSTANDARDCODE

FORINFORMATIONINTERCHANGE)

EstosalmacenancualquiercarácterdelcódigoASCII:palabras,frases,

párrafos,ysesuelencrearymantenermedianteprogramasqueprocesanoeditantexto.

ARCHIVOSBINARIOSEstosarchivosalmacenaninformaciónenunlenguajedescifrablesoloporelcomputador.Lainformaciónquepuedanalmacenaresdiversa:colores,sonidos,imágenes,órdenesodatosdiscretos,llamadosarchivosdedatos.

Antes dehablar sobre los archivos de texto, definiremos algunas operaciones básicas que se deben tener encuentacuandosetrabajaconarchivos.

2.5 TEMA 4 OPERACIONES CON ARCHIVOS Losarchivossonestructurasdealmacenamientodedatosanivelexterno,locualpermitemanejarinformaciónparaprocesosposteriores,dondesepuedemanejarlasdiferentesoperacionessobresuconjuntodedatos,estasoperacionesson:insertar,ordenar,buscar,actualizar,borrar,sobreunoomásdatos.

2.5.1 OPERACIONES BÁSICAS CON ARCHIVOS Acontinuación,sedefinenlasaccionesbásicasconarchivos:

• Creacióndelarchivo:Permitedefinirunavariabledentrodelprogramaquerepresenteelarchivoquesequieremanipular.Estavariableesconocidacomonombreinternodelarchivoysedefineconlasiguienteinstrucción:

ARCHIVOa

• Aperturadeunarchivo:Permiterelacionarunavariabletipoarchivoconelnombrequeelarchivotendráenelmediodealmacenamiento,llamadonombreexterno.Esteeselnombreconelcualseguardaelarchivoen

Page 19: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

19 ALGORITMOS II INGENIERIA DE SISTEMAS

elmediodealmacenamiento,ysuextensióndependedelaclasedeinformaciónquesevaaguardar.Tambiénesposibledarleunarutaqueindiquedondequedaraguardadoelarchivo;sinoseespecificalaruta,elarchivoseguardadóndeestáelprogramaquelocrea.Lasintaxisdeaperturaes:

ABRIRa(“nombreExterno.extensión”)

Conestainstrucciónsegeneraunaconexiónentreelnombreinternoayelnombreexternodelarchivo,donde

aeslavariabletipoarchivoconlaquesemanejaraelnombreexternodelarchivoenelprograma,nombre-

externoeselnombrequeseledaráalarchivoenelmediodealmacenamientoylaextensióndependedela

informaciónquesequierealmacenar.

Esta instruccióncrea lavariableacomovariable tipoarchivoyhace lasconexiones físicasy lógicasconel

nombreexterno.Alabrirelarchivolavariabletipoarchivoatomaelvalorverdaderosielarchivosepudoabrir

ofalsosielarchivonosepudoabrironoexiste.Estonospermitepreguntarsielarchivoseabrióono.Alabrir

unarchivohayqueespecificarelmododeapertura:desalida,deentrada,entradaysalida,adicionarmás

información,etcétera.

• Escritura en el archivo: Permite almacenar la información i en el archivo que se está manipulando. Lainstrucciónes:

ESCRIBAa(i)

Estainstrucciónpasalainformacióniqueresideenmemoriaalarchivocuyonombreexternoestárelacionado

cona.

• Lecturadeunarchivo:Permiteextraer la informacióndel archivo y almacenarlaenmemoriaprincipal. Lainformaciónquesetransportaalamemoriapuedesercualquiertipodevariableuobjetosalmacenadosenelarchivo.Lasintaxises:

LEAa(var)

La variable var puede representar cualquier tipo de dato: las más comunes son variables de texto,

estructurasyobjetos.

• Cierredelarchivo:Permiteprotegereláreadonderesideelarchivoyactualizaeldirectoriodelmediodealmacenamiento,reflejandoelnuevoestadodelarchivo.Adicionalmente,destruye lasconexionesfísicasylógicasqueseconstruyeroncuandoseabrióelarchivo.Lasintaxises:

CERRARa

Cuandoseejecutalainstrucciónseadicionaunregistrodespuésdelúltimograbado,dondecolocaunamarcade

findearchivo(EOF–ENDOFFILE).

Page 20: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

20 ALGORITMOS II INGENIERIA DE SISTEMAS

2.5.2 ARCHIVO DE TEXTO Tambiénselesconocecomoarchivosllanosoplanosporelhechodealmacenarsolotexto,esdecirquealmacenancaracteres,palabras,frasesopárrafosynotienenformato:contienensolotexto.LoscaracteresquesealmacenanpuedensercualquieradelconjuntodecaracteresdeASCII.Cadalíneadetextoesunregistro,ylavariabletipoarchivoasignadaen ladefinicióndelarchivoseusaparafluir informacióndesdeunmediodeentradahacia lamemoriaauxiliardondeesteresideyparaextraerinformacióndesdeelarchivohaciaunmedioexternodesalida.Unejemplodeunregistro(líneadetexto)seria:

Esteesunarchivodetextoquealmacenaunflujodecaracteres.

2.5.3 EJERCICIO DE APRENDIZAJE Elaborarunaclasequegenereunarchivotetextoconloscamposcedulaynombres,imprimael

contenidodelarchivoyadicionemásregistrosalfinaldelarchivo.

1. Identificacióndedatos,accionesylimitaciones

• Datosdeentrada:Cédula,nombre.

• Datosdesalida:Lainformaciónalmacenadaenelarchivo.

• Acciones:crearArchivo,imprimirArchivoyadicionarRegistroAlFinal.

2. Definicióndeclases

• Claseseleccionada:Archivo.

• Definicióndelconstructordelaclase:Archivo():norecibeargumentos.

• Diagramacióndelaclase:

ARCHIVO

+Archivo

+CrearArchivo

+ImprimirArchivo

Page 21: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

21 ALGORITMOS II INGENIERIA DE SISTEMAS

+AdicionarRegistroAlFinal

• Explicacióndelosmétodos:crearArchivo:secreaunarchivodetextoquesolicitealusuario

lainformaciónquesedeseaalmacenar.Elarchivoseguardaenlacarpetadondeestáelprograma,

perosepuedeestablecerunarutaparaquesealmaceneencualquierotrolugardelcomputador.Se

lepreguntaalusuariosielarchivoestacreadoono.Encasoqueelarchivoestecreado,loredirigeala

opciónADICIONARREGISTROALFINAL.Elarchivotienecomonombreinterno“archivo”ycomo

nombreexterno“nombres.txt”.lainformaciónqueseguardaporlíneaes:

CÉDULA:1158377694NOMBRE:MAXIMILIANODELTORO

Elusuariodecidecuantainformacióndeseaalmacenar.Cuandoesteterminedeentrarlainformación,

secierraelarchivo.

imprimirArchivo:haciendousodeuncicloMIENTRAS,serecorreeimprimeelarchivolíneaporlínea,

hastacuandoselleguealamarcadefindearchivo(OEF).

adicionarRegistroAlFinal:seabreelarchivoenmodoescritura,selesolicitanlosdatosporingresaral

usuario,seescribenalfinaldelarchivoyposteriormentesecierra.

3.definicióndelmétodoprincipal:seleelaopciónseleccionadaporelusuarioyseinvocaelmétodo

correspondiente.

Definicióndevariables:

archivo:objetodelaclaseArchivoparainvocarlosmétodos.

opción:opcióndelmenúseleccionadaporelusuario.

2.5.4 EJERCICIO DE APRENDIZAJE 1. CLASEArchivo2. METODOPRINCIPAL()3. PUBLICOVOIDCrearArchivo()4. ENTEROcedula5. CARÁCTERnombre6. CARÁCTERsw7. ESCRIBA:“¡SIELARCHIVOESTACREADOSERADESTRUIDO!8. ¿ESTACREADO?(S/N):”9. LEA:sw

Page 22: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

22 ALGORITMOS II INGENIERIA DE SISTEMAS

10. si(sw==”N”)ENTONCES11. CREARarchivo(“nombres.txt”)12. ESCRIBA:“DIGITELACEDULA:”13. LEA:cedula14. mientras(¡cedula!=0)HAGA15. ESCRIBA:“DIGITEELNOMBRE:”16. LEA:nombre17. ESCRIBAarchivo(“CEDULA:”,cedula,“\t”,“NOMBRE:”,18. nombre)19. ESCRIBA:“DIGITENUEVACEDULAOCEROPARATERMINAR:”20. LEA:cedula21. end_mientras22. CERRARarchivo23. end_si24. end_crearArchivo25. PUBLICOVOIDimprimirArchivo()26. CADENAlínea27. ABRIRarchivo(“nombres.txt”)28. si(archivo)ENTONCES29. mientras(archivo<>EOF)HAGA30. LEAarchivo(línea)31. ESCRIBA:línea32. end_mientras33. CERRARarchivo34. si_no35. ESCRIBA:“ELARCHIVONOMBRES.TXTNOEXISTEONOSEPUDO36. ABRIR”37. end_si38. end_imprimirArchivo39. PUBLICOVOIDadicionarRegistroAlFinal()40. ENTEROcedula41. CARÁCTERnombre42. ABRIRarchivo(“nombres.txt”)43. si(archivo)44. ESCRIBA:”DIGITELACEDULA:”45. LEA:cedula46. ESCRIBA:“DIGITEELNOMBRE:”47. LEA:nombre48. ESCRIBAarchivo(cedula+”\t”+nombre)49. CERRARarchivo50. si_no51. ESCRIBA:“ELARCHIVONOMBRES.TXTNOEXISTEONOSEPUDOABRIR”

Page 23: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

23 ALGORITMOS II INGENIERIA DE SISTEMAS

52. end_si53. end_adicionarRegistroAlFinal54. METODOPRINCIPAL()55. ENTEROopción56. Archivoarchivo57. HACER58. ESCRIBA:”1:CREARELARCHIVO”59. ESCRIBA:”2:IMPRIMIRCONTENIDODELARCHIVO”60. ESCRIBA:”3:ADICIONARREGISTROALFINAL”61. ESCRIBA:”4:SALIRDELMENU”62. ESCRIBA:”DIGITEOPCION:”63. LEA:opción64. CASOSDE(opción)65. CASO1:archivo.crearArchivo()66. CASO2:archivo.ImprimirArchivo()67. CASO3:archivo.AdicionarRegistroAlFinal()68. end_CASOS69. MIENTRAS(¡opción!=4)70. end_PRINCIPAL71. end(Método)72. end(Clase)

2.5.5 EJERCICIOS DE ENTRENAMIENTO Pautas para desarrollar los siguientes ejercicios: Para desarrollar estos ejercicios, debes de tener en cuenta,declararunaclaseydentrodeestaclasedeclararlasvariablesoatributosquevaatenerelarchivoquesedeseacrear.

1. Elaborarunaclasequeformeunarchivodedatosquecontengaencadaregistro:cédula,nombre,horastrabajadas,valordehora trabajadayporcentajedededucción.Laclasedebeproducirun informe(archivodetexto)conlacedula,elnombreyelsalariodevengado(ordenadoascendentementeporelcampocédula).

2. Elaborar una clase que cree un archivo de datos con la siguiente información por registro: cedula,apellidosynombreycuatronotasconsusrespectivosporcentajes.Luegodecreadoelarchivosepidemostrarunlistadoordenadoporapellido,insertarunnuevoestudiante,lacalificacióndefinidadecadaestudianteyvisualizarelcontenidodelarchivo.

2.6 TEMA 5 EFICIENCIA DE ALGORITMOS Cuandosetrabajaconprocesosenlíneaylosalgoritmossonutilizadosconungradoaltodefrecuencia,sedebenmanejaralgoritmosmuyeficientes,paraellohayquemedirlaeficienciadelalgoritmoconsuordendemagnitud,paratenercertezadequelosalgoritmossisoneficientes.

Page 24: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

24 ALGORITMOS II INGENIERIA DE SISTEMAS

2.6.1 EVALUACIÓN DE ALGORITMOS Laevaluacióndealgoritmoconsisteenmedirlaeficienciadeunalgoritmoencuantoaconsumodememoriaytiempodeejecución.Anteriormente,cuandoexistíangrandesrestriccionestecnológicasdememoria,evaluarunalgoritmoencuantoaconsumo de recursos de memoria era bastante importante, ya que dependiendo de ella los esfuerzos deprogramaciónydeejecuciónseríagrande.Enlaactualidad,conelgrandesarrollotecnológicodelhardware,lasinstruccionesdeconsumodememoriahanpasadoaunsegundoplano,porlotanto,elaspectodeevaluarunalgoritmoencuantoasuconsumodememorianoesrelevante.Encuantoaltiempodeejecución,apesardelasaltasvelocidadesdeprocesamientoqueenlaactualidadexisten,siguesiendounfactorfundamental,especialmenteenalgoritmosquetienenqueverconelcontroldeprocesosentiemporealyenaquelloscuyafrecuenciadeejecuciónesalta.Procedamosentoncesavercomodeterminareltiempodeejecucióndeunalgoritmo.Básicamenteexistendosformasdehacerestamedición:unaquellamamosaposterioriyotraquellamamosapriori.Consideremoslaprimeraforma,aposteriori:elprocesodeelaboraciónyejecucióndeunalgoritmoconstadelossiguientespasos:

Elaboracióndelalgoritmo. Codificaciónenalgúnlenguajedeprogramación. Compilacióndelprograma. Ejecucióndelprogramaenunamaquinadeterminada.

Cuandoseejecutaelprograma,lossistemasoperativosproporcionanlaherramientadeinformarcuántotiempoconsumiólaejecucióndelalgoritmo.Estaformademedicióntienealgunosinconvenientes:alcodificarelalgoritmoenalgúnlenguajedeprogramaciónestamosrealmentemidiendo laeficienciadel lenguajedeprogramación,yaquenoes lomismounprogramacodificado en FORTRAN, que en PASCAL o que en C; al ejecutar un programa en unamáquina determinadaestamosintroduciendootroparámetro,elcualeslaeficienciadelamáquina,yaquenoeslomismoejecutarelprogramaenunXT,enun386,enun486,enunPentium,esunAS400,esunRISC,etc.Enotraspalabras,conestaformademediciónestamosesevaluandolacalidaddelcompiladorydelamáquina,másnoladelalgoritmo,queesnuestrointerés.Loquenos interesaesmedir laeficienciadelalgoritmoporelhechodeseresealgoritmo, independientedellenguajeenelquesehayacodificadoydelamáquinaenlacualseejecute.Veamos entonces la forma demedir la ejecución de un algoritmo a priori. Para ello necesitamos definir dosconceptosbásicosqueson:ContadordefrecuenciasyOrdendemagnitud.

Page 25: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

25 ALGORITMOS II INGENIERIA DE SISTEMAS

2.6.2 CONTADOR DE FRECUENCIAS Elcontadorde frecuenciasesunaexpresiónalgebraicaque identificaelnúmerodevecesqueseejecutan lasinstruccionesdeunmétodo.Parailustrarcomodeterminarestaexpresiónconsideramoslossiguientesejemplos:

MÉTODOPRINCIPAL1()

1. LEA(a,b,c) 12. x=a+b13. y=a+c14. z=b*c15. w=x/y–z 1 6. IMPRIMA(a,b,c,w) 1

Contadordefrecuencias 6

MÉTODOPRINCIPAL1()

1. LEA(n)1 2. s=0 1

3. i=1 1

4. MQ(i<=n)n+15. s=s+1 n6. i=i+1 n7. endMQ n8. IMPRIMA(n,s) 1

Contadordefrecuencias 4n+5

Entodoslosmétodoslasinstruccionesestánnumeradassecuencialmente.Alfrentedecadainstrucciónapareceunnúmeroounaletraqueindicaelnúmerodevecesqueseejecutaesainstrucciónenelmétodo.Enelmétodo1cadainstrucciónseejecutasolounavez.Eltotaldevecesqueseejecutantodaslasinstruccioneses6.Estevaloreselcontadordefrecuenciasparaelmétodo1.Enelmétodo2lasinstrucciones1,2,3y8seejecutansolounavez,mientrasquelasinstrucciones5,6y7seejecutannvecescadauna,yaqueperteneceaunciclo,cuyavariablecontroladoradelcicloseiniciaenuno,tiene

Page 26: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

26 ALGORITMOS II INGENIERIA DE SISTEMAS

unvalorfinaldenyseincrementadeauno,lainstrucción4seejecutaunavezmásyaquecuandoiseamayorquendetodasformashacelapreguntaparaluegosalirdelciclo.Portanto,elnúmerodevecesqueseejecutanlasinstruccionesdelmétodoes4n+5.Estaexpresióneselcontadordefrecuenciasparaelmétodo2.Veamosotrosejemplosdemétodosconsucontadordefrecuenciasrespectivo

METODOPRINCIPAL3()

1. LEA(m,n)12. s=013. i=1 14. MQ(i<=n) n+15. t=0 n6. j=1 n7. MQ(j<=m) n*m+n8. t=t+1n*m9. j=j+1n*m10. endMQn*m11. s=s+tn12. i=i+1 n13. endMQ n14. IMPRIMA(n,m,s) 1

Contadordefrecuencias 4(n*m)+7n+5

MÉTODOPRINCIPAL4()

1. LEA(n,m)12. s=013. i=114. MQ(i<=n)n+15. t=0n6. j=1 n7. MQ(j<=n)n2+n8. t=t+1n29. j=j+1n210. endMQn211. s=s+tn12. i=i+1n

Page 27: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

27 ALGORITMOS II INGENIERIA DE SISTEMAS

13. endMQ n14. IMPRIMA(n,m,s) 1

Contadordefrecuencias 4n2+7n+5

MÉTODOPRINCIPAL5()

1. LEA(n,m)12. s=013. i=114. MQ(i<=n)n+15. s=s+1n6. i=i+1n7. endMQn8. IMPRIMA(n,s)19. t=0110. i=1111. MQ(i<=m)m+112. t=t+1m13. i=i+1m14. endMQm15. IMPRIMA(m,t)1

Contadordefrecuencias 4m+4n+9

Deunamaneraanálogaseobtuvieronloscontadoresdefrecuenciasparalosmétodos3,4y5.

2.6.3 EJERCICIOS DE ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Laspautasquedebesutilizarparahallarelcontadorde frecuencia, esmirar el númerode vecesque se ejecuta cada instrucciónenel algoritmo, recuerdaqueelcontadordefrecuenciaesunaexpresiónalgebraica,quesaledelnúmerodevecesqueseejecutacadainstrucción.

Calculeelcontadordefrecuenciasdelossiguientesmétodos:

1. PUBLICOESTATICOVOIDPrograma1(n)

Page 28: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

28 ALGORITMOS II INGENIERIA DE SISTEMAS

2. s=0

3. PARA(i=1,n,1)

4. PARA(j=1,i,1)

5. PARA(k=1,j,1)

6. s=s+1

7. endPARA

8. endPARA

9. endPARA

10. end(Método)

1. CLASEPrograma2

2. METODOPRINCIPAL()

3. LEA(n)

4. s=0

5. i=2

6. MQ(i<=n)

7. s=s+1

8. i=i*i

9. endMQ

10. IMPRIMA(n,s)

11. end(Método)

12. end(Clase)

1. CLASEPrograma3

2. MÉTODOPRINCIPAL()

3. LEA(n)

4. s=0

5. PARA(i=1,n,1

6. t=0

7. PARA(j=1,i,1)

8. t=t+1

Page 29: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

29 ALGORITMOS II INGENIERIA DE SISTEMAS

9. endPARA

10. s=s+t

11. endPARA

12. IMPRIMA(n,s)

13. end(Método)

14. end(Clase)

2.6.4 ORDEN DE MAGNITUD

EL ORDEN DE MAGNITUD ES EL CONCEPTO QUE DEFINE LA EFICIENCIA DEL MÉTODO EN CUANTO A TIEMPO DE EJECUCIÓN. SE OBTIENE A PARTIR DEL CONTADOR DE FRECUENCIAS.

Paraobtenerelordendemagnitudseguimoslossiguientespasos:Seeliminanloscoeficientes,lasconstantesy

lostérminosnegativosdelostérminosresultantes;sisondependientesentresí,seeligeelmayordeellosyeste

seráelordendemagnituddedichométodo,delocontrarioelordendemagnitudserálasumadelostérminos

que quedaron. Si el contador de frecuencias es una constante, como en el caso delmétodo 1, el orden de

magnitudes1ylorepresentamoscomoO(1).Teniendopresenteesto,losórdenesdemagnituddelosmétodosquevimosanteriormenteson:

Método1:O(1)Método2:O(n)Método3:O(n*m)Método4:O(n2)Método5:O(n+m)

Page 30: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

30 ALGORITMOS II INGENIERIA DE SISTEMAS

Enelambientedesistemas,losórdenesdemagnitudmásfrecuentesparalosmétodosquesedesarrollanson:

ORDENDEMAGNITUD REPRESENTACION

Constante O(1)

Lineal O(n)

Cuadrático O(n2)

Cubico O(n3)

Logarítmico O(log2(n))

Semilogarítmico O(nlog2(n))

Exponencial O(2n)

Siquisiéramosclasificarestasórdenesdemagnituddesdelamáseficientehastalamenoseficiente,tendríamoselsiguienteorden:

1. Constante O(1)

2. Logarítmico O(log2(n))

3. Lineal O(n)

4. Semilogarítmico O(nlog2(n))

5. Cuadrático O(n2)

6. Cúbico O(n3)

7. Exponencial O(2n)

Hastaaquíhemosvistométodoscuyoordendemagnitudesconstante,linealycuadrático.Deigualmaneraquesehizoelmétodoconordendemagnitudcuadráticosepuedehacerunocúbico;enelcuadráticosenecesitaron2 ciclos anidados, controlados por lamisma variable, para el cúbico se necesitarían 3 ciclos con lasmismascondiciones.Pasemosatratarmétodosconordendemagnitudlogarítmicos.Empecemosdefiniendoloqueesunlogaritmo.Ladefiniciónclásicadellogaritmodeunnúmeroxes:eselexponentealcualhayqueelevarunnúmerollamadobaseparaobtenerx.Confinesdidácticos,presentamosotradefinicióndelogaritmo:logaritmodeunnumeroxeselnúmerodevecesquehayquedividirunnúmero,porotrollamadobase,paraobtenercomococienteuno(1).

Page 31: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

31 ALGORITMOS II INGENIERIA DE SISTEMAS

Porejemplo,sitenemoselnúmero100yqueremoshallarsulogaritmoenbase10,habráquedividirlopor10sucesivamentehastaobtenercomococienteuno(1).

100 10

0 10 10

0 1

Huboquedividirel100dosvecespor10paraobtener1enelcociente,portanto,ellogaritmoenbase10de100es2(log10(100)=2).Siqueremoshallarellogaritmoenbase2de16habráquedividir16sucesivamentepor2hastaobteneruncocientede1.Veamos:

16 2 0 8 2 0 4 2 0 2 2 0 1

Esdecir,huboquedividirel16,cuatro(4)vecespordos(2)paraobteneruncocientede1,portanto,ellogaritmoenbase2de16es4(log2(16)=4).Planteemosunejemploprácticodealgoritmoenelcualsepresentaestasituación.Consideremoselcasodeunvectorenelcualtenemoslosdatosordenadosascendentemente:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 V 2 4 7 9 11 15 17 28 31 36 43 50 58 62 69

Sinosinteresabuscareldatox=85ydecirencualposicióndelvectorseencuentrahaydosformasdehacerlo:Una,eshacerunabúsquedasecuencialapartirdelprimerelementoeircomparandoelcontenidodeesaposición

Page 32: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

32 ALGORITMOS II INGENIERIA DE SISTEMAS

coneldatox(85),elprocesoterminarácuandoloencontremosocuandohayamosrecorridotodoelvectorynoloencontremos.Unpequeñométodoquehagaeseprocesoeselsiguiente:Seanelnúmerodeelementosdelvectoryxeldatoabuscar.

1. i=1

2. MQ((i<=n)&(V[i]!=x))

3. i=i+1

4. endMQ

5. SI(i<=n)

6. Pos=i

7. SINO

8. IMPRIMA(“eldatonoexiste”)

9. EndSI

Endichométodotenemosplanteadounciclo,elcual,enelpeordeloscasos,seejecutanveces,esdecir,cuandoeldatoxnoestéenelvector.Portanto,elordendemagnituddeesemétodoesO(n).Engeneral,cuandoseefectúaunabúsqueda,elpeorcasoesnoencontrarloqueseestábuscando.Ennuestroejemplohuboquehacer15comparacionesparapoderdecirqueel85noestáenelvector.Si el vector hubiera tenido quinientosmil de datos y hubiéramos tenido que buscar un dato que no estaba,hubiéramostenidoquehaberhechoquinientasmilcomparacionesparapoderdecirqueeldatobuscadonoseencontró.Ahora,siaprovechamoslacaracterísticadequelosdatosenelvectorestánordenadospodemosplantearotrométododebúsqueda:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

V 2 4 7 911 15 17 28 31 36 43 50 58 62 69 M

Comparamoseldatoxconeldatodelelementodelamitaddelvector,(llamémosloM).Puedensucedertrescasos:V(M)==x;V(M)>x;V(M)<xSiV(M)==xsehaterminadolabúsqueda.SiV(M)>xsignificaqueeldatox,siseencuentraenelvector,estaráenlaprimeramitaddelvector.

Page 33: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

33 ALGORITMOS II INGENIERIA DE SISTEMAS

SiV(M)<xsignificaque,sieldatoxseencuentraenelvector,estaráenlasegundamitaddelvector.Ennuestroejemplo,paraseguirbuscandoeldatox(85)loharemosdesdelaposición9hastalaposición15.Esdecir,conunascomparacioneshemoseliminadolamitadde losdatossobre loscualeshayqueefectuar labúsqueda.Enotraspalabras,hemosdivididolamuestrapordos(2).Elconjuntodedatossobreelcualhayqueefectuarlabúsquedaquedaasí:

9 10 11 12 13 14 15

31 36 43 50 58 62 69

M

Delamitadquequedoescogemosnuevamenteelelementodelamitadyrepetimoslacomparaciónplanteadaanteriormente.Conestacomparacióneliminamosnuevamentelamitaddelosdatosquenosquedan,esdecir,dividimosnuevamentepordos.Sicontinuamosesteproceso,concuatrocomparacionespodremosafirmarqueeldatoxnoestáenelvector.Hemosreducidoelnúmerodecomparacionesde15a4.Cuatro(4)esellogaritmoenbase2de15,aproximándoloporencima.SiNfuera65000posicionesenelvector,con16comparacionespodremosdecirqueundatonoseencuentraenunconjuntode65000datos.Comopuedeobservarse,lagananciaencuantoalnúmerodecomparacionesesgrande.Unalgoritmodebúsquedaquefuncioneconestatécnicatieneordendemagnitudlogarítmicoenbasedos,yaquelamuestradedatossedividesucesivamentepordos.Consideremosahora,métodossencilloscuyoordendemagnitudeslogarítmico:

1. n = 32 2. s = 0 3. i = 32 4. MQ (i > 1) 5. s = s + 1 6. i = i / 2 7. endMQ

Page 34: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

34 ALGORITMOS II INGENIERIA DE SISTEMAS

8. IMPRIMA (n, s)

Enelmétodoanterior,lavariablecontroladoradelcicloesi,ydentrodelciclo,isedividepordos(2).Sihacemosunseguimientodetalladotendremos:

Laprimeravezqueseejecutaelciclo,lavariableisalevaliendo16. Lasegundavezqueseejecutaelciclo,lavariableisalevaliendo8. Laterceravezqueseejecutaelciclo,lavariableisalevaliendo4. Lacuartavezqueseejecutaelciclo,lavariableisalevaliendo2. Laquintavezqueseejecutaelciclo,lavariableisalevaliendo1yterminaelciclo.

Esdecir,lasinstruccionesdelcicloseejecutan5veces.Cinco (5)esel logaritmoenbasedos (2)den (32),porconsiguiente,cada instruccióndel ciclo seejecutaunnúmerodevecesigualallogaritmoenbasedosden.Elcontadordefrecuenciasyelordendemagnituddedichométodosepresentanacontinuación:

1. n = 32 1 2. s = 0 1 3. i = 32 1 4. MQ (i > 1) log2 n + 1 5. s = s + 1 log2 n 6. i = i / 2 log2 n 7. endMQ log2 n 8. IMPRIMA (n, s) 1

Contador de frecuencias 4 log2 n + 5 Orden de magnitud O(log2 (n))

EliminandoconstantesycoeficienteselordendemagnitudesO(log2n).

Consideremosestenuevométodo:

1. n = 32 1 2. s = 0 1 3. i = 1 1 4. MQ (i < n) log2 n + 1 5. s = s + 1 log2 n 6. i = i * 2 log2 n 7. endMQ log2 n 8. IMPRIMA (n, s) 1

Page 35: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

35 ALGORITMOS II INGENIERIA DE SISTEMAS

Enestemétodolavariablecontroladoradelcicloisemultiplicapordosdentrodelciclo.

Haciendounseguimientotendremos:

Enlaprimerapasada,lavariableisalevaliendo2.

Enlasegundapasada,lavariableisalevaliendo4. Enlatercerapasada,lavariableisalevaliendo8. Enlacuartapasada,lavariableisalevaliendo16. Enlaquintapasada,lavariableisalevaliendo32yelciclosetermina.

Lasinstruccionesdelcicloseejecutan5veces,portanto,elordendemagnituddelmétodoeslogarítmicoenbase2(O(log2n)).

Engeneral,paradeterminarsiunciclotieneordendemagnitudlinealologarítmica,debemosfijarnoscómose

estámodificando la variable controladoradel ciclo: Si esta semodificamediante sumaso restas el ordendemagnituddelcicloes lineal, si semodificaconmultiplicacionesodivisioneselordendemagnituddelcicloeslogarítmico.Consideremosahoraelsiguientemétodo:

1. n = 81 2. s = 0 3. i = 81 4. MQ (i > 1) 5. s = s + 1 6. i = i / 3 7. endMQ 8. IMPRIMA (n, s)

Aquí,lavariablecontroladoradelcicloisedivideportresdentrodelciclo.Haciéndoleelseguimientotendremos:

Enlaprimerapasada,lavariableisalevaliendo27.

Enlasegundapasada,lavariableisalevaliendo9.

Enlatercerapasada,lavariableisalevaliendo3.

Enlacuartapasada,lavariableisalevaliendo1,yterminaelciclo.

Page 36: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

36 ALGORITMOS II INGENIERIA DE SISTEMAS

Las instruccionesdelcicloseejecutaron4veces.Cuatroesel logaritmoenbase3de81.Porconsiguiente,elordendemagnituddedichométodoeslogarítmicoenbase3(O(log3n)).

Engeneral,sitenemosunmétodo:

1. n = 81 2. s = 0 3. i = 81 4. MQ (i > 1) 5. s = s + 1 6. i = i / X 7. endMQ 8. IMPRIMA (n, s)

Aquí,lavariablecontroladoradelciclosedivideporx.Elnúmerodevecesqueseejecutanlasinstruccionesdelcicloeslogaritmoenbasexden(O(logxn)),portanto,elordendemagnitudeslogaritmoenbasex.

Paraobtenermétodos conordendemagnitud Semilogarítmicobasta conqueun ciclo logarítmico seubiquedentrodeuncicloconordendemagnitudn(O(n))oviceversa.Porejemplo:

1. LEA (n) 1 2. s = 0 1 3. i = 1 1 4. MQ (i <= n) n+1 5. t = 0 n 6. j = n n 7. MQ (j > 1) n*log2n +n 8. t = t + 1 n*log2n 9. j = j / 2 n*log2n 10. endMQ n*log2n 11. IMPRIMA (t) n 12. s = s + t n 13. i = i + 1 n 14. endMQ n 15. IMPRIMA (n, s) 1

Contador de frecuencias 4nlog2n+8n+5

Orden de magnitud O(n log2n)

Page 37: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

37 ALGORITMOS II INGENIERIA DE SISTEMAS

EnelmétodoanteriorelordendemagnitudesSemilogarítmico.Digamosquelaideaeselaborarmétodoslomáseficientesposible.Consideremoselsiguienteproblema:Elaborarunmétodoqueleaunenteropositivonyquedeterminelasumadelosenterosdesde1hastan.

Unasolucióneslasiguiente:

1. LEA (n) 2. s=0 3. i = 1 4. MQ (i <= n) 5. s = s + i 6. i = i + 1 7. endMQ 8. IMPRIMA (n, s) 9.

Elanteriormétodoleeundatoenteron(n>0),calculaeimprimelasumadelosenterosdesde1hastan,yelordendemagnituddeésteesO(n).Matemáticamentehablando,lasumatoriadelosenterosdesde1hastan,serepresentaasí: Estarepresentación,convertidaenfórmulamatemática,quedaríadelasiguienteforma:

n * (n + 1) 2

Conociendo esta fórmula, podemos elaborar otro método que ejecute exactamente la misma tarea que elanterior.Veamoscómosería:

1. LEA (n) 2. s = n * (n + 1) / 2 3. IMPRIMA (n, s)

Éstemétodotieneordendemagnitudlineal(O(1)).Esdecir,tenemosdosmétodoscompletamentediferentes

Page 38: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

38 ALGORITMOS II INGENIERIA DE SISTEMAS

queejecutanexactamentelamismatarea,unoconordendemagnitudO(n)yelotroconordendemagnitudO(1).

Lo anterior no significa que toda tarea podrá ser escrita con métodos O(1), no, sino que de acuerdo a losconocimientosquesetenganoalacreatividaddecadacual,sepodráelaborarmétodosmáseficientes.

Este ejemplo, el cual es válido, desde el punto de vista de desarrollo de métodos, es aplicable también a

situacionesdelavidareal.Seguroquealgunavezustedtuvoalgúnproblema,yencontróunasolución,ysaliódelproblema,aplicandolasoluciónqueencontró,ysinembargo,altiempo,dosotresmesesdespués,pesandoen

loquehabíahecho,encontróquepudohabertomadounamejordeterminaciónyquelehabríaidomejor.

La enseñanza es que cuando se nos presente un problema debemos encontrar comomínimo dossolucionesyluegoevaluarcuálesmásapropiada.

2.6.5 EJERCICIOS DE ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Recuerdaque,primerosedebehallarelcontadordefrecuenciaqueesunaexpresiónalgebraica, luegodeobtenerelcontadordefrecuenciasepasaahallarelorden demagnitud, que es el que define la eficiencia del algoritmo. Recuerda que, para hallar el orden demagnitudseeliminanloscoeficientes,lasconstantesylostérminosnegativosdelostérminosresultantesDetermineelordendemagnituddelossiguientesmétodos,aloscualesenunejerciciopasadolescalculamoselcontadordefrecuencias: 1. PUBLICOESTATICOVOIDPrograma1(n)2. s=03. PARA(i=1,n,1)4. PARA(j=1,i,1)5. PARA(k=1,j,1)6. s=s+17. endPARA8. endPARA9. endPARA10. end(Método) 1. CLASEPrograma22. MÉTODOPRINCIPAL()3. LEA(n)4. s=05. i=26. MQ(i<=n)7. s=s+18. i=i*i

Page 39: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

39 ALGORITMOS II INGENIERIA DE SISTEMAS

9. endMQ10. IMPRIMA(n,s)11. end(Método)12. end(Clase) 1. CLASEPrograma32. MÉTODOPRINCIPAL()3. LEA(n)4. s=05. PARA(i=1,n,16. t=07. PARA(j=1,i,1)8. t=t+19. endPARA10. s=s+t11. endPARA12. IMPRIMA(n,s)13. end(Método)14. end(Clase) 4. Elaborelossiguientesmétodosydetermineelcontadordefrecuenciasyelordendemagnituddichosmétodos:a) Realizarunmétodoquecalculelasumadelasiguienteseriearitméticaparantérminos:2,5,8,11,14,nb) Realizarunmétodoquecalculelasumadelasiguienteseriearitméticaparantérminos:2,4,8,16,32,64,n

Page 40: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

40 ALGORITMOS II INGENIERIA DE SISTEMAS

3 UNIDAD 2 MANEJO DINAMICO DE MEMORIA Y PUNTEROS

IntroducciónaPunteros:Enlace

Page 41: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

41 ALGORITMOS II INGENIERIA DE SISTEMAS

3.1.1 RELACIÓN DE CONCEPTOS

Punteros:DireccionesdememoriaqueindicaunaposicióndememoriadentrodelaRAM.

Dirección:EsunadirecciónfísicadememoriaqueserepresentapormediodelsistemanuméricohexadecimaldentrodelaRAM.

Nodo:Esunespaciofísicodememoriaquetieneunadirecciónyseencuentracompuestoporunapartededatosyunapartedeliga(dirección).

Manejodinámicodememoria:Paraoptimizarelrecursodememoriaaniveldeprogramación.

Las listas simplemente ligadas: Sonestructurasdonde semaneja la informaciónde formadinámica, dondeel

espaciodondeselaguardalainformaciónesunnodo,dondeestesesubdivideendosespaciosunespaciopara

guardarlainformaciónyotroparaguardarladireccióndememoriaalsiguientenodo.

Page 42: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

42 ALGORITMOS II INGENIERIA DE SISTEMAS

Laslistasdoblementeligadas:Sonestructurasquepermitenmanejarlainformacióndeformadinámica,dondeel

espaciodondeseguardalainformaciónesunnodo,queesunadireccióndememoriadivididaentrespartes,una

parteparaguardarlainformación,otraparaladirecciónalsiguientenodoylaotraparaapuntaralnodoanterior.

Insertar:Consisteeningresarunnuevodatoalalista,demaneraquelalistacontinúeordenada.

Borrar:Consisteenborrarundatoundatodelalista.

Buscar:Consisteenbuscarundato,siseencuentraonoenunalista.

Ordenar:Consisteenordenarlosdatosdelalista,yasea,enordenascendenteodescendente.

3.2 TEMA 1 PUNTEROS Los punteros son direcciones dememoria que indica una posición dememoria dentro de la RAM, sonmuyutilizadosconcuandosetrabajaconmemoriadinámica.

Pararepresentarelconceptodepunterosemostraráunalista.

Dondecadacuadrocontienedos campos,unoparaeldatoyotropara la liga.Técnicamente,cadacuadro sedenominanodo,dondecadanodoposeeunadireccióndememoria.

Ejemplo:elprimercuadrotieneladirección1F,elsegundo2Fyeltercero3F.

3.2.1 CLASE NODOSIMPLE Comonuestroobjetivoestrabajarprogramaciónorientadaaobjetos,yparaellousamosclasesconsusrespectivosmétodos,comencemosdefiniendolaclaseenlacualmanipulamoselnodoqueacabamosdedefinir.AdichaclaseladenominaremosnodoSimple:

1. CLASEnodoSimple

2. Privado

3. Objetodato

Page 43: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

43 ALGORITMOS II INGENIERIA DE SISTEMAS

4. nodoSimpleliga

5. publico

6. nodoSimple()//constructor

7. objetoretornaDato()

8. nodoSimpleretornaLiga()

9. voidasignaDato(Objetod)

10. voidasignaLiga(nodoSimplex)

11. end(ClasenodoSimple)

Losalgoritmoscorrespondientesalosmétodosdefinidosson:

1. nodoSimple(objetod)//constructor

2. dato=d

3. liga=null

4. end(nodoSimple)

1. objetoretornaDato()

2. returndato

3. end(retornaDato)

1. nodoSimpleretornaLiga()

2. returnliga

3. end(retornaLiga)

1. voidasignaDato(objetod)

2. dato=d

3. end(asignaDato)

1. voidasignaLiga(nodoSimplex)

2. liga=x

3. end(asignaLiga)

Parausarestaclaseconsideremoselsiguienteejemplo:

1. nodoSimplex

Page 44: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

44 ALGORITMOS II INGENIERIA DE SISTEMAS

2. d=3.1416

3. x=newnodoSimple(d)Alejecutarlainstrucción3elprogramasecomunicaconelsistemaoperativoyesteleasignaunaposicióndememoriaanuestroprograma,elcualidentificaestaposicióndememoriaconlavariablex.elresultadoobtenidoes:

En el cual 19 es la dirección del nodo en la que se almacenan los campos de dato y liga. Dicha dirección lasuministraelsistemaoperativodeunaformatransparenteparaelusuario.

Siqueremosaccederloscamposdelnodox,loharemosasí:

d=x.retornaDato()//dquedavaliendo3.1416

z=x.retornaLiga()//zquedavaliendonulo

Acontinuación,presentamosunejemplomáscompletodelautilizacióndelaclasenodoSimple.

Supongamosquetenemoselconjuntodedatosa,b,c,fyqueseprocesanconelsiguientealgoritmo:

1. nodoSimplex,y,z,p

2. read(d)//leelaletra“a”

3. x=newnodoSimple(d)//digamosqueenvióelnodo4

4. read(d)//leelaletra“b”

5. y=newnodoSimple(d)//digamosqueenvióelnodo8

6. read(d)//leelaletra“c”

7. z=newnodoSimple(d)//digamosqueenvióelnodo3Elresultadograficoalejecutarestasinstruccioneses:

Ahora,siejecutamoslasinstrucciones:

8. x.asignaLiga(y)

9. y.asignaLiga(z)

Losnodosquedaranconectadosasí:

Page 45: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

45 ALGORITMOS II INGENIERIA DE SISTEMAS

Siejecutamoslassiguientesinstrucciones:

10. read(d)//leelaletra“f”11. y=newnodoSimple(d)//digamosqueenvióelnodo7

Nuestrosnodosquedanasí:

Ahora,ejecutemosestasinstrucciones:

12. p=x.retornaLiga()13. write(p.retornaDato())

Lavariablepquedavaliendo8yescribelaletra“b”.

Ysiejecutamosestaotrainstrucción:

14. x.retornaLiga().asignaLiga(y)

Nuestrosnodosquedanasí:

Observequecuandoseejecutax.retornaLiga()seestáobteniendoelcontenidodelcampodeligadelnodox,elcualeselnodo8ennuestroejemplo.Entonces.Elnodo8invocaelmétodoasignaLiga()yleestamosenviandocomoparámetroelnodoy,queenestemomentovale7.Podemosreorganizareldibujodenuestrosnodosasí:

Page 46: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

46 ALGORITMOS II INGENIERIA DE SISTEMAS

Ahora,siejecutamoslassiguientesinstrucciones:

15. y.asignaLiga(z)16. y=null17. z=null18. p=x

Nuestralistaquedaasí:

Yahoraejecutemosestasinstrucciones:

19. while(¡p!=null)do20. write(p.retornaDato())21. p=p.retornaLiga()22. end(while)

Enlainstrucción20,laprimeravezqueentraalcicloescribelaletra“a”,puestoquepvale4.Enlainstrucción21modificaelvalordep:apleasignaloquehayenelcampodeligadelnodo4,esdecir,8.Nuestralistaestáasí:

Lasegundavezqueentraalcicloescribelaletra“b”ylapquedavaliendo7.Nuestralistaestáasí:

Laterceravezqueentraalcicloescribelaletra“f”ylapquedavaliendo3:

Page 47: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

47 ALGORITMOS II INGENIERIA DE SISTEMAS

Lacuartavezqueentraalcicloescribelaletra“c”ylapquedavaliendonull;porconsiguiente,terminaelciclo.Esteciclo,instrucciones19a22,tieneordendemagnitudO(n),siendonelnúmerodenodosdelalista.

Ahora,siporultimoejecutamosestasinstrucciones:

23. y.asignaLiga(x.retornaLiga().retornaLiga()) Lalistaquedaasí:

Observequenohemosdibujadoelnodo8yaquenoestáconectadoconlosotros,puessehadesconectadodela lista con la instrucción 23. Lo que hace la instrucción 23 se puede escribir también con las siguientesinstrucciones:

23a.y=x.retornaLiga()

23b.y.asignaLiga(y.retornaLiga())

o

23a.y=x.retornaLiga()

23b.y=y.retorna.Liga()

23c.y.asignaLiga(y)

Essupremamenteimportantequeentiendabienesteejemplodeaplicacióndelaclase

nodoSimple.

3.3 TEMA 2 LISTAS SIMPLEMENTE LIGADAS Las listas simplemente ligadas son estructuras donde semaneja la información de forma dinámica, donde elespaciodondeselaguardalainformaciónesunnodo,dondeestesesubdivideendosespaciosunespacioparaguardarlainformaciónyotroparaguardarladireccióndememoriaalsiguientenodo,conestaslistassepuedenrealizarlasoperacionesdeinsertar,ordenar,buscar,borrarytodoestobajoelconceptodememoriadinámica.

Page 48: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

48 ALGORITMOS II INGENIERIA DE SISTEMAS

3.3.1 CLASE LISTAS SIMPLEMENTE LIGADA EsunconjuntodenodosconectadoscuyoelementobásicosonobjetosdelaclasenodoSimple.Conelfindepoderoperar sobre este conjunto de nodos es necesario conocer el primer nodo del conjunto de nodos que estánconectados, y enmuchas situaciones el últimonodo del conjunto. Con base en esto vamos a definir la clasellamadaLSL(listasimplementeligada),lacualtendrádosdatosprivadosdelaclasenodoSimple,quellamaremosprimeroyúltimo:primeroapuntaráhaciaelprimernododelalistayúltimoapuntaráhaciaelúltimonododelalista.Además,definiremoslasoperacionesquepodremosefectuarsobreobjetosdedichaclase.

1. CLASELSL

2. Privado

3. nodoSimpleprimero,ultimo

4. Publico

5. LSL()//constructor

6. booleanesVacía()

7. nodoSimpleprimerNodo()

8. nodoSimpleultimoNodo()

9. nodoSimpleanterior(nodoSimplex)

10. booleanfinDeRecorrido(nodoSimplex)

11. voidrecorre()12. nodoSimplebuscaDondeInsertar(Objetod)

13. voidinsertar(Objetod,nodoSimpley)

14. voidconectar(nodoSimplex,nodoSimpley)

15. nodoSimplebuscarDato(Objetod,nodoSimpley)

16. voidborrar(nodoSimplex,nodoSimpley)

17. voiddesconectar(nodoSimplex,nodoSimpley)

18. voidordenaAscendentemente()

19. end(Clase)

Expliquemosbrevementecadaunodelosmétodosdefinidos.Comencemosconelconstructor:cuandoseejecutaelconstructorloúnicoquesehaceescrearunanuevainstanciadelaclaseLSLconsuscorrespondientesdatosprivadosennull.Ejemplo:sitenemosestasinstrucciones:

1. LSLa,b

2. a=newLSL()

3. b=newLSL()

Loqueseobtienees:

Page 49: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

49 ALGORITMOS II INGENIERIA DE SISTEMAS

Paraexplicarquées loquehacecadaunode losmétodosdefinidosen laclaseLSLconsideremoselsiguienteobjeto,pertenecientealaclaseLSLyquellamamosa:

LafunciónesVacía()retornaverdaderosilalistaqueinvocaelmétodoestávacía;delocontrario,retornafalso.Unalistaestávacíacuandolavariableprimeroesnull.

LafunciónprimerNodo()retornaelnodoqueestadeprimeroenlalista.Siefectuamoslainstrucciónp=a.primer

Nodo(),entoncespquedaravaliendo4.

LafunciónultimoNodo(),retornaelnodoqueestadeultimoenlalista.Siejecutamoslainstrucciónp=a.ultimo

Nodo(),entoncespquedaravaliendo5.

La funciónfinDeRecorrido(p) retornaverdaderosielnodopenviadocomoparámetroesnull;de locontrario,retornafalso.

La función anterior(x) retorna el nodo anterior al nodo enviado como parámetro. Si tenemos que x = 7 yejecutamoslainstrucciónp=a.anterior(x),entoncespquedaravaliendo8.

Elmétodorecorre(),comosunombrelodice,simplementerecorreyescribelosdatosdeunalistasimplementeligada.Siejecutamoslainstruccióna.Recorre(),elresultadoqueseobtieneeslaescrituradeb,e,i,o,u.

LafunciónbuscaDondeInsertar(d)retornaelnodoacontinuacióndelcualsedebeinsertarunnuevonodocondatodenunalistasimplementeligadaenlaquelosdatosestánordenadosascendentementeydebencontinuarcumpliendoestacaracterísticadespuésdeinsertarlo.Presentemosalgunosejemplos:

y=a.BuscaDondeInsertar(“f”)entoncesyquedavaliendo8.

y=a.BuscaDondeInsertar(“z”)entoncesyquedavaliendo5.

y=a.BuscaDondeInsertar(“a”)entoncesyquedavaliendonull.

Page 50: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

50 ALGORITMOS II INGENIERIA DE SISTEMAS

Elmétodoinsertar(d,y)consigueunnuevonodoSimple,locargaconeldatodeinvocaelmétodoconectarconel fin de conectar el nuevo nodo (llamémoslo x) a continuación del nodo y. Si ejecutamos las siguientesinstrucciones:

d=“f”

y=a.BuscaDondeInsertar(d)

a.Insertar(d,y)

Elobjetoa,quedaraasí:

Elmétodoconectarsimplementeconectaelnodoxacontinuacióndelnodoy,talcomoseveenlafiguraanterior.

LafunciónbuscarDato(d,y),comosunombrelodice,buscaeldatodenlalistainvocaelmétodo:siloencuentra,retorna el nodo en el cual lo encontró; de lo contrario, retorna null. En el parámetro y, el cual debe ser unparámetroporreferencia,retornaelnodoanterioralnodoenelcualencontróeldatod.algunosejemplosson:

x=a.buscarDato(“f”,y)entoncesxquedavaliendo9yyquedavaliendo8.

x=a.buscarDato(“u”,y)entoncesxquedavaliendo5yyquedavaliendo3.

x=a.buscarDato(“b”,y)entoncesxquedavaliendo4yyquedavaliendonull.

x=a.buscarDato(“m”,y)entoncesxquedavaliendonullyyquedavaliendoúltimo,esdecir5.

Elmétodoborrar(x,y)controlaqueelparámetroxseadiferentedenull:sixesnullproduceelmensajedequeeldatod(eldatobuscadoconelmétodobuscarDato)nosehallaenlalistayretorna;sixesdiferentedenull,invocaelmétododesconectar(x,y).

Elmétododesconectar(x,y)simplementedesconectaelnodoxdelalistaqueinvocaelmétodo.Paradesconectarunnododeunalistasenecesitaconocercuáleselnodoanterior.Porlotanto,elnodoy,elsegundoparámetro,eselnodoanteriorax.siejecutamoslassiguientesinstrucciones:

d=“i”

x=a.buscarDato(d,y)//xquedavaliendo7yyquedavaliendo9

a.Borrar(x,y)//desconectaelnodox

Estaquedaasí:

Page 51: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

51 ALGORITMOS II INGENIERIA DE SISTEMAS

ElmétodoordenaAscendentemente(),comosunombrelodice,reorganizalosnodosdeunalistasimplemente

ligada,detalmaneraquelosdatosenellaquedenordenadosascendentemente.

Sitenemoslasiguientelista:

Yejecutamoslainstruccióna.ordenaAscendentemente(),lalistaquedaraasí:

Observeque losdatosnosehanmovido,son losnodos losquehancambiadodeposiciónyporconsiguienteprimeroyúltimohanvariado.

Asegúresedeentenderbienqueesloquehacecadamétodo.Siustedconocebienloquehacecadamétodo,

podráusarlosapropiadamente;delocontrario,no.Comoingenierodesistemas,debesabercómousarlos

métodosdeunaclaseyademáscomoimplementarlos.

3.3.2 IMPLEMENTACIÓN DE LOS MÉTODOS DE LA CLASE LISTA SIMPLEMENTE LIGADA

Elconstructor:

LSL()

Primero=ultimo=null

Page 52: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

52 ALGORITMOS II INGENIERIA DE SISTEMAS

end(LSL)

Simplementeinicializalosdatosprivadosprimeroyúltimoennull.

BooleanesVacía()

Returnprimero==null

end(esVacía)

RecuerdequetantoCcomoenjavalainstalación

returnx==y

Esequivalentea:

if(x==y)

returntrue

else

returnfalse

nodoSimpleprimerNodo()

returnprimero

end(primero)

nodoSimpleultimoNodo()

returnultimo

end(ultimo)

booleanfinDeRecorrido(nodoSimplex)

returnx==null

end(finDeRecorrido)

1. voidrecorre()

2. nodoSimplep

3. p=primerNodo()

4. whilenofinDeRecorrido(p)do

5. Write(p.retornaDato())

Page 53: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

53 ALGORITMOS II INGENIERIA DE SISTEMAS

6. p=p.retornaLiga()

7. end(while)

8. end(Método)

Pararecorreryescribirlosdatosdeunalistasimplementeligadaserequiereunavariableauxiliar,lacualllamamosp.dichavariableseinicializaconelprimernododelalistasimplementeligada(instrucción3delmétodoanterior)y luego planteamos un ciclo (instrucciones 4 a 7), el cual se ejecutamientras p sea diferente a null (métodofinDeRecorrido()).Cuandopseanullsesaledelcicloyterminalatarea.Observeque,siporalgunarazónelobjetoque invocaestemétodotiene la listavacía,nuestrométodofuncionacorrectamente.Simplementenoescribenada.Esdecir,lainstrucción4secontrolandossituaciones:listavacíayfinderecorrido.

3.3.3 PROCESO DE INSERCIÓN DE UN DATO EN UNA LISTA SIMPLEMENTE LIGADA

Para insertar un dato d en una lista ligada hemos definido tres métodos en nuestra clase LSL:buscarDondeInsertar(d),insertar(d,y)yconectar(x,y).Analicemoscadaunodeellos.Esimportanterecordarqueenesteprocesodeinserciónserequierequelosdatosdelalistasehallenordenadosenformaascendente.

Consideremoslasiguientelistayquesedeseainsertareldato“g”.Loprimeroquesedebehaceresdeterminarenquésitiodebequedarlaletra“g”paraquesecumplaquelosdatoscontinúenordenadosenformaascendente.Porobservación,nosdamoscuentadequela“g”debequedarentrela“f”yla“o”,esdecir,acontinuacióndelnodo9.

Nuestroprimermétodo,buscaDondeInsertar(d),efectúalatareaquedeterminaacontinuacióndecualnododebequedareldatoainsertar.Elmétodoparaestatareaes:

1. nodoSimplebuscaDondeInsertar(Objetod)

2. nodoSimplep,y

3. p=primerNodo()

4. y=anterior(p)

5. while(nofinDeRecorrido(p)andp.retornaDato()<d)do

6. y=p

7. p=p.retornaLiga()

8. end(while)

9. returny

Page 54: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

54 ALGORITMOS II INGENIERIA DE SISTEMAS

10. end(buscaDondeInsertar)

Enestemétodoserequierendosvariablesauxiliares,lascualesllamamospyy.conlavariablepserecorreyamedidaquelavamosrecorriendosevacomparandoeldatodep(p.retornaDato())coneldatodquesedeseainsertar.Mientrasqueeldatodepseamenorquedseavanzaenlalistaconpycony.lavariableysiempreestaráapuntandohaciaap.comoinicialmentepeselprimernodo,inicialmenteyesnull.Fíjesequesieldatodainsertaresmenorqueeldatodelprimernododelalistasimplementeligadanuestrométodoretornanull.Elhechodequenuestrométodoretornenullsignificaqueeldatoainsertarvaaquedardeprimeroenlalista.

VeamosahoracomoeselalgoritmoparanuestrométodoInsertar(d,y):

1. voidinsertar(Objetod,nodoSimpley)2. nodoSimplex3. x=nodoSimple(d)4. conectar(x,y)5. end(Método)

Nuestro método insertar consigue simplemente un nuevo nodo, lo carga con el dato d e invoca el métodoconectar.Elparámetroyserefierealnodoacontinuacióndelcualhabráqueconectarelnuevox.

Ocupémonosdelmétodoconectar(x,y):

Caso1:

Alejecutary=buscaDondeInsertar(d)cond=“g”enelobjetodelafiguraanterioryelmétodoinsertar(d,y),estamosenlasituaciónmostradaenlafigurasiguiente:

Conectarelnodoxacontinuacióndelnodoyimplicaquecuandolleguemosalnodoydebemostrasladarlohaciaelnodox,oseaqueelcampodeligadelnodoydebequedarvaliendo6,ycuandoestemosenelnodoxdebemostrasladarnoshaciaelnodo3,esdecir,queelcampoligadelnodoxdebequedarvaliendo3.Oseaque,hayquemodificardoscamposdeliga:elcampodeligadelnodoyyelcampodeligadelnodox.paralograrestodebemosejecutarlassiguientesinstrucciones:

Page 55: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

55 ALGORITMOS II INGENIERIA DE SISTEMAS

y.asignaLiga(y.retornaLiga())//modificaelcampodeligadelnodox

y.asignaLiga(x)//modificaelcampodeligadelnodoy

Ylalistaquedaasí:

Ycomosepodráobservar,sehainsertadoelnodoxacontinuacióndelnodoy

Caso2:

Consideremosqueeldatoainsertaresd=“z”.Alejecutary=buscaDondeInsertar(d),yelmétodoinsertar(d,y),estamosenlasiguientesituación:

Conectarxacontinuacióndeyselograconlasmismasinstruccionesdelcaso1,teniendoencuentaquecomoel datoque se inserta quedadeultimohayque actualizar la variable último. Lo anterior significa que lasinstruccionesparaconectarxacontinuacióndeyserán:

y.asignaLiga(y.retornaLiga())//modificaelcampodeligadelnodox

y.asignaLiga(x)//modificaelcampodeligadelnodoy

if(y==ultimo)then

ultimo=x

end(if)

Ylalistaquedaasí:

Page 56: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

56 ALGORITMOS II INGENIERIA DE SISTEMAS

Caso3:

Consideremosqueeldatoainsertaresd=“a”.alejecutary=buscaDondeInsertar(d)yelmétodoinsertar(d,y),estamosenlasituaciónmostrada:

Enestasituación,cuandolayesnull,esdecirqueeldatoainsertarquedaradeprimero,hayquemodificarelcampodelaligaxylavariableprimero:

y.asignaLiga(primero)

primero=x

Pero hay que tener en cuenta que la lista pudo haber estado vacía. Si esa fuera la situación habría queactualizar también la variable última. Considerando estas situaciones, las instrucciones completas paraconectarunnodoxalprincipiodelalistason:

y.asignaLiga(primero)

if(primero==null)then

ultimo=null

end(if)

primero=x

Elalgoritmocompletoparaelmétodoconectarconsistesimplementeenagruparlasinstruccionesdescritasparacadaunodeloscasosenunsolométodo.Dichométodosepresentaacontinuación:enlasinstrucciones2a7seconsideranloscasos1y2,mientrasqueenlasinstrucciones9a13seconsideraelcaso3:

1. voidconectar(nodoSimplex,nodoSimpley)

Page 57: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

57 ALGORITMOS II INGENIERIA DE SISTEMAS

2. if(¡y!=null)then

3. y.asignaLiga(y.retornaLiga())

4. y.asignaLiga(x)

5. if(y==ultimo)then

6. ultimo=x

7. end(if)

8. Else

9. y.asignaLiga(primero)

10. if(primero==null)then

11. ultimo=x

12. end(if)13. primero=x

14. end(if)15. end(Método)

3.3.4 PROCESO DE BORRADO DE UN DATO EN UNA LISTA SIMPLEMENTE LIGADA

Borrarundatodeunalistasimplementeligadaconsisteenubicarelnodoenelcualsehallaeldatoydesconectarlodelista.ParaellohemosdefinidotresmétodosquehemosllamadobuscarDato(d,y),borrar(x,y)ydesconectarlo(x,y).

Sitenemoslasiguientelista:

Yqueremosborrarelnodoquecontienelaletra“f”,loprimeroquedebemoshaceresdeterminarencualnodosehallalaletra“f”ycuálessunodoanterior.EstatareaseefectúaconelmétodobuscarDato(d,y):ejecutamoslainstrucción

x=a.buscarDato(d,y)

Yestamosenestasituación:

Page 58: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

58 ALGORITMOS II INGENIERIA DE SISTEMAS

El algoritmo correspondiente almétodo buscar Dato (d, y) es similar almétodo buscarDondeInsertar(d) y lopresentamosacontinuación.

1. nodoSimplebuscarDato(Objetod,nodoSimpley)2. nodoSimplex3. x=primerNodo()4. y=anterior(x)5. while(nofinDeRecorrido(x)andx.retornaDato())!=ddo6. y=x7. x=x.retornaLiga()8. end(while)9. returnx10. end(buscarDato)

Utilizamoslavariablexpararecorrerlalistaeircomparandoeldatodelnodoxcond.deesteciclo,instrucciones5a8,sesalecuandoencuentreocuandohayaterminadoderecorrerlalista.Observequecuandoeldatoquesebuscanosehallaenla listaelparámetroyquedavaliendoúltimo.Además,cuandoeldatoquesebuscaeselprimerdatodelalista,lavariableyquedavaliendonull.

Nuestrométodoborrar(x,y)consistesimplementeencontrolarqueelnodoxseadiferentedenull.Sielnodoxesnullsignificaqueeldatonoseencontróenlalista;porconsiguiente,nohayningúnnodoparadesconectar,entoncesproduceelmensajecorrespondienteyretornaalprogramallamantepuestoquenohaynadamásquehacer.Sixesdiferentedenullseinvocaelmétododesconectar.Elalgoritmocorrespondienteadichométodose

presentaacontinuación:

voidborrar(nodoSimplex,nodoSimpley)

ifx==nullthen

write(“datonoexiste”)

return

end(if)

desconectar(x,y)

end(Método)

Page 59: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

59 ALGORITMOS II INGENIERIA DE SISTEMAS

Analicemosahoralasinstruccionescorrespondientesalmétododesconectar(x,y).

Caso1:

Es la situaciónmostradaen la figuraanterior. Loúnicoquehayquehacerparadesconectarel nodo xesmodificarelcampodeligadelnodoy,asignándoleloquehayenelcampoligadelnodox.estoselograconlasiguienteinstrucción:

y.asignaLiga(x.retornaLiga())

Caso2:

Sieldatoaborraresd=“z”,alejecutarlainstrucción

x=a.buscarDato(d,y)

Lasituaciónes:

Porconsiguiente,cuandosedesconecteelnodoxlavariableúltimadebequedarvaliendoyylasinstruccionesserán:

y.asignaLiga(x.retornaLiga())

if(x==ultimo)then

ultimo=y

end(if)

Caso3:

Sieldatoaborraresd=“b”alejecutarlainstrucción

x=a.buscarDato(d,y)

Lasituaciónes:

Page 60: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

60 ALGORITMOS II INGENIERIA DE SISTEMAS

Conlavariableyvaliendonull.

Enestasituaciónloquehayquehaceresactualizarlavariableprimero:aprimeroseleasignaloquehayaenelcampodeligaprimero.Hayquetenerencuentaquepuedesucederquelalistasolohubieratenidounnodo;eneste caso la variable primero quedará valiendonull, y por lo tanto la variable ultimo también deberá quedarvaliendonull.Lasinstruccionespararesolverestecasoson:

primero=primero.retornaLiga()

if(primero==null)then

ultimo=null

end(if)

Agrupandolasinstruccionescorrespondientesalostrescasosenunsoloalgoritmoobtenemos:

1. voiddesconectar(nodoSimplex,nodoSimpley)

2. if(x!=primero)then

3. y.asignaLiga(x.retornaLiga())

4. if(x==ultimo)then

5. ultimo=y

6. end(if)

7. else

8. primero=primero.retornaLiga()

9. if(primero==null)then

10. ultimo=null

11. end(if)12. end(if)13. end(Método)

Page 61: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

61 ALGORITMOS II INGENIERIA DE SISTEMAS

Enlasinstrucciones2a6seresuelveparaloscasos1y2,mientrasqueenlasinstrucciones8a11seresuelveparaelcaso3.

Los métodos para conectar y desconectar son métodos con orden de magnitud 0(1), lo cual mejora

sustancialmenteestasoperacionesconrespectoalarepresentacióndedatosenunvector.

3.3.5 ORDENAMIENTO DE DATOS EN UNA LISTA SIMPLEMENTE LIGADA

Presentemosacontinuaciónunmétodoqueutilizaelmétodoselección,elcual,seenunciaasí:“delosdatosquefaltanporordenar,determinecuáleselmenorycolocarlodeprimeroeneseconjuntodedatos”.

1. voidOrdenaAscendentemente()

2. nodoSimplep,ap.,menor,amenor,q,aq

3. p=primerNodo()

4. ap.=anterior(p)

5. while(¡p!=ultimoNodo())

6. menor=p

7. amenor=ap.

8. q=p.retornaLiga

9. aq=p

10. while(nofinDeRecorrido(q))11. if(q.retornaDato()<menor.RetornaDato())

12. menor=q

13. amenor=aq

14. end(if)15. aq=q16. q=q.retornaLiga()17. end(while)18. if(menor==p)

19. ap.=p20. p=p.retornaLiga()21. else22. desconectar(menor,amenor)

23. conectar(menor,ap.)

24. ap.=menor

25. end(if)26. end(while)27. end(Método)

Page 62: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

62 ALGORITMOS II INGENIERIA DE SISTEMAS

Conbaseenesteenunciadodefinimoslasvariablesnecesariasparaelaborarelmétodo.Serequiereunavariablequeindiqueapartirdecualnodofaltandatosporordenar.Dichavariablelallamamosp.inicialmentepapuntahaciaelprimernodoyaquealprincipiofaltantodoslosdatosporordenar.Serequiereotravariablepararecorrerlalistaeircomparandolosdatosparadeterminarencualnodosehallaelmenordato.Estavariablelallamamosq. y por ultimo requerimos otra variable que apunte hacia el nodo que tiene elmenor dato. Esta variable lallamamosmenor.

Nuestrométodoconsistiráentoncesendeterminarcuáleselnodoquetieneelmenordatoentrelosdatosquefaltanporordenar;desconectamoselnododeesesitioyloconectamosalprincipiodeeseconjuntodedatos.

Comoyahemosvisto,paraefectuarlasoperacionesdeconexiónydesconexiónserequiereconocerlosregistrosanterioresalosnodosconloscualessedeseanejecutardichasoperaciones;porlotanto,definimosotrastresvariables que llamaremos ap., aq y a menor, las cuales apuntan hacia los nodos anteriores a p, q y menorrespectivamente.

Enlainstrucción5definimoselcicloprincipaldelciclo.Elmétodoterminaracuandopesteapuntandohaciaelúltimonododelalista,puestoquecuandopesteapuntandohaciaesenodosignificaquesolofaltaundatoporordenar,yunsolodatoestaordenado.

Enlasinstrucciones6y7asignamoslosvaloresinicialesdemenoryamenor.Inicialmenteconsideramosqueelmenordatoeselprincipiodelconjuntodedatosquefaltanporordenar,esdecir,p.

Enlasinstrucciones8y9seasignanlosvaloresinicialesdeqyaq.

Enlasinstrucciones10a17seefectúaelcicloparadeterminarcuáleselnodoquecontieneelmenordato.Secompara el dato de nodo q con el dato del nodomenor. Si el dato de q es menor que el dato de menor,actualizaremosmenorysuinterior.Cualquieraquehubierasidoelresultadoavanzamosconqysuanterior.

Enlainstrucción18confrontamosencualposiciónestáelnododetieneelmenordato.Sielmenordatoestabadeprimeroeneseconjuntodedatos,esdecir,enp,simplementeavanzamosconpysuanterior(instrucciones19y20);delocontrario,desconectamoselnodomenor,cuyoanterioresamenor,yloconectamosacontinuacióndeap.(instrucciones22y23).Dehaberocurridoestoúltimo,elanteriorap,esdecirap.,yaesmenor(instrucción24).

3.3.6 MÉTODO ANTERIOR(X) Yahemosdefinidoquenuestrométododenominadoanterior(x) retornaraelnodoanterioralnodoxenviadocomoparámetro.Paraellobastaraconrecorrerlalistasimplementeligadautilizandodosvariablesauxiliares:una(llamémoslap)quesevacomparandoconx,yotraquesiempreapuntarahaciaelnodoanteriorax(llamémoslay).cuandopseaigualax,simplementeseretornay.inicialmenteseráelprimernodoyyseránull.Nuestrométodoeselsiguiente:

nodoSimpleanterior(x)

nodoSimplep,y

Page 63: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

63 ALGORITMOS II INGENIERIA DE SISTEMAS

p=primerNodo()

y=null

while(¡p!=x)do

y=p

p=p.retornaLiga()

end(while)

returny

end(anterior)

3.3.7 CONSTRUCCIÓN DE LISTAS SIMPLEMENTE LIGADAS Pasemosahoraaconsiderarcomoconstruirlistassimplementeligadas.Básicamentehaytresformasdehacerlo:una,quelosdatosquedenordenadosascendentementeamedidaquelalistasevaconstruyendo;otra,insertandonodossiemprealfinaldelalista;yunatercera,insertandolosnodossiemprealprincipiodelalista.

Paralaprimeraformadeconstrucción(quelosdatosquedenordenadosascendentementeamedidaquesevaconstruyendolalista),unmétodogenerales:

LSLa

a=newLSL()

Mientrashayadatosporleerhaga

Lea(d)

y=a.BuscaDondeInsertar(d)

a.Insertar(d,y)

end(mientras)

Esdecir,bastaconplantearuncicloparalalecturadedatoseinvocarlosmétodosparabuscardondeinsertareinsertardesarrolladospreviamente.

Paralasegundaformadeconstrucción(insertandonodossiemprealfinaldelalista),unmétodoes:

LSLa

nodoSimple

Page 64: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

64 ALGORITMOS II INGENIERIA DE SISTEMAS

a=newLSL()

mientrashayadatosporleerhaga

lead(d)

y=a.ultimoNodo()

a.Insertar(d,y)

end(mientras)

Nuevamenteseplanteauncicloparalalecturadedatosycadavezqueseleaundatosedeterminaelúltimoyseinvocaelmétodoparainsertar.

Paralaterceraformadeconstrucción(insertandonodossiemprealprincipiodelalista),nuestrométodoes:

LSLa

a=newLSL

Mientrashayadatosporleerhaga

lead(d)

a.Insertar(d,null)

end(mientras)

Aquí, basta con plantear el ciclo para lectura de datos e invocar el método insertar enviado como segundoparámetronull.Recuerdequenuestrométodoinsertar(d,y)insertaunnodocondatodacontinuacióndey:siyesnullsignificaqueeldatodquedaradeprimero.

3.3.8 DIFERENTES TIPOS DE LISTAS SIMPLEMENTE LIGADAS Y SUS CARACTERÍSTICAS

Comencemospresentandográficamentelosdiferentestiposdelistaquesepuedenconstruir:

Listassimplementeligadas:

Page 65: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

65 ALGORITMOS II INGENIERIA DE SISTEMAS

Listassimplementeligadascirculares:

Listassimplementeligadascircularesconnodocabeza:

Listassimplementeligadasconnodocabeza:

3.4 TEMA 3 LISTA DOBLEMENTE LIGADAS Laslistasdoblementeligadassonestructurasquepermitenmanejarlainformacióndeformadinámica,dondeelespaciodondeseguardalainformaciónesunnodo,queesunadireccióndememoriadivididaentrespartes,unaparteparaguardarlainformación,otraparaladirecciónalsiguientenodoylaotraparaapuntaralnodoanterior,conestaslistassepuedenrealizarlasoperacionesdeinsertar,borrar,buscar,ordenarytodobajoelconceptodememoriadinámica.

Page 66: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

66 ALGORITMOS II INGENIERIA DE SISTEMAS

3.4.1 DEFINICIÓN DE CARACTERÍSTICAS Unnododobleesunregistroquetienedoscamposdeliga:unoquellamaremosLi(Ligaizquierda)yotroquellamaremosLd(Ligaderecha).Undibujopararepresentardichonodoes:

LIGAIZQUIERDA ÁREADEDATOS LIGADERECHA

Donde:

Li:apuntahaciaelnodoanterior.

Ld:apuntahaciaelnodosiguiente.

ConbaseenestovamosadefinirunaclasequellamaremosnodoDoble:

1. CLASEnodoDoble

2. Privado

3. Objetodato

4. nodoDobleLi,Ld

5. publico

6. nodoDoble(objetod)//constructor

7. voidasignaDato(objetod)

8. voidasignaLd(nodoDoblex)

9. voidasignaLi(nodoDoblex)

10. objetoretornaDato()

11. nodoDobleretornaLd()

12. nodoDobleretornaLi()

13. end(Clase)

Losalgoritmoscorrespondientesacadaunodeestosmétodossonlossiguientes:

Page 67: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

67 ALGORITMOS II INGENIERIA DE SISTEMAS

1. nodoDoble(objetod)//constructor

2. dato=d

3. Ld=null

4. Li=null

5. end(nodoDoble)

1. voidasignaDato(objetod)

2. dato=d

3. end(Método)

1. voidasignaLd(nodoDoblex)

2. Ld.=x

3. end(asignaLd)

1. voidasignaLi(nodoDoblex)

2. Li=x

3. end(asignaLi)

1. objetoretornaDato()

2. returndato

3. end(retornaDato)

1. nodoDobleretorna(Li)

2. returnLi

3. end(retornaLi)

Page 68: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

68 ALGORITMOS II INGENIERIA DE SISTEMAS

1. nodoDobleLd()

2. returnLd

3. end(retornaLd)

Teniendo definida esta clase, procedemos a desarrollar unmétodo en el cual hagamos uso de ella y de sus

métodos.Consideremosquesetieneelconjuntodedatosb,e, i,o,u,yquenuestrométodolos leeráeneseorden:

1. nodoDoblew,x,y,z

2. read(d)

3. w=newnodoDoble(d)

4. read(d)

5. x=newnodoDoble(d)

6. read(d)

7. y=newnodoDoble(d)

8. read(d)

9. z=newnodoDoble(d)Alejecutarestasinstruccioneselescenarioqueseobtieneeselsiguiente:

Continuemosnuestroalgoritmoconestasinstrucciones:

10. w.asignaLd(x)11. x.asignaLi(w)12. x.asignaLd(y)13. y.asignaLi(x)14. y.AsignaLd(z)15. z.asignaLi(y)

Alejecutarestasinstruccionesnuestroescenarioes:

FíjesequeelcampoLddelnodowquedovaliendo2,envirtuddelainstrucción10,locualindicaqueelnodosiguienteawesel2;elcampoLidex(elnodo2)quedovaliendo6,envirtuddelainstrucción11,locualsignifica

Page 69: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

69 ALGORITMOS II INGENIERIA DE SISTEMAS

queelnodoanterioraxesel6;elcampoLddelnodoxquedovaliendo7,envirtuddelainstrucción12,locualquieredecirqueelnodosiguienteaxesel7.DeunaformasimilarsehanactualizadoloscamposLiyLddelosnodosyyz.Asegúresedeentenderbienelescenarioactual.

Continuemosejecutandolassiguientesinstrucciones:

16. w=null17. y=null18. z=null

Enestemomentonuestrasituaciónes:

Ahoraejecutemosestasotrasinstrucciones:

19. read(d)20. y=newnodoDoble(d)21. y.AsignaLd(x.retornaLd())22. y.asignaLi(x)23. y.RetornaLd().asignaLi(y)24. x.asignaLd(y)

Lasituaciónquedaasí:

Ahora,alejecutarestainstrucción:

25. y=nullLanuevasituaciónes:

Porúltimo,ejecutemosestasotrasinstrucciones:

Page 70: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

70 ALGORITMOS II INGENIERIA DE SISTEMAS

26. x.retornaLi().asignaLd(x.retornaLd())27. x.retornaLd().asignaLi(x.retornaLi())

Ynuestrosnodosquedanasí:

Fíjesequeel resultadodeejecutar las instrucciones26y27fueeliminarelnodox.unasde instruccionesqueharíanlamismatareaquelasinstrucciones26y27son:

1. p=retornaLi()

2. q=x.retornaLd()

3. p.asignaLd(q)

4. q.asignaLi(p)Silohubiéramoshechodeesemodo,lalistaquedaríaasí:

Esmuyimportanteentenderquelasinstrucciones26y27ejecutanlamismatareaquelasinstrucciones1,2,3y4mostradasacontinuacióndeellas.

3.4.2 PROPIEDAD FUNDAMENTAL DE LAS LISTAS DOBLEMENTE LIGADAS

Esimportanteveraquíloqueseconocecomolapropiedadfundamentaldelaslistasdoblementeligadasyaqueestábasadaenlascaracterísticasdeloscamposdeligadelosnodosdobles.Paraello,consideremoslossiguientestresregistrosconsecutivos:

Page 71: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

71 ALGORITMOS II INGENIERIA DE SISTEMAS

Elcampodelaligaizquierdadelnodoxvale9,locualindicaqueelnodoanterioreselnodo9;porlotanto,elnodo9eselnodoretornaLi().

Elcampodeligaderechadelnodoxvale5,locualindicaqueelnodosiguienteeselnodo5;porconsiguiente,elnodo5eselnodox.retornaLd().

Elnodox.retornaLi()tieneuncampodeligaderecha,elcualvale7,esdecir,elmismonodox.

Elnodox.retornaLd()tieneuncampodeligaizquierda,elcualtambiénvale7,esdecir,elnodox.

Dadoloanterior,setieneque:

x.retornaLi().retornaLd()==x==x.retornaLd().retornaLi()

Estacaracterísticaseconocecomola“propiedadfundamentaldelaslistasdoblementeligadas”,yesdesupremaimportanciaentenderlabienconel findemanipularapropiadamente losobjetosde la clase listadoblementeligada.

3.4.3 EJERCICIOS DE ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Paradesarrollarcadaunodeesosejercicios,debestenermuyclaroelconceptodenodoy la formadecómovasaestructurarelnodo.Recuerdaque,para listassimplementeligadaselnodosecomponededospartes,unapartededatosyunapartedeliga;paralas listasdoblemente ligadaselnodoseconformadetrespartes,unapartededato,ydospartesde ligas,una ligaqueapuntaalnodoanterioryunaligaqueapuntaalnodosiguiente.

1.Elaboreunmétodoqueleaunenteronyqueconstruyaunalistasimplementeligada,deadigitopornodo.

2.Elaboreunmétodoqueborredeunalistasimplementeligadaundatodadotodaslasvecesqueloencuentre.

3.Setieneunalistasimplementeligada,conundatonuméricoencadanodo.Elaboreunmétodoquedetermineeimprimaelpromediodedatosdelalista.

4.Elaboreunmétodoqueintercambielosregistrosdeunalistadoblementeligadaasí:elprimeroconelúltimo,elsegundoconelpenúltimo,elterceroconelantepenúltimo,yasísucesivamente.

5.Elaboreunmétodoqueintercambielosregistrosdeunalistadoblementeligadaasí:elprimeroconeltercero,elsegundoconelcuarto,elquintoconelséptimo,elsextoconeloctavo,yasísucesivamente.

Page 72: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

72 ALGORITMOS II INGENIERIA DE SISTEMAS

4 UNIDAD 3 MANEJO DE HILERAS DE CARACTERES

ProgramaciónenC-MANEJODECADENAS-Parte1:Enlace

4.1.1 RELACIÓN DE CONCEPTOS

Hileras:Esuntipodedatoconstruidoconbasealtipoprimitivochar.

Page 73: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

73 ALGORITMOS II INGENIERIA DE SISTEMAS

Asignación:Consisteenasignarleaunavariableunahileradecaracteres.

Longitud:Consisteenverificarlacantidaddecaracteresdelacualsecomponelahilera.

Subhilera:Partequesetomadeunahilera.

Concatenar:Consisteenunirunahileraapartirdeotra.

Posición:Consisteendeterminar,apartirdecualposicióndeunahilerax,seencuentraunahileray;siesqueseencuentra.

Insertar:Estemétodoconsisteeninsertarunahilerax,apartirdelcarácteri,delahileray.

Borrar:Estemétodoconsiste,apartirdelaposiciónidelahilerax,borrajcaracteres.

Reemplazar:Estemétodoconsistequeapartirdelaposiciónidelahilerax,reemplazajcaracteresporunacopiadelahileray.

4.2 TEMA 1 DEFINICIÓN Lashilerasesunobjetodedatoscompuestos,construidosconbaseeneltipoprimitivochar,sumayorapariciónfuecuandoempezaronaaparecerlosprocesadoresdetextos.

4.3 TEMA 2 OPERACIONES CON HILERAS Las operaciones que podemos hacer con cadenas son las operaciones de asignación, longitud, subhilera,concatenar, insertar, borrar, reemplazar y posición en una cadena.Consideremosahoralasoperacionesbásicasquesepuedenejecutarconhileras.Definamosunaclasehileraconsusoperaciones:

1. CLASE Hilera 2. Publico 3. entero longitud () 4. hilera subHilera (entero i, entero j) 5. hilera concat (hilera s) 6. void inserte (hileras, entero j) 7. void borre (entero i, entero j) 8. void replace (entero i, entero j, hilera s) 9. entero posición (hilera s)

Page 74: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

74 ALGORITMOS II INGENIERIA DE SISTEMAS

10. end(Clase)

4.3.1 ASIGNACIÓN Enelladoizquierdotendremoselnombredelavariablealacualseleasignaunahileradada.Enelladoderechosetendráunahileraounavariabletipohilera.Porejemplo,siS,T,UyVsonvariablestipohilerapodemostenerlassiguientesinstrucciones:

S=“abc”

T=“def.”

U=T

V=“”

EnelprimerejemplolavariableScontendrálahilera“abc”.

EnelsegundoejemplolavariableTcontendrálahilera“def”.

EneltercerejemplolavariableUcontendrálahilera“def”.

EnelcuartoejemplolavariableVcontendrálahileravacía.

4.3.2 FUNCIÓN LONGITUD Formageneral:longitud(S)

EstafunciónretornaelnúmerodecaracteresquetienelahileraS.porejemplo,sitenemosS=“mazamorra”yejecutamoslainstrucción:

n=S.longitud()

Lavariablenquedaravaliendo9.

4.3.3 FUNCIÓN SUBHILERA Formageneral:T=S.subHilera(i,j),con1≤i≤i+j–1≤n

SiendonlalongituddelahileraS.

Page 75: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

75 ALGORITMOS II INGENIERIA DE SISTEMAS

Estafunción,apartirdelaposiciónidelahileraS,extraejcaracterescreandounanuevahileraydejandointactalahileraoriginalS.porejemplo,sitenemosS=“mazamorra”yejecutamoslainstrucción:

T=S.subHilera(4,5)

LavariableTquedaravaliendo“amorr”.

4.3.4 FUNCIÓN CONCATENAR Formageneral:U=S.Concat(T)

Esta función crea una copia de la hilera S y a continuación agrega una copia de la hilera T. las hileras S y Tpermanecenintactas.Porejemplo,siS=“nacio”yT“nal”yejecutamoslainstrucción:

U=S.concat(T)

LavariableUquedaraconteniendolahilera“nacional”.

4.3.5 MÉTODO INSERTAR Formageneral:S.inserte(T,i)

EstemétodoinsertalahileraTapartirdelcarácterdelaposiciónidelahileraS.porejemplo,sitenemosS=“nal”yT=“ciona”yejecutamoslainstrucción:

S.inserte(T,3)

LahileraSquedaravaliendo“nacional”.

EsnecesarioresaltarqueenestecasolahileraSquedamodificadamientrasquelahileraTpermaneceintacta.

4.3.6 MÉTODO BORRAR Formageneral:S.borre(i,j)

Estemétodo,apartirdelaposiciónidelahileraSborrajcaracteres.Porejemplo,siS=“amotinar”yejecutamoslainstrucción:

S.borre(4,4)

Page 76: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

76 ALGORITMOS II INGENIERIA DE SISTEMAS

LahileraSquedaravaliendo“amor”.

EsbuenoanotartambiénquelahileraSquedamodificada.

4.3.7 MÉTODO REEMPLAZAR Formageneral:S.replace(i,j,T)

Estemétodo,apartirdelaposiciónidelahileraSreemplazajcaracteresporunacopiadelahileraT.porejemplo,silahileraS=“abcdf”ylahileraT=“xyz”yejecutamoslainstrucción:

S.replace(3,2,T)

LahileraSquedaravaliendo“abxyzef”.

EstemétodomodificalahileraS,mientrasquelahileraTpermaneceintacta.

4.3.8 FUNCIÓN POSICIÓN Formageneral:m=S.Posición(T)

EstafuncióndeterminaapartirdecualposicióndelahileraSseencuentralahileraT,siesqueseencuentralahilera T en la hilera S. en caso de no encontrar la hilera T en la hilera S retornara cero. Por ejemplo, si S =“mazamorra”yT=“amor”yejecutamoslainstrucción:

m=posición(T)

Lavariablemquedaravaliendo4.

Lasoperacionesaquídescritasnosproporcionanlasfacilidadesparamanipularhilerasencualquierlenguajedeprogramación.EsimportanteagregarquelenguajesdeprogramacióncomoC++yjavatraendefinidalaclasehilera(String)enlacualseimplementaunagrancantidaddevariacionescorrespondientesaestasoperaciones.

4.4 TEMA 3 EJERCICIOS DE APLICACIÓN Conlasoperacionesmencionadasenelnumeralanterior,sepuedenrealizarmuchosejemplosdeaplicación,porejemplo: cuando se tieneun textoy se solicitadeterminar cuáles la frecuenciade cadaunade las letrasdelalfabeto español, es decir, cuantas veces aparece la letra “p”, cuantas veces aparece la letra “o” y asísucesivamente.

Page 77: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

77 ALGORITMOS II INGENIERIA DE SISTEMAS

4.4.1 APLICACIÓN DE LA CLASE HILERA Pasemosaconsiderarejemplosdeaplicaciónconlasfuncionesanteriormentedefinidas.

Empecemosconsiderandounejercicioenelcualnossolicitandeterminarcuáleslafrecuenciadecadaunadelasletrasdelalfabetoespañolenundeterminadotextodado,esdecir,cuantasvecesseaparecela“a”cuantasvecesaparecela“b”yasísucesivamente.

Llamemostextolavariableenlacualhayquehacerdichaevaluación.Paradesarrollardichométodoutilizaremosunavariablellamadaalfabeto,queesunavariabletipohilerayquedefiniremosasí:

alfabeto=“abcdefghijklmnñopqrstuvwxyz”

Utilizaremosunvectorde27posiciones,quellamaremosfrecuencia,encadaunadelascualesguardaremoselnúmerodevecesqueseencuentrealgunaletradelalfabetodefinido.Esdecir,a la letra“a” lecorrespondelaposición1delvectordefrecuencias,alaletra“b”laposición2,alaletra“c”laposición3yasísucesivamente.

Nuestrométodoconsistiráenrecorrerloscaracteresdelavariabletexto,buscandocadacarácterenlavariablealfabetoutilizandolafunciónposición;cuandolaencuentresumaremos1alaposicióncorrespondienteaesaletraenelvectordefrecuencia.

Nuestrométodoes:

1. voidfrecuenciaLetras(hileraalfabeto)

2. enterom,i,j,n

3. hileracar

4. m=alfabeto.longitude()

5. for(i=1;i<=m;i++)do

6. frecuencia[i]=0

7. end(for)

8. n=longitud()

9. for(i=1;1<=n;i++)do

10. car=subHilera(i,1)11. j=alfabeto.posicion(car)12. if(j!=0)then13. frecuencia[j]=frecuencia[j]+114. end(if)15. end(for)16. for(i=1;i<=m;i++)do

17. letra=alfabeto.SubHilera(i,1)

Page 78: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

78 ALGORITMOS II INGENIERIA DE SISTEMAS

18. write(letra,frecuencia[i])19. end(for)20. end(Método)

Consideremosahoraunmétodoenelcualnosinteresadeterminarlafrecuenciadecadapalabraqueaparezcaenuntexto.Paradesarrollardichométododebemos,primeroquetodo,identificarcadaunadelaspalabrasdeltexto.Paralograrestaidentificaciónhayquedefinircuálescaracteresseutilizancomoseparadoresdepalabras.Estoscaracterespuedensercualquiersímbolodiferentedeletra,esdecir,lacoma,elpunto,elpuntoycoma,losdospuntos,elespacioenblanco,etc.

Nuestrométodomanejaralassiguientesvariables:

VARIABLES CARACTERÍSTICAS

TEXTO Variableenlacualsehallaalmacenadoeltextoaprocesar.

PALABRAS Variables tipo vector en la cual almacenaremos cada palabra que se identifique en eltexto.

FRECUENCIA Variabletipovectorenlacualalmacenaremoselnúmerodevecesqueseencuentrecadapalabradeltexto.Unapalabraqueseencuentreenlaposiciónidelvectorpalabra,enlaposiciónidelvectorfrecuenciasehallaraelnúmerodevecesquesehaencontrado.

PALABRAHALLADA Variableenlacualalmacenaremoscadapalabraqueseidentifiqueeneltexto.

K Variableparacontarcuantaspalabrasdiferenteshayeneltexto.Lainicializamosen1.Eltotaldelaspalabrasdiferentesencontradasserák–1.

N Variablequeguardaelnúmerodecaractereseneltexto.

ALFABETO Esunahileraenviadacomoparámetros, lacualcontienelossímbolosconloscualesseconstruyenlaspalabras.

Nuestro

Page 79: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

79 ALGORITMOS II INGENIERIA DE SISTEMAS

métodoeselsiguiente:

1. voidfrecuenciaPalabras(hileraalfabeto)

2. enteroi,k,j,p,n,frecuencia[1000]

3. hileracar,palabras[1000]

4. k=1

5. for(i=1;i<=1000;i++)do

6. frecuencia[i]=0

7. end(for)

8. n=longitud()

9. i=1

10. whilei<=ndo11. car=subHilera(i,1)12. p=alfabeto.posicion(car)13. while(i<nandp==0)do14. i=i+115. car=subHilera(i,1)16. p=alfabeto.posicion(car)17. end(while)18. j=i19. while(i<nandp!=0)do20. i=i+121. car=subHilera(i,1)22. p=alfabeto.posicion(car)23. end(while)24. palabraHallada=subHilera(j,i-j)25. palabras[k]=palabraHallada26. j=127. while(palabras[j]!=palabraHallada)do28. j=j+129. end(while)30. if(j==k)then31. frecuencia[k]=132. k=k+1

Page 80: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

80 ALGORITMOS II INGENIERIA DE SISTEMAS

33. else34. frecuencia[j]=frecuencia[j]+135. end(if)36. end(while)37. k=k–138. for(i=1;i<=k;i++)do39. write(palabras[i],frecuencia[i])40. end(for)41. end(Método)

Enlainstrucción2y3sedefinenlasvariablesconlascualessevaatrabajar.

Enlasinstrucciones5a7seinicializanloscontadoresdepalabrasen0.

Enlasinstrucciones8sedeterminalalongituddeltextoaanalizar(elqueinvocoelmétodo).

Enlainstrucción9seinicializalavariableien1.Utilizamoslavariableipararecorrereltexto,carácterporcarácter,eiridentificandolasdiferentespalabrasenél.

Lasinstrucciones10a36conformanelcicloprincipaldelmétodo.

Enlasinstrucciones11a17seomitenloscaracteresquenoconformanunapalabravalida.Loscaracteresqueconformanunapalabravalidasonlosquepertenecenalalfabeto.Cadacarácterdeltextosebuscaenlahileraalfabeto(instrucciones12y16):sinoloencuentrasignificaquenoconformapalabrayporlotantosedesecha.Del ciclo de las instrucciones 13 a 17 se sale cuando encuentre un carácter que pertenezca al alfabeto. Estosignificaqueapartirdeesaposicióncomienzaunapalabra.Dichaposiciónlaguardaremosenunavariablequellamamosj(instrucción18).

Enelciclodelasinstrucciones19a23sedeterminanhastacualposiciónllegaunapalabradeesteciclosesalecuandoencuentreuncarácterquenopertenezcaalalfabeto;porconsiguiente,lapalabraserálasubhileradesdelaposiciónjhastalaposicióni–1,lacualextraeconlainstrucción24.

Enlainstrucción25sealmacenalapalabrahalladaenlaposiciónkdelvectorpalabras.Conelfindedeterminarsilapalabraalmacenadaenlaposiciónkdelvectoresprimeravezqueapareceoyaestaba,labuscamosenelvectordepalabras(instrucciones26a29)conlacertezadequelaencontraremos:siseencuentraenlaposiciónksignificaqueeslaprimeravezqueapareceyporlotantoleasignamos1alcontadordeesapalabra(instrucción31)eincrementamoslavariableken1;siencontrólapalabraenunaposicióndiferentealaposiciónksignificaquedichapalabrayasehabíaencontradoyporlotantoincrementamossurespectivocontadoren1(instrucciones34).

Por último, en las instrucciones 37 a 40 se describen las diferentes palabras encontradas con su respectivocontador.

Planteemosahoraunlogaritmoqueconsiderointeresante:reemplazarunapalabraporotraenuntextodado.

Page 81: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

81 ALGORITMOS II INGENIERIA DE SISTEMAS

Utilizaremostresvariables:

VARIABLES CARACTERÍSTICAS

TEXTO Variable que contiene el texto donde hay que hacer el reemplazo.

VIEJA Variable que contiene la hilera que hay que reemplazar.

NUEVA Variable que contiene la hilera que reemplazara la hilera vieja.

Paraentendereldesarrollodeestemétododebemosentenderlosiguiente:sitenemosuntextoS=“aabcdabcde”yT=“abc”yejecutamoslainstrucción

m=S.Posición(T)

Lavariablemquedavaliendo2.Estosignificaqueapartirdelaposición2delahileraSseencontrólahileraT,esdecir,nuestrométodoretornaelsitiodondeencuentralaprimeraocurrenciadelahileraqueseestábuscando.FíjesequeennuestrahileraSlahilera“abc”sehallaenlaposición2yenla6.

Siejecutamoslasiguienteinstrucción(fíjesequeseestábuscandolahileraTapartirdelaposición5deS):

m=S.subHilera(5,6).posición(T)(formula1)

Lavariablemtambiénquedavaliendo2.¿Porqué?LarazónesquelahileraTlabuscaraenlahileraS.subHilera(5,6),lacuales:“babcde”.

Lapreguntaes:¿estárealmentelasegundaocurrenciadelahileraTenlaposición2deS?larespuestaesno.

Siplanteamosunautilizacióndelafunciónposicióncomoenlafórmula1yqueremosdeterminarencualposicióndeScomienzalasubhileraT,alresultadoobtenidohabráquesumarlei–1,siendoielprimerparámetrodelafunciónsubHilera.Ennuestrocasoi=5.

Llamemosposinilavariableapartirdelacualseinicialabúsquedadeunahileraenunasubhileraobtenidaconlafunciónsubhilera.

Nuestrométodoes:

1. voidreemplazarViejaPorNueva(hileravieja,hileranueva)

2. v=vieja.Longitud()

Page 82: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

82 ALGORITMOS II INGENIERIA DE SISTEMAS

3. n=nueva.Longitud()

4. t=longitud()

5. posini=1

6. sw=1

7. while(sw==1)do

8. p=subHilera(posini,t–posini+1)

9. posvieja=p.posición(vieja)

10. if(posvieja>0)then

11. posreal=posvieja+posini–1

12. replace(posreal,v,nueva)

13. posini=posreal+n+1

14. t=longitud()

15. if(posini>t+v1)then

16. sw=0

17. end(if)

18. else

19. sw=0

20. end(if)

21. end(while)

22. end(Método)

Page 83: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

83 ALGORITMOS II INGENIERIA DE SISTEMAS

4.4.2 EJERCICIOS ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Paradesarrollarestosejerciciosdebetenerencuenta,todaslasfuncionesymétodosvistoseneltema.Recuerdaque,puedesutilizarunaestructuratipovectorounaestructuralistaligada;silorequiere,paradarsoluciónalosproblemas.

1. Elaboreunmétodoparadeterminarsiunahileradadaconstituyeunpalíndromoono.Unpalíndromoesuna

hileraqueseleeigualdeizquierdaaderechaquedederechaaizquierda;porejemplo:radar,reconocer,Abba.

Sumétododeberetornarverdaderosicumplelacondición,falsodelocontrario.

2. Elaboreunmétodoquedeterminesiunapalabratienemásvocalesqueconsonantesono.Sumétododebe

retornarverdaderosicumplelacondición;delocontrario,deberetornarfalso.

3. Elaboreunmétodoqueinviertatodosloscaracteresdeunahileradada.Porejemplo,silahileraes“amor”,al

ejecutarsumétododebequedarlahilera“roma”.

4. Elaboreunmétodoquedeterminesiunapalabra tiene las cincosvocalesono.Sumétododebe retornar

verdaderosicumplelacondición;delocontrario,deberetornarfalso.

Page 84: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

84 ALGORITMOS II INGENIERIA DE SISTEMAS

5 UNIDAD 4 PILAS Y COLAS

Manipulacióndeinformación.Pilasycolas:Enlace

Page 85: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

85 ALGORITMOS II INGENIERIA DE SISTEMAS

5.1.1 RELACIÓN DE CONCEPTOS

Pilas:Sonestructurasdedatosquesemanejandeformaestática,dondeserealiza lasoperacionesdeapilary

desapilar,manejandoelconceptodeúltimoenllegarprimeroensalir.

Vector:Enprogramaciónsedenominamatriz,vectoroformación(eninglésArray)aunazonadealmacenamiento

continuoquecontieneunaseriedeelementosdelmismotipo,loselementosdelamatriz.Desdeelpuntodevista

lógicounamatrizsepuedevercomounconjuntodeelementosordenadosenfila(ofilasycolumnassituviera

dos dimensiones).

Tomadode:https://es.wikipedia.org/wiki/Vector_(inform%C3%A1tica)

Listasligadas:Laslistasligadassonunamejoralternativaparaañadirinformaciónaunabasededatos;enlugar

deutilizararreglosquesonestáticospueshayquereservarmemoriaalahoradeprogramarlos,contrarioalas

listasligadasqueenunprincipionoocupanmemoriaysevareservando(creando)conformelovarequiriendo

nuestro programa. Lamemoria que ya no se utiliza se puede destruir y así ahorramosmemoria en nuestros

programas.

Tomadode:http://sergioaj.blogspot.com.co/2011/01/listas-ligadas.html

Crear:Creaunapilavacía.

Apilar:Incluyeeldatodenlapila.

Page 86: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

86 ALGORITMOS II INGENIERIA DE SISTEMAS

Desapilar:Eliminaelúltimoelementodelapilaydejaunanuevapila,lacualquedaconunelementomenos.

Cima: Retornaeldatoqueestadeúltimoenlapila,sineliminarlo.

esVacía:Retornaverdaderosilapilaestávacía:delocontrario;retornafalso.

esLlena:Retornaverdaderosilapilaestállena;delocontrario;retornafalso.

Cola:Sonestructurasdealmacenamientodedatos,dondesemanejadeformaestática,dondelaoperaciónde

inserciónsehacealfinalylasdeborradosehacealprincipio,enotraspalabras,elprimeroquellegaeselprimero

ensalir,yelúltimoenllegarseráelúltimoensalir

Crear:Creaunacolavacía.

esVacía:Retornaverdaderosilacolaestávacía;delocontrario,retornafalso.

esLlena:Retornaverdaderosilacolaestállena;delocontrario,retornafalso.

Encolar:Insertaundatodalfinaldelacola.

Desencolar:Remueveelprimerelementodelacola.

Siguiente:Retornaeldatoquesehalladeprimeroenlacola.

5.2 TEMA 1 DEFINICIÓN Sonestructurasdedatosquenotienenrepresentaciónpropiaaniveldeprogramación,paraelloseapoyanenlosvectoresyenlistasligadas,permitiendoasímanejaroperacionessobreellas.

5.3 TEMA 2 PILAS CON VECTORES Y LISTAS Las pilas como vectores son estructuras de datos que se manejan de forma estática, donde se realiza lasoperacionesdeapilarydesapilar,manejandoelconceptodeúltimoenllegarprimeroensalir.Laspilascomolistasonestructurasdedatos,perosemanejadeformadinámicaenlamemoria.

Page 87: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

87 ALGORITMOS II INGENIERIA DE SISTEMAS

5.3.1 DEFINICIÓN Una pila es una lista ordenada en la cual todas las operaciones (inserción y borrado) se efectúan en un soloextremollamadotope.EsunaestructuraLIFO(LastInputFirstOutput),quesonlasinicialesdelaspalabraseninglés“ultimoenentrarprimeroensalir”,debidoaquelosdatosalmacenadosenellaseretiranenordeninversoalquefueronentrados.

Unejemploclásicodeaplicacióndepilasencomputadoresserepresentaenelprocesodellamadasamétodosysusretornos.

Supongamosquetenemosunprogramaprincipalytresmétodos,así:

Cuandoseejecutaelprogramaprincipal,sehaceunallamadaalmétodoP1,esdecir,ocurreunainterrupciónenlaejecucióndelprogramaprincipal.Antesde iniciar laejecucióndeestemétodoseguarda ladirecciónde lainstruccióndondedeberetornaracontinuarlaejecucióndelprogramaprincipalcuandoterminedeejecutarelmétodo; llamamosL1estadirección.CuandoejecutaelmétodoP1existeuna llamadaalmétodoP2,hayunanueva interrupción,peroantesdeejecutarP2 seguarda ladirecciónde la instruccióndondedebe retornaracontinuarlaejecucióndelmétodoP1,cuandoterminedeejecutarelmétodoP2;llamamosL2estadirección.

Hastaelmomentohayguardadosdosdireccionesderetorno:

L1,L2

CuandoejecutaelmétodoP2hayllamadaaunmétodoP3,locualimplicaunanuevainterrupcióny,porende,guardarunadirecciónderetornoalmétodoP2,lacualllamamosL3.

Tenemosentoncestresdireccionesguardadas,así:

L1,L2,L3

Page 88: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

88 ALGORITMOS II INGENIERIA DE SISTEMAS

AlterminarlaejecucióndelmétodoP3retornaacontinuarejecutandoenlaúltimadirecciónqueguardo,esdecir,extraeladirecciónL3yregresaacontinuarejecutandoelmétodoP2endichainstrucción.Losdatosguardadosyason:

L1,L2

AlterminarelmétodoP2extraelaúltimadirecciónquetieneguardada,enestecasoL2,yretornaaestadirecciónacontinuarlaejecucióndelmétodoP1.

Enestemomentolosdatosguardadosson:

L1

AlterminarlaejecucióndelmétodoP1retornaraaladirecciónquetieneguardada,oseaaL1.

Obsérveseque losdatos fueronprocesadosenorden inversoalque fueronalmacenados, esdecir, últimoenentrarprimeroensalir.EnestaformadeprocesamientolaquedefineunaestructuraPILA.

Veamoscualessonlasoperacionesquedefiniremosparalaclasepila.

OPERACIONES CARACTERÍSTICAS

CREAR Creaunapilavacía.

APILAR Incluyeeldatodenlapila.

DESAPILAR Eliminaelúltimoelementodelapilaydejaunanuevapila,lacualquedaconunelementomenos.

CIMA Retornaeldatoqueestadeúltimoenlapila,sineliminarlo.

ESVACIA Retornaverdaderosilapilaestávacía:delocontrario;retornafalso.

ESLLENA Retornaverdaderosilapilaestállena;delocontrario;retornafalso.

Page 89: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

89 ALGORITMOS II INGENIERIA DE SISTEMAS

5.3.2 REPRESENTACIÓN DE PILAS EN UN VECTOR Laformamássimpleesutilizarunarreglodeunadimensiónyunavariable,quellamaremostope,queindiquelaposicióndelarregloenlacualsehallaelúltimoelementodelapila.Porconsiguiente,vamosadefinirlaclasepiladerivadade la clase vector. La variablemdenuestra clase vector funciona coma la variable tope.Definamosentonceslaclasepila.

1. CLASEPila

2. Privado:

3. ObjectV[]

4. Enterotope,n

5. Publico:

6. pila(enterom)//constructor

7. booleanesVacía()

8. booleanesLlena()

9. voidapilar(objetod)

10. objetdesapilar()

11. voiddesapilar(enteroi)

12. objetotope()

13. end(Clase)

Comohemosdefinidolaclasepiladerivadadelaclasevector,veamoscomosonlosalgoritmoscorrespondientesaestosmétodos:

1. pila(enterom)//constructor

2. V=newArray[m]

3. n=m

4. Tope=0

5. end(pila)

Page 90: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

90 ALGORITMOS II INGENIERIA DE SISTEMAS

1. booleanesVacía()

2. returntope==0

3. end(esVacía)

1. booleanesLlena()

2. returntope==n

3. end(esLlena)

1. voidApilar(objetod)

2. if(esLlena())then

3. write(“pilallena”)

4. return

5. end(if)

6. tope=tope+1

7. V[tope]=d

8. end(Método)

Apilarconsistesimplementeensumarle1atopeyllevareldatoaesaposicióndelvector:

1. objetodesapilar()

2. if(esVacía())then

3. write(“pilavacía”)

4. returnnull

5. end(if)

6. d=V[tope]

7. tope=tope-1

8. returnd

9. end(desapilar)

Estrictamentehablando,desapilarconsistesimplementeeneliminareldatoquesehallaeneltopedelapila.Sinembargo,esusualeliminarloyretornarlo.Esoesloquehacenuestroanteriormétodoparadesapilar.Elprocesodeeliminaciónconsistesimplementeenrestarle1atope.Definamos,enformapolimórfica,otrométodopara

Page 91: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

91 ALGORITMOS II INGENIERIA DE SISTEMAS

desapilar.Estenuevométodotendráunparámetroi,elcualindicaracuantoselementossedebeneliminardelapila:

1. voidDesapilar(enteroi)

2. if((tope–1)>=0)then

3. tope=tope–i

4. else

5. write(“nosepuedeneliminartantoselementos”)

6. end(if)

7. end(Método)

1. Objetocima()

2. if(esVacía())then

3. write(“pilavacía”)

4. returnnull

5. end(if)

6. returnV[tope]

7. end(cima)

5.3.3 REPRESENTACIÓN DE PILAS COMO LISTAS LIGADAS PararepresentarunapilacomolistasligadasbastadefinirlaclasepiladerivadadelaclaseLSL.Nuevamente,comoestamosdefiniendolaclasepiladerivadadelaclase.LSL,podremoshacerusodetodoslosmétodosquehemosdefinidoparaestaclaseLSL.Amododeejemplo,representemoscomolistasligadaslasiguientepila:

D

C

B

A

Pila

Page 92: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

92 ALGORITMOS II INGENIERIA DE SISTEMAS

Dibujémosladelaformacomosolemoshacerloconlaslistasligadas:

Comohemosdicholasoperacionessobreunapilasonapilarydesapilar:

apilar:consisteeninsertarunregistroalprincipiodeunalistaligada desapilar:consisteeneliminarelprimernododelalistaligadayretornareldatoquesehallabaenesenodo.

AldefinirlaclasepiladerivadadelaclaseLSLelmétodoparacontrolarpilallenayanoseutiliza.Elmétodoparalaclasepilason:

1. void Apilar (objeto d) 2. insertar (d, null) 3. end(Método)

1. Objeto desapilar () 2. If (es Vacía ()) then 3. Write(“pila vacia, no se puede desapilar”) 4. Return null 5. End(if) 6. nodoSimple p 7. p = primerNodo () 8. d = p. retornaDato () 9. borrar (p, null) 10. return d 11. end(desapilar)

Fíjesequeenlosmétodosapilarydesapilarhemosusadolosmétodosinsertaryborrar,loscualesfuerondefinidosparalaclaseLSL:

1. Objeto tope () 2. if (es Vacía ()) then

Page 93: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

93 ALGORITMOS II INGENIERIA DE SISTEMAS

3. write (“pila vacía, no hay elemento para mostrar”) 4. return null 5. end(if) 6. nodoSimple p 7. p = primerNodo () 8. return p. retornaDato 9. end(tope)

5.3.4 MANEJO DE DOS PILAS EN UN VECTOR Puestoqueesmuyfrecuentetenerquemanejarmásdeunapilaenmuchassituaciones,veremoscómomanejardospilasenunsolovector.Sineselnúmerodeelementosdelvector,dividimosinicialmenteelvectorendospartesiguales.Llamamosmlavariablequeapuntahaciaelelementodelamitad.

Laprimeramitaddelvectorseráparamanejarlapila1,ylasegundamitadparamanejarlapila2.

Cadapilarequiereunavariabletopeparaconocerenquéposiciónestáelultimodadodelapila.Llamemosestasvariablestopes1ytope2paramanejarlaspilas1y2,respectivamente.

Consideremoselsiguienteejemplo:

SeaVelvectorenelcualmanejaremoslasdospilas.Elvalordenes16.Inicialmente,elvalordemes8(lamitadden):

Lavariabletope1variarade1hastam

Lavariabletope2variaradesdem+1hastan

Lapila1estarávacíacuandotope1seaiguala0

Lapila1estarállenacuandotope1seaigualam

Lapila2estarávacíacuandotope2seaigualam

Lapila2estarállenacuandotope2seaigualan

Page 94: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

94 ALGORITMOS II INGENIERIA DE SISTEMAS

SidefinimosunaclasedenominadadosPilascuyosdatosprivadossonelvectorV,m,n,tope1ytope2,veamoscómoseránlosmétodosparamanipulardichaclase.

Consideremosprimerounmétodoparaapilarundatoenalgunadelasdospilas.Habráqueespecificarencualpilaesquesedeseaapilar.Paraelloutilizaremosunavariablellamadapila,lacualenviamoscomoparámetrodelmétodo.Sipilaesiguala1hayqueapilarenpila1,ysipilaesiguala2,hayqueapilarenpila2.Nuestrométodoserá:

1. voidApilar(enteropila,objetod)

2. If(pila==1)then

3. If(tope==m)then

4. pilaLlena(pila)

5. end(if)

6. tope1=tope1+1

7. V[tope]=d

8. else

9. If(tope2==n)then

10. pilaLlena(pila)11. end(if)12. tope2=tope2+113. V[tope2]=d14. end(if)15. end(Método)

ElmétodopilaLlenarecibecomoparámetroelvalorpila.

LatareadepilaLlenaes:sielparámetropilaes1significaquelapila1eslaqueestállena,yporlotantobuscaraespacioenlapila2;encasodequeestanoesté llena,semoveránlosdatosde lapila2unaposiciónhacia laderecha,seactualizaramyseregresaraalmétodoapilarparaapilarenlapila1.Sieslapila2laqueestállenabuscarasihayespacioenlapila1,yencasodehaberlomoverálosdatosdelapila2unaposiciónhacialaizquierda,actualizaramyregresaraaapilarenlapila2.Unmétodoqueefectuéestatareaes:

1. void PilaLlena (entero pila) 2. entero i 3. if (pila == 1) then 4. if (tope2 < n) then //hay espacio en la pila 2 5. for (i = tope2; i > m; i--) do 6. V [i + 1] =V[i] 7. end(for)

Page 95: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

95 ALGORITMOS II INGENIERIA DE SISTEMAS

8. tope2 = tope2 + 1 9. m = m + 1 10. end(if) 11. else 12. if (tope1 < m) then 13. for (i = m; i < tope2; i++) do 14. V [i - 1] = V[i] 15. end(for) 16. tope2 = tope2 – 1 17. m = m – 1 18. end(if) 19. end(if) 20. write (“pilas llenas”) 21. stop 22. end(Método)

Comosepodráobservar, laoperacióndeapilar implicamoverdatosenelvectordebidoaqueunapilapuedecrecermásrápidoquelaotra.Enotraspalabras,estemétodotieneordendemagnitudlineal,elcualseconsideraineficiente.Unamejoralternativadediseñoeslasiguiente:

La pila 1 se llenará de izquierda a derecha y la pila 2 de derecha a izquierda. Con este diseño no hay quepreocuparseporcualpilacrezcamásrápido.Lascondicionesacontrolarson:

Lapila1estarávacíacuantotope1seaigualacero

Lapila2estarávacíacuandotope2seaigualan+1(n=16)

Laspilasestaránllenascuandotope1+1seaigualatope2

Elmétodoapilarparaestesegundodiseñoes:

1. voidApilar(enteropila,objetod)

2. if(tope1+1==tope2)then

3. pilaLlena

4. end(if)

Page 96: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

96 ALGORITMOS II INGENIERIA DE SISTEMAS

5. if(pila==1)then

6. tope1=tope1+1

7. V[tope]=d

8. end(if)

9. end(Método)

Comopodráobservar,conestediseñoelprocesoparapilallenanoaparece;porlotanto,nohayquemoverlosdatosdelvectorynuestrométodoparaapilartieneordendemagnitudconstante

5.4 TEMA 3 COLAS CON VECTORES Y LISTAS Lascolascomovectoressonestructurasdealmacenamientodedatos,dondesemanejadeformaestática,dondelasoperacionesdeinserciónsehacealfinalylasdeborradosehacealprincipio,enotraspalabraselprimeroquellegaeselprimeroensalir,yelúltimoenllegarseráelúltimoensalir,deigualformasemanejaconlaslistasperodeformadinámica.

5.4.1 DEFINICIÓN Unacolaesunalistaordenadaenlacuallasoperacionesdeinserciónseefectúanenunextremollamadoúltimoylasoperacionesdeborradoseefectúanenelotroextremollamadoprimero.EsunaestructuraFIFO(FirstInputFirstOutput).

Entérminosprácticos,es loquesupuestamentesedebehacerparatomarunbus,paracomprar lasboletasyentraracineoparahacerusodeunserviciopúblico.Lasoperacionessobreunacolason:

Page 97: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

97 ALGORITMOS II INGENIERIA DE SISTEMAS

OPERACIONES CARACTERÍSTICAS

Crear Creaunacolavacía.

esVacía() retornaverdaderosilacolaestávacía;delocontrario,retornafalso

esLlena() Retornaverdaderosilacolaestállena;delocontrario,retornafalso.

Encolar(d) Insertaundatodalfinaldelacola.

Desencolar() remueveelprimerelementodelacola

Siguiente() Retornaeldatoquesehalladeprimeroenlacola.

5.4.2 REPRESENTACIÓN DE COLAS EN UN VECTOR, EN FORMA NO CIRCULAR

Para representar colas en esta forma se requiere un vector, que llamaremos V, y dos variables: una quellamaremosprimero,lacualindicalaposicióndelvectorenlaquesehallaelprimerdatodelacola,yotra,quellamaremosúltimo,queindicalaposiciónenlacualsehallaelúltimodatodelacola.

EnelvectorVseguardanlosdatos;primeroapuntarahacialaposiciónanteriorenlacualsehallarealmenteelprimerdatodelacola,yultimoapuntarahacialaposiciónenlaquerealmentesehallaelúltimodatodelacola.

Sitenemosunvectorconlasiguienteconfiguración:

Lavariableprimerovaldrá2indicandoqueelprimerelementodelacolasehallaenlaposición3delvector;lavariableultimovaldrá5indicandoqueelúltimoelementodelacolasehallaenlaposición5delvector.

Page 98: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

98 ALGORITMOS II INGENIERIA DE SISTEMAS

Lasoperacionessobrelacola,quesonencolarydesencolar,funcionandelasiguienteforma:sisedeseaencolarbastaconincrementarlavariableúltimaen1yllevaralaposiciónultimodelvectoreldatoaencolar;sisedeseadesencolarbastaconincrementarenunolavariableprimeroyretornareldatoquesehallaenesaposición.

Engeneral,sielvectorVsehadefinidoconnelementos,cuandolavariableúltimaseannsepodríapensarquelacolaestállena:

Pero,comoseobservaen la figura,el vector tieneespacioalprincipio;porconsiguiente,podemospensarenmoverlosdatoshaciaelextremoizquierdoyactualizarprimeroyultimoparaluegoencolar.Esdecir,elhechodequeelultimoseaigualannoessuficienteparadeterminarquelacolaestállena.Paraquelacolaestállenasedebencumplircondoscondiciones:queprimeroseaiguala0yultimoseaigualan.

Consideremosahoraoperacionessucesivasdedesencoleparaelejemplodado:despuésdeejecutarlaprimeraoperacióndedesencolelosvaloresdelasvariablesultimoyprimeroydelvectorVseránlossiguientes:

Dondelavariableprimerovaldrá3ylavariableultimo5

Aldesencolarnuevamente,laconfiguracióndelvectorserá:

Dondelavariableprimerovale4ylavariableultimo5.

Sidesencolamosdenuevo,laconfiguracióndelvectorserá:

Page 99: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

99 ALGORITMOS II INGENIERIA DE SISTEMAS

Ylavariableprimerovale5ylavariableultimo5.

Enotraspalabras;primeroesigualaultimoylacolaestávacía,oseaquelacondicióndelacolavacíaseráprimero==ultimo.Teniendodefinidaslascondicionesdelacolallenaycolavacíaprocedamosadefinirlaclasecola:

1. CLASECola

2. Privado3. Enteroprimero,n4. ObjetoV[]5. Publico6. Cola(n)//constructor7. booleanesVacía()8. booleanesLlena()9. voidencolar(objetod)10. Objetodesencolar()11. Objetosiguiente()12. end(Clase)

1. Cola(enterom)2. n=m3. primero=ultimo=04. V=newobjeto[n]5. end(cola)

1. BooleanesVacía()2. Returnprimero==ultimo3. end(esVacía)1. BooleanesLlena()2. returnprimero==0andultimo==n3. end(esLlena)1. voidencolar(objetod)2. if(esLlena())then3. write(“colallena”)4. return5. end(if)6. If(ultimo==n)then7. for(i=primero+1;i<=n;i++)

Page 100: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

100 ALGORITMOS II INGENIERIA DE SISTEMAS

8. V[I-primero]=V[i]9. end(for)10. ultimo=ultimo–primero11. primero=012. end(if)13. ultimo=ultimo+114. V[ultimo]=d15. end(Método)

1. objetodesencolar()2. If(esVacía())then3. write(“colavacía”)4. returnnull5. end(if)6. primero=primero+17. returnV[primero]8. end(desencolar)

Siconsideramosunasituacióncomolasiguiente:

nvale7,últimovale6yprimerovale1.

Sisedeseaencolareldatohyaplicamoselmétodoencolardefinido,laacciónqueefectúadichométodoesmoverloselementosdesdelaposición1hastala6,unaposiciónhacialaizquierdadetalformaquequedeespacioenelvectorparaincluirlahenlacola.Elvectorquedaraasí:

Conprimerovaliendo-1yultimovaliendo5.Deestaformacontinualaejecucióndelmétodoencolaryseincluyeeldatohenlaposición6delvector.Elvectorquedaasí:

Conprimerovaliendo-1yultimovaliendo6.

Sienestemomentosedesencola,elvectorquedaasí:

Page 101: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

101 ALGORITMOS II INGENIERIA DE SISTEMAS

Conprimerovaliendo0yultimovaliendo6.

Silasituaciónanteriorserepitesucesivasveces,queseríaelpeordeloscasos,cadavezquesevayaaencolarsetendríaquemovern-1elementosdelvector,locualharíaineficienteelmanejodelacolayaqueelprocesodeencolartendríaordendemagnitudO(n).ParaobviaresteproblemaypoderefectuarlosmétodosdeencolarydesencolarenuntiempoO(1)manejaremoselvectorcircularmente.

5.4.3 REPRESENTACIÓN DE COLAS CIRCULARES EN UN VECTOR

Paramanejarunacolacircularmenteenunvectorserequieredefinirunvectordenelementosconlossubíndicesenelrangodesde0hastan-1,esdecir,sielvectortiene10elementoslossubíndicesvariarandesde0hasta9,yelincrementodelasvariablesprimeroyúltimosehaceutilizandolaoperaciónmodulo(%)delasiguientemanera:

Primero=(primero+1)%n

Ultimo=(ultimo+1)%n

Recuerdequelaoperaciónmodulo(%)retornaelresiduodeunadivisiónentera.Sisetieneunacolaenunvector,conlasiguienteconfiguración:

nvale7,lossubíndicesvaríandesde0hasta6,primerovale2yultimovale4.

Sisedeseaencolareldatodincrementamoslavariableúltimautilizandolaoperaciónmodulo,así:

Ultimo=(ultimo+1)%n

Osea,ultimo=(4+1)%7,lacualasignaraaultimoelresiduodedividir5por7,quees5.

Elvectorquedaasí:

Page 102: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

102 ALGORITMOS II INGENIERIA DE SISTEMAS

Alencolareldatoeelvectorquedaasí:

Y las variables: primera y última valdrán 2 y 6 respectivamente. Al encolar de nuevo el dato f, aplicamos el operador % y obtenemos el siguiente resultado:

Ultimo = (6 + 1) % 7

El cual es 0, ya que el residuo de dividir 7 por 7 es 0. Por consiguiente, la posición del vector a la cual se llevará el dato f es la posición 0. El vector quedara con la siguiente conformación:

Conultimovaliendo0yprimero2.Deesta formahemospodidoencolarenelvectorsinnecesidaddemoverelementosenél.

Losmétodosparaencolarydesencolarquedanasí:

1. voidencolar(objetod)

2. Ultimo=(ultimo+1)%n

3. if(ultimo==primero)then

4. colaLlena()

5. end(if)

6. V[ultimo]=d

7. end(Método)

Page 103: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

103 ALGORITMOS II INGENIERIA DE SISTEMAS

1. objetodesencolar()

2. if(primero==ultimo)then

3. colaVacía

4. end(if)

5. primero=(primero+1)%n

6. d=V[primero]

7. end(desencolar)

Esimportantenotarquelacondicióndecolallenaycolavacíaeslamisma,conladiferenciadequeenelmétodoencolar se chequea la condición después de incrementar último. Si la condición resulta verdadera invoca elmétodocola Llena, cuya función serádejarúltimoconel valorque teníaantesde incrementarlaydetenerelproceso,yaquenosepuedeencolar.Porconsiguiente,habráunaposicióndelvectorquenoseutilizará,peroquefacilitaelmanejodelascondicionesdecolavacíaycolallena.

5.4.4 REPRESENTACIÓN DE COLAS COMO LISTAS LIGADAS DefinimoslacolacomoderivadadelaclaseLSL:

Encolar:consisteeninsertarunregistroalfinaldeunalistaligada:

1. voidencolar(objetod)

2. Insertar(d,ultimoNodo())

3. end(Método)

Page 104: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

104 ALGORITMOS II INGENIERIA DE SISTEMAS

Desencolar:consisteenborrarelprimerregistrodeunalistaligada(exactoadesapilar).Habráquecontrolarsilacolaestáonovacía

1. Objetodesencolar(primero,ultimo,d)

2. if(esVacía())then

3. write(“colavacia,nosepuededesencolar”)

4. Returnnull

5. end(if)

6. nodoSimplep

7. p=primerNodo()

8. d=p.retornaDato()

9. borrar(p,null)

10. returnd

11. end(desencolar)

5.5 EJERCICIOS DE ENTRENAMIENTO Pautasparadesarrollarlossiguientesejercicios:Paradesarrollarestosejercicios,debestenerclarolasoperacionesquesepuedenrealizarenunapila,ylasoperacionesquesepuedenrealizarenunacola.

1. Escribaunmétodoqueinserteunelementoenunapila.Consideretodosloscasosquepuedanpresentarse.

2. Escribaunmétodoqueelimineunelementodeunapila.Consideretodosloscasosquepuedanpresentarse.

3. Escriba unmétodo que inserte un elemento en una cola circular. Considere todos los casos que puedan

presentarse.

4. Escriba unmétodoque elimine un elemento de una cola circular. Considere todos los casos que puedan

presentarse.

Page 105: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

105 ALGORITMOS II INGENIERIA DE SISTEMAS

Utiliceunaestructuradecolaparasimularelmovimientodeclientesenunacoladeesperadeunbanco(puedeauxiliarseconlos métodos utilizados que están planteados en los ejercicios 3 y 4).

Page 106: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

106 ALGORITMOS II INGENIERIA DE SISTEMAS

6 PISTAS DE APRENDIZAJE Recuerdeque,alahoradeintercambiardatosdentrodeunvectorderegistro,primerodebeguardarelcontenido

enunaceldaadentrodeunavariableauxiliar,paranoperderloquehayena;luegoalaceldaalellevaloque

tienelaceldab;yporúltimo,alaceldablellevaloqueguardóenlavariableauxiliar.Así,porejemplo:

aux=vec[i]vec[i]=vec[k]vec[k]=aux

Recuerdequelosparámetrosporreferenciasonaquellasvariablesquesemodificarándentrodelosmétodosy

volveránalprogramaprincipalconsuvalormodificado.

Recuerdequelainformaciónqueseguardaenarchivos,esunainformaciónquepermaneceeneltiempo.

Noolvidequelosarchivossedebendeabrirytambiénsedebencerrar.

Tengaencuentalossiguientespuntosenelmanejodinámicodememoria:

ElpunteroesunadireccióndememoriaenlaRAM.

Unnodoesunespaciodememoria.

Unnodosimple,estácompuestoporunapartededatoyotrapartedeliga.

Recuerdequealpedirunnodosehaceconlainstrucciónnew(x)yparaliberarelespaciodememoriasehacecon

free(x).

Noolvidequelaspilasylascolas,notienenrepresentaciónpropiaaniveldeprogramación,queparahacerlose

apoyanenvectoresylistasligadas.

Tengaencuentaquecuandosebuscaelcontadordefrecuenciasdeunalgoritmo,yenéstehayunainstrucción

queseejecutan*nveces,lorepresentamoscomon2;ysiexisteunainstrucciónqueseejecutan*n*nveces,ésta

instrucciónlarepresentamoscomon3.

Recuerdeque,enlamultiplicación,tener2*neslomismoquetener2n.

Igualmente,conloslogaritmos:n*log2neslomismoquenlog2n.

Page 107: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

107 ALGORITMOS II INGENIERIA DE SISTEMAS

7 GLOSARIO Factorial:Sellamafactorialdenalproductodetodoslosnúmerosnaturalesdesde1hastan.

Frecuencia:Repeticiónmayoromenordeunactoodeunsuceso.

Parámetro:Variableque,enunafamiliadeelementos,sirveparaidentificarcadaunodeellosmediantesuvalor

numérico

Void:Significavacío,estoindicaquelafunciónnodevuelvenadasinoquerealizaciertasacciones.

Pila:conjuntodeunoomáselementosqueseapilan.

Nodosimple:espaciodememoriaquetieneunadirecciónyqueseencuentradivididoendospartes,unaparte

dedatoyunapartedeliga.

Nododoble:espaciodememoriaquetieneunadirecciónyqueseencuentradivididoentrespartesunapartede

ligaizquierda,unapartedeligaderechayunapartededatos.

Evaluaciónapriori:consisteenmedirlaeficienciadeunalgoritmoantesdedecodificarseenalgúnlenguaje

Page 108: ALGORITMOS II - imagenes.uniremington.edu.coimagenes.uniremington.edu.co/moodle/Módulos de... · formado por varios campos pertenecientes a diferentes tipos de datos, a diferencia

108 ALGORITMOS II INGENIERIA DE SISTEMAS

8 BIBLIOGRAFÍA Joyanes Aguilar, L. (1996). Fundamentos de programación: Algoritmos y estructura de datos. McGrawHill/InteramericanadeEspañaS.A.

OviedoRegino,E.M.(2015).Lógicadeprogramaciónorientadaaobjeto,primeraedición.ECOEediciones:Bogotá.VillalobosS.,J.A.,&CasallasG.,R.(2006).Fundamentosdeprogramación,aprendizajeactivobasadoencasosprimeraedición.Bogotá:PearsoneducacióndeMéxicoS.A.deC.V.Cairo,O.,&GuardatiBuemo,S.(1998).Estructurasdedatos.McGraw-HillInteramericanodeMéxicoS.A.RobertoFlórezRueda.(2010).AlgoritmiaII,primeraedición.MedellínColombia.

Programación en Castellano. (s.f.). Recuperado el 9 de Junio de 2011, dehttp://www.programacion.com/articulo/introduccion_a_la_programacion_205/7

Universidad Nacional de Colombia sede Bogotá. (s.f.). Recuperado el 8 de Abril de 2011, dehttp://www.virtual.unal.edu.co/cursos/ingenieria/2001839/docs_curso/contenido.htmlCanaria,D.d.(s.f.).GrupodeEstructurasdeDatosyLingüísticaComputacional.Recuperadoel6deJuniode2011,dehttp://www.gedlc.ulpgc.es/docencia/NGA/subprogramas.html

Granada,U.d.(s.f.).www.ugr.es.Recuperadoel9deJuniode2011,dehttp://elvex.ugr.es/decsai/c/apuntes/vectores.pdf

TECNOLÓGICO.(s.f.).Obtenidodehttp://www.mitecnologico.com/:http://www.mitecnologico.com/Main/ArreglosVectoresYMatrices

Universidad Tecnológica de Pereira. (s.f.). Recuperado el 6 de Junio de 2011, dehttp://www.utp.edu.co/~chami17/sn.htm

Vieyra,G.E.(31deAgostode2000).FacultaddeCienciasFísico-MatemáticasUMSNH.Recuperadoel8deJuniode2011,dehttp://www.fismat.umich.mx/~elizalde/curso/node110.html

Wikipedia.(s.f.).Recuperadoel8deJuniode2011,dehttp://es.wikipedia.org/wiki/Sistema_de_numeraci%C3%B3n