AdrianNicolásMalaverBarrera
11. Arreglos,matricesycadenasdetexto
Losarreglosylasmatrices,comoveremos,permitenlarepresentacióndeconjuntosdedatosdelmismotipo.Estosconjuntosdedatosfacilitanoperacionescomosumatoriasopromediosdedatosusandociclosyotrasestructurasdellenguaje.
11.1 ¿Quésonlosarreglos?
Enalgunoscasosesrequeridoelanálisisdeconjuntosdedatosparahaceroperacionescomopromediosocálculosestadísticos.Comosehavistohastaahora,estosconjuntosdedatospodríanrepresentarseconunconjuntodeigualtamañodevariables.Porejemplo,sisequisieraalmacenarlasnotasde10estudiantes,seríanecesariopensarendefinirdiezvariables,unaparacadaestudiante,delasiguientemanera:
n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 : Real
Porotrolado,unaoperacióncomounpromedioseveríacomosigue:
Promedio ← (n1+n2+n3+n4+n5+n6+n7+n8+n9+n10) / 10
Estofunciona.Sinembargo,surgendospreguntas:
• ¿Quépasaríasisequisieracalcularelpromediode11datos?Debemosentoncesagregarunanuevavariable,yademásmodificarlaformaenlaquesecalculaelpromedio.
• ¿Quépasaríasiahorafueranmilnotasynodiez?Definirtantasvariablesdeformaindependientenoseríaeficiente,yhacercualquieroperaciónconlosdatos,seríamuytedioso.
Comorespuestaaestasyotrassituaciones,secrearonlosarreglos.
Unarregloesentoncesunconjuntodedatoslinealquealmacenadatosdelmismotipo.Estoquieredecirquelosdatossealmacenanunodetrásdeotro,comoenunalista,yencadaposiciónseráposiblealmacenarelementossolamentedeltipodefinido.
11.2 Definiciónyusodearreglos
Unarreglosedefinedelamismaformaenlaquesedefineunavariable;soloesnecesario
POLITÉCNICO GRANCOLOMBIANO EN ALIANZA CON WHITNEY INTERNATIONAL UNIVERSITY SYSTEM
AdrianNicolásMalaverBarrera
definireltamañoquedichoconjuntodedatostendrá.Porejemplo,sisequieredefinirun
arregloparaalmacenarlasnotasdelos10estudiantes,podemoshacerlodelasiguienteforma:notas[10] : Real
Tabla1.Ejemplosderepresentacióndeinformaciónenarreglos.
¿Quéinformaciónquieroalmacenar? ¿Cómorepresentarla?Lasedadesde25personas edades[25] : Entero
Lascoordenadasdeunpuntoenelespacio coordenadas[3] : Real
Diezvaloresenterosdeunasucesión sucesion[10] : Real;
10resultadosdeunaencuestaconrespuesta(sí,no) resultados[10] : Booleano
Lasprimerasletrasdelosdíasdelasemana días[7] : Carácter
Paraaccederalasposicionesdeunarregloloquesedebehacereslosiguiente:
Usodeposicionesdeunarregloenexpresionesocomoparámetrosdemétodos
Enestecasoesnecesariodefiniraquéposiciónsehacereferencia.Sedefinequelasposicionesdeunarreglovande0aN‐1,dondeNeseltamañodefinidoparaelarreglo.Porejemplo,enelarreglo"semana[] : int"esposibleusarlas7posiciones:
0,1,2,3,4,5y6.Siseusanposicionesnegativasoposicionesqueesténmásalládelvalormáximo,habráunerroralimplementarelcódigodelalgoritmo.Veamosalgunosejemplos:
Tabla2.Ejemplosdeusodearreglos.
Dado: Sisequiereleerunaposiciónespecífica…notas[10] : Real x ← 18.654 + notas[0] + notas[2] resultados[5] : Real MostrarInformacion(resultados[3], 10) decisiones[8] : Booleano si(decisiones[4] = F) entonces…
Paraescribirenposicionesespecíficasdeunarreglo
Paraescribirenunaposicióndeterminada,usamosasignaciones,delamismaformaenlaquesehacíaparavariables,soloquesedefinelaposicióndelarregloquesequiereasignar:"notas[2] ← 4.4"asignaunvalorde4.4altercerestudiantedelalista.Veamosotrosejemplos:
Tabla3.Ejemplosdemodificacióndevaloresdearreglos.
AdrianNicolásMalaverBarrera
Dado: Sisequiereescribirunaposiciónespecífica…valores[100] : Entero valores[45] ← 134 resultados[50] : Real resultados[30] ← 4.56 decisiones[8] : Booleano Decisiones[0] ← (x < 47) Y (x > 10)
11.3 Matricesyarreglosmultidimensionales
Esposibledefinirarreglosquerepresentenconjuntoslinealesdedatosperoahora,enmásdeunadimensión.¿Quésignificaríadecir“unarreglodearreglos”?Seríaalgocomounarreglo,donde,encadaposiciónsealmacenaríaundatoquecorrespondeaunarreglo…
Veamos:
=
Enestecasosedefineunamatrizdetresfilasydoscolumnas,queesequivalenteadecirquesedefinióunarreglodetresposiciones,dondecadaposiciónesunarreglodedosposiciones…
Estosepodríadefinircomo:matriz[3][2] : Real
Laformadeleeryescribirlosdatosenunamatrizeslamisma,soloquehayquedefinirunaposiciónencadadimensión:
Tabla4.Ejemplosdeusodematrices.
Dado: Sisequiereescribirunaposiciónespecífica…tabla[10][5] : Entero tabla[9][1] ← 546 matriz[3][2] : Real matriz[2][1] ← -8.34 notas[3][10] : Real notas[2][1] ← 3.45
Parareferirnosaunaceldaespecíficaenunamatriz,usamosposicioneshorizontalesyverticales.Lascolumnassonverticales,comolascolumnasdeunedificio;lasfilassonhorizontales.Porejemplo,veamoslamatrizA:
0 1 2 3 4 50 1 2 3
Fila0,Columna4 Fila2,Columna2 Fila1,Columna0 Fila3,Columna5 Fila3,Columna0
AdrianNicolásMalaverBarrera
Alhacerreferenciaaunaceldaespecífica,escribimosprimerolafila,yluegolacolumna.Porejemplo,parahacerreferenciaalasposicionesdelamatrizA:
Fila0,Columna4 A[0][4] Fila2,Columna2 A[2][2] Fila1,Columna0 A[1][0] Fila3,Columna5 A[3][4] Fila3,Columna0 A[3][0]
Siserequierealmacenardatosenmásdimensiones,puedehacerse;tododependedelusoqueselequieradaralaestructuradefinida.Porejemplo,siserequiereguardarunalistade10matricesde5x4querepresentanposibilidadesdesistemasdeecuacionesqueconstituyenunproblema,laestructurapodríaser:"matrices[10][5][4] : Real".Laclaveesnoperderdevistaelusoqueseledaalíndicedecadadimensión.
Uníndiceesunvalornuméricoenteroquerepresentaunaposiciónenunadelasdimensionesdeunarreglo.Esteíndicepuedevariarentre0yN‐1,siendoNeltamañodefinidoparaladimensiónasociadaalíndice.
Unejemplodetalladosobreelusodeciclospararecorrerarreglosymatricesdinámicamentesepresentaenlaslecturasdelasemanapróxima;sinembargo,dentrodeltemaquesepresentaacontinuación,semuestralaaplicaciónconcretadeestoselementos.
11.4 Cadenasdetexto
Lascadenasdetextosonuntipodedatomuyútil,nosoloparapresentarinformaciónalusuariosinotambiénporqueatravésdesuanálisisymanipulaciónesposiblecomprenderlaestructuradelenguajesescritos,clasificarycodificarinformación,comprenderelsentidoquetieneunconjuntodecaracteresenundocumento,entreotrasmuchasaplicaciones.Enprogramación,representamoslascadenascomoarreglosdecaracteresdetexto,donde,encadaposiciónsealmacenauncarácter.Unacadenasepuederepresentarcomopalabra: Cadena o palabra: Cadena[16] (Enelprimer
casosedefineunacadenavacíaquepodráserinicializadaposteriormenteconunacadenaespecífica;enelsegundocaso,sedefineunacadenade16caracteres,loscualespodránsermodificadosdespués).Tambiéncontaremosconlaposibilidaddedefinirunvalorparavariablesdeestetipo,usandoasignaciones:
AdrianNicolásMalaverBarrera
Cadena1 ← “3456”
cadena2 ← “Hoy es jueves”
cadena3[1] ← ‘5’ Enestecasosecolocaelsímbolo‘5’enlasegundaposicióndelacadena.Notequelacadenadebetenerporlomenosdosposiciones,porhabersidodefinidaconuntamañoconstantemayoroigualadosoporhabersidoinicializadapreviamenteconunapalabradelongitudmayoroigualados.
Usamoscomillasdobles“”paradefinircadenasdecaracteresycomillassencillas‘’paradefinircaracteresindependientes.
Paraleeroparaescribirunvalorenunaposiciónespecíficadeunarreglo,usamoslamismanotacióndefinidaparalosarreglos:
Cadena1[1] ← '7'
Enestecaso,sivariablecadenafueinicializadaconlacadena"3456",despuésdelaasignaciónseconvertiráen"3756"(Recordemosquelasposicionesdelosarregloscomienzanen1).
Si cadena2[2] = 'y' entonces…Enestecasoseconstruyeunacondiciónqueinvolucraqueunaposicióndelacadenatengaunvalorespecífico.
Definiremosotrasoperacionesbásicasentrecadenasquefacilitansuanálisisymanipulación.
11.4.1 Longitud
Esposibleconocerlalongituddeunacadenadetextodelasiguienteforma:siporejemplopalabra esunavariabledeltipoCadena,longitud(palabra)permite
conocerunvalorenterocorrespondientealnúmerodecaracteresquecontienedichavariable.Porejemplo:
palabra ← "castillo de naipes"
n ← longitud(palabra)
Enestecaso,lavariableenteranalmacenaráunvalornuméricocorrespondientealtotaldecaracteresdetextocontenidosenlavariablepalabra,enestecaso18.Secuentan,porsupuesto,losespacios
AdrianNicolásMalaverBarrera
presenteseneltexto.
Entonces,elresultadodeevaluarlalongituddeunacadenadetexto,seráunvalorenteromayoroigualacero.
11.4.2 Concatenación:
Laconcatenacióndecadenasdecaracterespermiteunirlainformacióndedoscadenasenuna,atravésdelusodeloperador'+'.Porejemplo,dadaslascadenasdetexto:
nombre1 ← "César" nombre2 ← "Julio" apellido1 ← "Hernández" apellido2 ← "Martínez" Esposibleformarcadenasdecaracterescomosumadealgunasdeellas:
cadena ← nombre1 + " " apellido1 "César Hernández" cadena ← nombre2 + " " nombre1 + " " + apellido2
"Julio César Martínez"
Notelanecesidaddelusodelacadena""alconcatenarlainformacióndelasanterioresvariablesparapresentaradecuadamentelainformación.
Veamosunejemplosencillodeldiseñodeunalgoritmoqueanalizaunacadenadetexto:“Serequierecontarelnúmerodecaracteres‘o’,seguidosdecaracteres‘n’enunacadenadetexto”.Enestecaso,eldesarrollodelalgoritmosebasaenrecorrertodaslasposicionesposiblesdelacadenadetexto,paraanalizarsicumplenconelcriteriodefinido.Sicumplenconestecriterio,sellevarálacuenta.Hayquetenerpresenteque,comosetienenencuentaencadamomentodosposicionesdelacadena,lalongitudmínimarequeridaes2,yelnúmerodeiteracionesarealizarseráN‐1,dondeNeslalongituddelacadena.Veamoslaimplementacióndelquerecibelacadenayentregaelnúmerodeposicionesquecumplenelcriterio:
AlgoritmoConteoEntradaspalabra : Cadena Pre:{longitud(palabra) >= 2}Inicio conteo ← 0 N ← longitud(palabra)
AdrianNicolásMalaverBarrera
para i ← 0 hasta N-2 hacer si palabra[i] = 'o' Y palabra[i+1] = 'n' entonces conteo ← conteo + 1 fin_si fin_para retorne conteo FinSalidasconteo : EnteroPos:{conteo >= 0}
EnestecasoseusauncicloquesemueveporN-1posicionesdeunarreglo(aquíesunacadenadetexto)paraverificarunacondiciónconcreta.Estamismaestrategiapuedeserusadapararesolvertodotipodeproblemasquesebasanenlainformacióndeconjuntosdedatosdelmismotipo.
EnresumenLosarreglospermitenrepresentarconjuntoslinealesdedatosdelmismotipo.Además,esposiblerepresentarestructurasdemásdeunadimensióncomomatricesoestructurasdedimensionesytamañosarbitrarios.Paraaccederoasignarvaloresalasposicionesdelosarreglos,esnecesariodefinirvaloresparalosíndicesdacadadimensión.Estosepuedehacerusandovaloresconstantes,parareferirseaunaposiciónespecífica,ousandovariablesenteras,paraafectarunsubconjuntodelarreglousandociclos.Lascadenasdecaracteressepresentancomounnuevotipodedatosorientadoalanálisisytransformacióndevariablesquealmacenantexto.Estascadenassecomportancomoarreglosdecaracteresdetexto,queademáscuentanconlaformadeconocersulongitudydeserconcatenadasconotrasvariablesdelmismotipo.
Paratenerencuenta:• Esimportanteconoceryrespetarloslímitesdefinidosporlostamañosdelosarreglos,
paraevitarerroresdedesbordamiento.
• Lasposicionesválidasdelosarreglosvande0hastaN‐1,dondeNeseltamañodefinidoinicialmenteparaelarreglo.
• Ladefinicióndecadenasdetextosehaceatravésdelusodecomillasdobles("Este
es un texto")yladefinicióndecaracteresindependientessehaceconcomillassencillas('a').
• Unadelasaplicacionesmáscomunesdelusodeciclosyarreglos,eselordenamiento
AdrianNicolásMalaverBarrera
deconjuntosdedatos.Alrespecto,serecomiendaallectorlarevisióndelosalgoritmosdeordenamientodeburbuja,seleccióneinserción.Estosalgoritmossonineficientes,peronosayudanaentenderlosprocesosdediseñodealgoritmosconciclosyarreglos.Estassonalgunasreferenciasinteresantesalrespecto:(http://es.wikipedia.org/wiki/Ordenamiento_de_burbuja,http://es.wikipedia.org/wiki/Ordenamiento_por_selección,http://es.wikipedia.org/wiki/Ordenamiento_por_inserción).