You are on page 1of 4

7.

Arreglos de Memoria - Arrays


En visual c++ existen 3 tipos bsicos de variables: char, int y float. El lenguaje visual C++
permite, construir estructuras ms complejas a partir de estos tipos bsicos. Una de ellas son
los arreglos.
PROBLEMA. Suponga ue se desea desarrollar un programa para:
!. "eer y almacenar una lista de cali#icaciones de un examen.
Supongamos ue $ay !%% cali#icaciones. &ebemos utili'ar !%% variables di#erentes
nota!, nota(, ...., nota!%%, de ese modo son !%% direcciones di#erentes de memoria para
almacenar las cali#icaciones del examen. Se imagina declarar las !%% variables, )cuntas
instrucciones involucra*
+nt nota!, nota(, nota3,........., nota!%%,
(. Encontrar su media
-edia . /nota!+nota(+.......+nota!%%01!%%
3. Escribir una lista de las cali#icaciones mayores ue la media:
Si nota! 2 media entonces
escribir /nota!0
3in4si
Si nota( 2 media entonces
escribir /nota(0
3in4si
55
55
Si nota!%% 2 media entonces
escribir /nota!%%0
3in4si
&espu6s ue aprendas a usar arreglos vers c7mo se a$orra instrucciones porue es #cil
recorrer toda la lista de notas con unas pocas instrucciones. En el caso anterior, cuando el
acceso a la in#ormaci7n es secuencial, s7lo se puede acceder a un elemento buscando desde el
principio de la lista, y esto es algo lento. "o ue se necesita es una estructura de acceso directo
ue permita almacenar y recuperar los datos directamente especi#icando su posici7n en la
estructura, de esa manera se reuerir el mismo tiempo para acceder al elemento de la
posici7n !%% ue el de la posici7n 8.
9.!. &e#inicion.:
Colecci7n ordenada de elementos de un mismo tipo. ;rdenada signi#ica ue cada
elemento tiene una ubicaci7n determinada dentro del arreglo y debemos conocerla para
accederlo.
Es una colecci7n de datos del mismo tipo, ue se almacenan en posiciones
consecutivas de memoria y reciben un nombre com<n. =ara re#erirse a un determinado
elemento de un array se deber utili'ar un >ndice, ue especi#iue su posici7n relativa
en el array.
Un arreglo es una colecci7n #inita, $omog6nea y ordenada de elementos.
Finita: ?odo arreglo tiene un l>mite, es decir determinar cul ser el n<mero
mximo de elementos ue podrn #ormar parte del arreglo.
Homognea: ?odos los elementos del arreglo deben ser del mismo tipo.
"enguaje de =rogramaci7n : =ro#. @os6 Aupanui =6re'
Ordenada: Se puede determinar cul es el primer elemento, el segundo, el
tercero,.... y el n:6simo elemento.
Son $erramientas de programaci7n ue nos permiten conservar datos en la memoria
del computador, asocindolos por el tipo de dato ue correspondan, permitiendo su
acceso muy #cilmente a trav6s de un >ndice ue identi#ica el lugar donde se encuentra
el dato ue se desea acceder. Sin embargo el contenido de los arreglos se pierde
cuando termina la ejecuci7n del programa ue los utili'a.
7.2. Declaracion de un Array: Se declara de modo similar a otros tipos de datos, excepto
ue se debe indicar el tamaBo o longitud del array. Sintaxis:
Ctipo2 nombre_arregloDEumero4elementosF,
donde:
tipo: Es el tipo de dato a almacenar en el arreglo.
nombre_arreglo: es el nombre que se le asigna, as como a una variable
Numero_elementos: es la cantidad de elementos del tipo indicado que almacena.
7.3. Asignacin de un arreglo:
nombre_arregloD>ndiceF . expresi7n,
Esta instrucci7n asigna el valor asociado de la expresi7n a la posici7n ndice del
arreglo /nombre_arreglo. El >ndice debe ser un valor del tipo entero.
7.4. Acceso al contenido de un arreglo:
nombre_arregloD>ndiceF
extrae el contenido del arreglo en una determinada posici7n o indice.
7.5. CLASIFICACIO: "os arreglos se clasi#ican de acuerdo con el n<mero de dimensiones
ue tienen. Gs> se tienen los: : Unidimensionales /vectores0
: Hidimensionales /tablas o matrices0
: -ultidimensionales /tres o ms dimensiones0
a0. ARREGLOS UNIDIMENSIONALES:
Estn #ormados por un conjunto de elementos de un mismo tipo de datos ue se almacenan
bajo un mismo nombre, y se di#erencian por la posici7n ue tiene cada elemento dentro del
arreglo de datos. Gl declarar un arreglo, se debe iniciali'ar sus elementos antes de utili'arlos.
=ara declarar un arreglo tiene ue indicar su tipo, un nombre <nico y la cantidad de elementos
ue va a contener. En nuestro ejemplo: almacenar !%% cali#icaciones
in! no!a"#$$%& '' (eclarar )n arreglo
!8 EotaD%F
!I EotaD!F
!J EotaD(F
!% EotaD3F
!( EotaDIF
5. 555..
5. 555
!I EotaDKJF
!I EotaDKKF
"enguaje de =rogramaci7n : =ro#. @os6 Aupanui =6re'
=ara acceder a valores espec>#icos del arreglo, use un valor de >ndice ue apunte al elemento
deseado. Ejemplo, acceder al primer elemento del arreglo notas debe utili'ar el valor de >ndice
% /notaD%F0. En los arreglos el primer elemento se encuentra en la direcci7n 7 indice % y el
<ltimo con un valor menos en una unidad al tamaBo del arreglo.
* Programa +)e de,ine )n arreglo o!a de #$$ elemen!os en!eros. Adem-s calc)la el
!ama.o del arreglo/
L
int notaD!%%F, 11 de#inici7n de un arreglo de 8 elementos enteros
int n.si'eo#/nota01I, 11 devuelve el numero de bytes reservados para el array
cout CCM?amaBo del arreglo nota. M CC n CCendl,
N
* Crear )n arreglo no!a de 5 elemen!os y mos!rar s) con!enido inicial.
L
int notaD8F, 11 de#inicion de un arreglo de 8 elementos enteros
int n.si'eo#/nota01I, 11 tamaBo del arreglo
cout CCMtamaBo del arreglo. M CC n CCendl,
#or /int x.% , x C./n:!0 , x++0
cout CCM+ndice MCCx CCM contiene . M CCnotaDxF CCendl,
N
* Iniciali0aci1n
=ara iniciali'ar con cero todos los elementos del arreglo:
desde i . ! $asta 9% $acer
arreDiF . %
#in4desde

"enguaje de =rogramaci7n : =ro#. @os6 Aupanui =6re'
* Crear )n arreglo no!a de 5 elemen!os y Iniciali0ar s) con!enido y mos!rar.
L
int notaD8F,
int n.si'eo#/nota01I,
cout CCMtamaBo del arreglo. M CC n CCendl CC endl,
#or /int x.% , x C./n:!0 , x++0
notaDxF . %,
#or /x.% , x C./n:!0 , x++0
cout CCM+ndice MCCx CCM contiene . M CCnotaDxF CCendl,
N
O Crear )n arreglo !alla del !i2o real y PAIS del !i2o cadena de #5 carac!eres3 el !ama.o
de los arreglos es de 5 elemen!os. Iniciali0ar s) con!enido y mos!rar.
Pinclude Mstda#x.$M
Pinclude Miostream.$M
Pinclude Mstring.$M
int main/int argc, c$arO argvDF0
L #loat tallaD8F,
n.si'eo#/talla01I,
#or /int x.% , x C./n:!0 , x++0
talla.%.%, 11 iniciali'ar el arreglo ?G""G
c$ar paisD8FD!8F, 11 c$ar de !8 carcteres y de 8 arreglos
#or /int x.% , x C./n:!0 , x++0
strcpy/paisDxF,MM0, 11 iniciali'ar el arreglo =G+S
#or /x.% , x C.I , x++0 11 mostrar el contenido del arreglo =G+S
cout CCM+ndice MCCx CCM contiene . M CCpaisDxF CCendl,
N
O otra #orma de ingresar valores a un arreglo.
L int notaDIF.L!(,!3,!I,!8N,
#or /int x.% , xCI ,x++0
cout CCMEumero ingresados. MCCnotaDxF CC endl,
c$ar paisDIFD!%F.LM=EQUM,MHQGS+"M,MUQURUGAJKM,MECUG&;QMN,
#or /x.% , xCI ,x++0
cout CCM =aises ingresados. MCCpaisDxF CC endl,
N
OOEota: El arreglo pais tiene I posiciones de !% caracteres cada uno, pero al almacenar
in#ormaci7n en uno de ello solo acepta K caracteres, de lo contrario da error de over#loS.
"enguaje de =rogramaci7n : =ro#. @os6 Aupanui =6re'