Sei sulla pagina 1di 13

Arreglos

Arreglos

2013
TransversaldeProgramacinBsica
ProyectoCurriculardeIngenieradeSistemas

Arreglos

1.Objetivos

Asimilarelconceptodearreglo.
Identificarproblemasquepuedensersolucionadosmediantearreglos.
Solucionarproblemasutilizandoarreglos.

2.Introduccin
Una estructura de datos es una coleccin de datos que pueden ser caracterizados por su
organizacin y las operaciones que se definen en ella. Algunas veces a estas estructuras se les
llamatiposdedatos.

Una estructura de datos es una coleccin de datos que pueden ser caracterizados por su
organizacin y las operaciones que se definen en ella. Las estructuras de datos son muy
importantesenlossistemasdecomputadora.Lostiposdedatosmsfrecuentesutilizadosenlos
diferenteslenguajesdeprogramacinson:

Lasestructurasdedatosestticassonaquellasenlasqueeltamaoocupadoenlamemoriase
defineantesdelaejecucindelprogramaynopuedemodificarseduranteesta.

Arreglos

Las estructuras de datos dinmicas no tienen las limitaciones y restricciones en el tamao de


memoriadelasestructurasestticas.Medianteelusodeuntipodedatoespecfico,denominado
puntero, es posible construir estructuras de datos dinmicas soportadas por la mayora de los
lenguajesdeprogramacin.1

Unacaractersticaimportantequediferenciaalosdatossimplesdelosestructuradosesquepara
losdatossimplescadavariablerepresentaunelemento,mientrasqueenlosdatosestructurados
cadaidentificador(nombre)representamltiplesdatosindividuales,pudiendocadaunodeellos
serreferenciadosindividualmente.

Unarregloesunconjuntofinitoyordenadodeelementoshomogneos.Lapropiedadordenado
significaqueelprimerelemento,elsegundo,eltercero,...,elensimopuedeseridentificado.La
homogeneidadimplicaquetodosloselementosdelarreglosondatosdelmismotipo.

3.Definicin

Unarregloesunaestructuradedatos,omstcnicamente,unespaciodememoriaquepermite
almacenarunacoleccindeelementos,todosdelmismotipo.Convieneimaginarunarreglocomo
unasecuenciacontiguadeceldas(espaciosdememoria),ocasillas,encadaunadelascualesse
puedeguardarunelementodelacoleccin.Adems,esusual dibujarlocomoloilustralafigura
siguiente:

Esta figura representa un arreglo de siete casillas cada una de las cuales se puede utilizar para
guardarundato.Ladimensinotamaodeunarregloeselnmerodecasillasqueloconforman.
Debeserclaro,entonces,quelafiguraanteriorcorrespondeaunarreglodedimensin7.

Cadaunadelascasillasdeunarreglotieneasociadounnmeroquelaidentificademaneranica.
Aestenmeroselellamandiceodireccin.Enlafiguraanterior,debajodecadacasilla,aparece
sundice.EnlenguajescomoC,C++yjava,laprimeracasilladelarreglotienendice0,lasegunda
tienendice1,latercerandice2,yassucesivamente.Esmuyimportantetenerpresentequesiel
arregloesdedimensinN,laltimacasillatienendiceN1.

Otrasposiblesnotacionespuedenser:

Cuando un lenguaje de programacin no soporta de estructura de datos dinmicas eventualmente pueden ser simuladas
mediante el algoritmo apropiado.

Arreglos

Loslenguajesdeprogramacin,permitenqueelprogramadordeclarearreglosdecualquiertipoy
prcticamente de cualquier tamao. En el seudolenguaje, un arreglo se declara usando el
siguienteformatooplantilla:

<NOMBRE>:arreglo[<N>]de<TIPO>

En este formato aparecen en maysculas y entre los caracteres < y > los componentes que el
programador debe determinar. As por ejemplo, si se quiere declarar un arreglo con nombre
letras,dedimensin15yquepuedaalmacenardatosdetipocaracter,sedebeescribirlasiguiente
lnea.
letras:arreglo[15]decarcter

Volviendo al formato anterior, el programador debe bautizar el arreglo (ponerle un nombre


significativo),debedecirculessudimensin,ytambindebedecirdequtiposonloselementos
quealmacenaresearreglo.Enseguidasedanalgunosejemplosdedeclaracionesdearreglos.

- Sisenecesitaguardarlasventasdiariasdeunatiendadurantelaltimasemana,sepuede
declararelsiguientearreglo:

ventas:arreglo[7]dereal

- Sisequiere guardarlasnotasqueha sacadounestudianteen loscincotalleresyenlos


cinco laboratorios del curso de Programacin Bsica se pueden declarar los siguientes
arreglos:

talleres:arreglo[5]dereal
laboratorios:arreglo[5]dereal

- Sisequiereguardarelvalordelasltimas12facturastelefnicasdeunacasa,sepuede
declararelsiguientearreglo:

facturasTel:arreglo[12]dereal

Losndicessecrearonparapermitirqueelprogramadorsepuedareferir,deformaespecfica,a
una cualquiera de las casillas del arreglo, tanto para guardar un dato en esa casilla, como para
obtener el dato guardado. Para referirse a una casilla particular de un arreglo se debe seguir el
siguienteformato:

<NOMBRE>[<INDICE>]

Arreglos

esdecir,sedebeescribirelnombredelarregloseguidoporelndicedelacasillaentreparntesis
cuadrados.

Ejemplos
A continuacin se muestran algunos ejemplos con el objeto de esclarecer la teora antes
presentada

EjemploUno
Paraelsiguienteejemplo,supongaquesedeclaraelarreglocifras,delasiguientemanera:

cifras:arreglo[10]deentero

- La siguiente instruccin asigna o guarda el nmero 100 en la primera casilla de este


arreglo:
cifras[0]:=100
- Lasiguienteinstrucciniterativaguarda550encadaunadelasltimas5casillasdeeste
arreglo:

i:=5
MIENTRAS(i<10)HACER

cifras[i]:=550

i:=i+1
FINMIENTRAS

La siguiente figura muestra el arreglo cifras despus de ejecutadas las instrucciones de los dos
ejemplosanteriores.Lascasillasvacasnotienenvaloresdefinidos.

100

550
550
550
550
550
0

EjemploDos
Unhistogramaparaunacoleccindedatosesunasecuenciadeparejasdelaforma(d,f),donded
esundatoyfessufrecuenciaenlacoleccin.Porejemplo,supongaqueselepidea20personas
calificar con las letras a b c d y e el desempeo del gobierno actual, y que se obtienen las
siguientesrespuestas:cbcabcdeeabbdcaccbda.Elhistogramaparaestacoleccinde
datossemuestraenseguidaendosformas:connmerosyconasteriscos:

a:4
a:****
b:5
b:*****
c:6
c:******
d:3
d:***
e:2
e:**

Arreglos

Considereelproblemadeconstruirunalgoritmoquehagaunhistogramaparaunalistadehasta
100 valores, donde cada valor es un nmero entero comprendido en el intervalo 1 al 5. Las
entradas(datosconocidos)paraelalgoritmoson:

Elnmerodedatosdelacoleccin
Lacoleccinmisma

Lasalidaesperada(datodesconocido)es:

Elhistogramadelacoleccin

En este problema, los arreglos son tiles para guardar los datos que conforman la coleccin y
tambinparaguardarelhistograma.Elnmerodedatosdelacoleccinsepuedeguardarenuna
variable entera. La siguiente grfica resume las entradas y las salidas del algoritmo que se
Totaldatos
histograma
coleccion

pretendedisear.Ademsbautizatodaslasvariablesmencionadas:

Las condiciones inciales y finales se pueden expresar mediante dos clusulas: REQUIERE y
GARANTIZA,delasiguientemanera:

REQUIERE:Elnmerodedatosdelacoleccindebesermayorqueceroymenoroigual
quecien.(100totalDatos>0)
Cadaunodeloselementosdelacoleccindebeserunnmeroentre1y5.

GARANTIZA:Calculaelhistogramaasociadoalacoleccinylopresentaenlapantalla.La
frecuenciadecadadatoaparecegraficadocomounasecuenciadeasteriscos.

Unaprimeraversindelalgoritmosolucinpuedesersimplementelasiguiente:

Inicio
Paso1.Leerelnmerodeelementosquetienelacoleccin
Paso2.Leerloselementosdelacoleccin
Paso3.Calcularelhistograma
Paso4.Presentarelhistogramaenlapantalla
Fin

Lospasos1y2soninteraccionesconelusuarioquepermitencapturarlosdatosdeentrada.La
versin inicial se puede refinar detallando estos pasos y adems, definiendo las variables
necesariasparahacerlos:

Arreglos

Procedimientoprincipal
Variables
i,totalDatos:entero
coleccin:arreglo[100]deentero

Inicio
escribir(Por favor digite el nmero de datos de la coleccin : (inferior o igual a
100))
leer(totalDatos)
i:=0
mientras(i<totalDatos)hacer

escribir(Porfavordigiteeldato:)

escribir(i+1)

leer(coleccin[i])

i:=i+1
finmientras
Paso3.Calcularelhistograma
Paso4.Presentarelhistogramaenlapantalla
Fin

LapartenucleardelasolucineselPaso3(calcularelhistograma).Enesteproblemaparticularse
sabe que todos los datos estn entre 1 y 5, lo cual quiere decir que se necesita calcular cinco
frecuencias:ladel1,ladel2,etc.Esnaturalentoncesusarunarreglode5casillasparaguardarel
histograma, de tal manera que en la casilla 0 estar la frecuencia del 1, en la casilla 1 estar la
frecuenciadel2,yassucesivamente.Aestavariableselellamarhistogramaysudeclaracin
es:
histograma:arreglo[5]deentero

Ahora,paracalcularlasfrecuenciassepuedehacerlosiguiente:

Paso3.1:inicializarlascincocasillasdelarreglohistogramaencero.
Paso3.2:Revisarlacoleccin,datopordato,eirincrementandolafrecuenciaasociadaacadauno
deellos.As,siseencuentraun5,sedebeincrementaren1lafrecuenciaasociadaal5,esdecir,se
ledebesumar1ahistograma[4].

Enseudolenguaje,elclculodelhistogramapuedeser:

i:=0
mientras(i<5)hacer //inicializalasfrecuenciasen0.Paso3.1

histograma[i]:=0

i:=i+1
finmientras
i:=0
mientras(i<totalDatos)hacer //calculalasfrecuencias.Paso3.2

d:=coleccin[i]1

histograma[d]:=histograma[d]+1

Arreglos

i:=i+1
finmientras

Finalmente,unavezcalculadoelhistograma,sedebepresentarenlapantalla.Cadadatosedebe
presentarjuntoconsufrecuencia,peroserequierequelafrecuenciaaparezcacomounacadena
de asteriscos, en vez de como un nmero. Por ejemplo, si el dato 8 aparece 3 veces en la
coleccin,enlapantalladebeaparecer8:***,comounalneadelhistograma.Estoquieredecir
queparaescribirlafrecuenciadeundato,serequiereuncicloqueescribatantosasteriscoscomo
sealafrecuencia.

Concluyendo,elpaso4(presentarelhistogramaenlapantalla)sepuederefinarcomosemuestra
enseguida:

i:=0
mientras(i<5)hacer //esteciclorecorreelhistograma

escribir(i+1)

escribir(:)

f:=histograma[i]
//fguardalafrecuenciadedatoi+1

j:=0

mientras(j<f)hacer
//estecicloescribefasteriscos
escribir(*)

j:=j+1

finmientras

escribir(saltodelinea)

i:=i+1
finmientras

El algoritmo completo se presenta enseguida. Se han definido algunas constantes para permitir
queelprogramaseamsfcilmentemodificable.

Procedimientoprincipal
Constantes
N5

/Neseltamaomximodelhistograma
MAXDATOS100
/MAXDATOSeseltamaomximodelacoleccin
Variables
i,j,totalDatos:entero
coleccion:arreglo[MAXDATOS]deentero
histograma:arreglo[N]deentero

Inicio
escribir(Por favor digite el nmero de datos de la coleccin : (inferior o igual a
100))
leer(totalDatos)
i:=0
mientras(i<totalDatos)hacer

escribir(Porfavordigiteeldato:)

Arreglos

escribir(i+1)

leer(coleccin[i])

i:=i+1
finmientras
i:=0
mientras(i<N)hacer //inicializalasfrecuenciasen0.Paso3.1

histograma[i]:=0

i:=i+1
finmientras
i:=0
mientras(i<totalDatos)hacer //esteciclocalculalasfrecuencias.Paso3.2

d:=coleccin[i]1

histograma[d]:=histograma[d]+1

i:=i+1
finmientras
i:=0
mientras(i<N)hacer //esteciclorecorreelhistograma

escribir(i+1)

escribir(:)

f:=histograma[i]
//fguardalafrecuenciadedatoi+1

j:=0

mientras(j<f)hacer
//estecicloescribefasteriscos
escribir(*)

j:=j+1

finmientras

escribir(saltodelinea)

i:=i+1
finmientras
Fin
Nota:Veranexos

Problemasparadesarrollarenclase
1. Supongaquesequiereconstruirunalgoritmoquecalifiqueunexamendeseleccinmltiple
presentado por un estudiante de Programacin Bsica. En cada una de las preguntas del
examen,elestudiantedebielegirunadecincoopciones,identificadasconlasletrasA,B,C,Dy
E.Lasentradas(datosconocidos)paraelalgoritmoson:

- Elnmerodepreguntasquetenaelexamen
- Cadaunadelasrespuestasdadasporelestudiante
- Lasrespuestascorrectas

Lasalidaesperada(datodesconocido)es:
- lanotaobtenida.Estanotacorrespondealnmerodeaciertosquetuvoelestudiante.

Arreglos

Enesteproblema,losarreglossontilesparaguardarlasrespuestascorrectasylasopciones
elegidas por el estudiante. El nmero de preguntas del examen se puede guardar en una
variableentera,aligualquelanota.Enseguidasemuestralaespecificacindeesteproblema:

totalPregunta

respuestas

nota

correctas

REQUIERE
- Elnmerodepreguntasdelexamendebesermayorquecero.(totalPreguntas>0).
- Cadaunadelasrespuestasdelestudiantedebeserunaletramaysculaqueest
entreAyE.
- Cadaunadelasrespuestascorrectasdebeserunaletramaysculaqueestentre
AyE.

GARANTIZA
- La nota dada por el algoritmo corresponde al total de respuestas acertadas del
estudiante

Escribaunalgoritmoquecumplaconestaespecificacin.

2. Escribaunalgoritmoqueefectelanormalizacindeunacoleccindenmerosreales.Para
llevar a cabo esta normalizacin, se debe en primer lugar encontrar el nmero mayor de la
coleccin; luego se divide cada nmero por dicho valor mximo, de forma que los valores
resultantes(normalizados)estncomprendidosenelintervalodel0al1.

3. Escribaunalgoritmoquesumeenbinario.Lasentradassondosnmeros(binarios)ylasalida
es la suma de estos dos valores (tambin en binario). Por ejemplo, si el usuario digita las
cadenasbinarias101y1101,larespuestadadadebeser10010.

Ejerciciosparadesarrollarencasa
1. EscribaunalgoritmoqueleadosarreglosdenmerosenterosORDENADOSascendentemente
y luego produzca la lista ordenada de la mezcla de los dos. Por ejemplo, si los dos arreglos
tienenlosnmeros136917y241017,respectivamente,lalistadenmerosenlapantalla
debeser123469101717.

2. Escribaunalgoritmoque leaunarreglodenmerosenteros,yunnmerox,yescribaenla
pantallatodoslosndicesdelasposicionesdelarreglodondeestx.Porejemplo,sielarreglo
eselqueapareceenseguidayxes2:

1
2
3 100 23
2
2
1

10

Arreglos

Elprogramadebeescribir:156.

3. Un arreglo de nmeros se llama partidario si todo nmero que est en una casilla par
(0,2,4,)esmayorquecualquieradelosnmerosqueestnenlascasillasimpares(1,3,5,).
Escribaunalgoritmoqueleaunarreglodenmerosenterosyluego,digasiespartidarioono.
Porejemplo,sielarregloeselsiguiente:

100
5
200
1 1000
0
600 50 300
4

Elprogramadebeescribir:espartidario.

Anexos
Enestaseccinsemostraracomoeslacodificacindelateoravistaenclase,paraelloseutilizara
comoherramientadecodificacin:C++.

CodificacinenC++dearreglosymatrices

Seudocdigo
Arreglo <NOMBRE>:arreglo[<N>]de<TIPO>

C++
<TIPO><NOMBRE>[<N>];

Ejemplo

#include<cstdlib>
#include<iostream>
usingnamespacestd;

intmain(intargc,char*argv[])
{
intconstN=5;

//Neseltamaomximodelhistograma
intconstMAXDATOS=100; //MAXDATOSeseltamaomximodelacoleccin;
inti,j,totalDatos,d,f;
intcoleccion[MAXDATOS];
inthistograma[N];

cout<<("Porfavordigiteelnmerodedatosdelacoleccin:(inferioroiguala
100)");
cin>>(totalDatos);
i=0;
while(i<totalDatos){

cout<<("Porfavordigiteeldato:");

cout<<(i+1);

cin>>(coleccion[i]);

i=i+1;

11

Arreglos

}
i=0;
while(i<N){ //inicializalasfrecuenciasen0.Paso3.1

histograma[i]=0;

i=i+1;
}
i=0;
while(i<totalDatos){ //esteciclocalculalasfrecuencias.Paso3.2

d=coleccion[i]1;

histograma[d]=histograma[d]+1;

i=i+1;
}
i=0;
while(i<N){ //esteciclorecorreelhistograma

cout<<(i+1);

cout<<(":");

f=histograma[i];
//fguardalafrecuenciadedatoi+1

j=0;

while(j<f){
//estecicloescribefasteriscos
cout<<('*');

j=j+1;

cout<<endl;

i=i+1;
}

system("PAUSE");
returnEXIT_SUCCESS;
}

LecturadeProfundizacin

http://enriquebarrueto0.tripod.com/algoritmos/cap06.pdf
http://wikipnfi.wikispaces.com/file/view/Arreglo+de+Registro.pdf
http://aplicaciones.virtual.unal.edu.co/drupal/files/Arreglos%20y%20Matrices%20
%20Programacion%20de%20Computadores.pdf

Imgenes:

Lasimgenesutilizadasenestedocumentofuerontomadasdewww.google.com

12

Arreglos

Fuentes:

http://www.sites.upiicsa.ipn.mx/polilibros/portal/Polilibros/P_terminados/EstrRepreDat/F
iles/insercion_nodos.html
http://lictoledomarcelo.awardspace.com/archivos/Ejercicios_VB_Arreglos.pdf
http://cyberprogramacion.zxq.net/pdf/Arrays%20%28Vectores%20y%20Matrices%29%20
2012%20%20Luis%20U..pdf
http://www.fismat.umich.mx/mn1/manual/node6.html
http://www.herrera.unt.edu.ar/programacion/archivos/ejemplos%20de%20Arreglos.pdf

13

Potrebbero piacerti anche