Está en la página 1de 27

Array

Fuentes Reza Yoav Osvaldo


Santibañez León Diego
Valenzuela Ortiz Lenny
Definición de Array
Un array(lista o tabla,arreglo) es una secuencia de datos del mismo tipo. Los datos se
llaman elementos del array y se numeran consecutivamente 0, 1, 2, 3, etc. El tipo de
elementos almacenados en el array puede ser cualquier tipo de dato de C, incluyendo
estructuras definidas por el usuario. Normalmente el array se utiliza para almacenar
tipos tales como char, int o float.

Un array puede contener, por ejemplo, la edad de los alumnos de una clase, las
temperaturas de cada día de un mes en una ciudad determinada, o el número de
personas que residen en cada una de las 17 comunidades autónomas españolas.
Cada ítem del array se denomina elemento.
Declaración de un Array
Al igual que con cualquier tipo de variable, se debe declarar un array antes de
utilizarlo. Un array se declara de modo similar a otros tipos de datos, excepto que
se debe indicar al compilador el tamaño o longitud del array. Para indicar al
compilador el tamaño o longitud del array se debe hacer seguir al nombre, el
tamaño encerrado entre corchetes.
Sintaxis:
Declaración de un Array
Por ejemplo:

Para crear un array (lista) de diez variables enteras, se escribe: int numeros [10];
Esta declaración hace que el compilador reserve espacio suficiente para contener
diez valores enteros. En C los enteros ocupan, normalmente, 2 bytes, de modo
que un array de diez enteros ocupa 20 bytes de memoria. Cada elemento puede
tener su propio valor.
Declaración de un Array
Se puede acceder a cada elemento del array utilizando un índice en el nombre
del array. Por ejemplo:

printf("%d \n",números[4]);

Visualiza el valor del elemento 5 del array. Los arrays siempre comienzan en el
elemento 0. Así pues,el array numeros contiene los siguientes elementos
individuales:

números[0] números[1] números[2] números[3] números[4] números[5]


números[6] números[7] números[8] números[9]
Subíndices de un Array
El índice de un array se denomina, con frecuencia, subíndice del array. El término
procede de las matemáticas, en las que un subíndice se utiliza para representar
un elemento determinado.
Números 0 equivale a números [0]
Números 3 equivale a números [3]
Almacenamiento en memoria de los Arrays
Los elementos de los arrays se
almacenan en bloques contiguos.
Los arrays de caracteres
funcionan de igual forma que los
arrays numéricos, partiendo de la
base de que cada carácter ocupa
normalmente un byte. Así, por
ejemplo, un array llamado
nombre.
El tamaño de los Arrays
El operador sizeof devuelve el número de bytes necesarios para contener su argumento. Si
se usa sizeof para solicitar el tamaño de un array, esta función devuelve el número de bytes
reservados para el array completo.

Por ejemplo, suponiendo que se ha declarado un array de enteros de 100 elementos


denominado edades;si se desea conocer el tamaño del array, se puede utilizar una
sentencia similar a:

n = sizeof(edades);

donde tomará el valor 200 en el supuesto de que el tipo int ocupe 2 bytes. Si se desea
solicitar el tama-ño de un elemento individual del array, tal como:

n = sizeof(edades[6]);
Verificación del rango del índice de un array

Paso a una función un array y como segundo argumento el tamaño o número de elementos.
INICIALIZACIÓN DE UN ARRAY
Se deben asignar valores a los elementos del array antes de utilizarlos, tal como se asignan valores a
variables.
Para asignar valores a cada elemento del array de enteros precios, se puede escribir:
precios[0] = 10;
precios[1] = 20;
precios[3] = 30;
precios[4] = 40;
La primera sentencia fija precios[0] al valor 10, precios[1] al valor 20, etc. Sin embargo, este método no
es práctico cuando el array contiene muchos elementos. El método utilizado, normalmente, es inicializar
el array completo en una sola sentencia. Cuando se inicializa un array, el tamaño del array se puede
determinar automáticamente por las constantes de inicialización. Estas constantes se separan por comas
y se encierran entre llaves, como en los siguientes ejemplos:
int numeros[6] = {10, 20, 30, 40, 50, 60};

int n[ ] = {3, 4, 5} /* Declara un array de 3 elementos */

char c[ ] = {’L’,’u’,’i’,’s’}; /* Declara un array de 4 elementos */

El array numeros tiene 6 elementos, n tiene 3 elementos y el array c tiene 4 elementos.

En C los arrays de caracteres, las cadenas, se caracterizan por tener un carácter final que indica el fin

de la cadena, es el carácter nulo. Lo habitual es inicializar un array de caracteres (una variable cadena) con
una constante cadena.

char s[ ] = "Puesta del Sol";

C puede dejar los corchetes vacíos, sólo cuando se asignan valores al array, tal como

int cuenta[ ] = {15, 25, -45, 0, 50};

El compilador asigna automáticamente cinco elementos a cuenta.


El método de inicializar arrays mediante valores constantes después de su definición es adecuado
cuando el número de elementos del array es pequeño. Por ejemplo, para inicializar un array (lista) de 10
enteros a los valores 10 a 1, y a continuación visualizar dichos valores en un orden inverso, se puede
escribir:
int cuenta[10] = {10, 9, 8, 7, 6, 5, 4, 3, 2, 1};
for (i = 9; i >= 0; i––)
printf("\n cuenta descendente %d = %d",i,cuenta[i]);
Se pueden asignar constantes simbólicas como valores numéricos, de modo que las sentencias
siguientes son válidas:
#define ENE 31
#define FEB 28
#define MAR 31
int meses[12] = {ENE, FEB, MAR, ABR, MAY, JUN, JUL, AGO, SEP, OCT, NOV, DIC};
Pueden asignarse valores a un array utilizando un bucle for o while/do-while, y éste suele ser el
sistema más empleado normalmente. Por ejemplo, para inicializar todos los valores del array numeros
al valor 0, se puede utilizar la siguiente sentencia:

for (i = 0; i <= 5; i++)

numeros[i] = 0;

Debido a que el valor del subíndice i varía de 0 a 5, cada elemento del array numeros se inicializa y
establece a cero.

Si se define un array globalmente o un array estático y no se proporciona ningún valor de


inicialización, el compilador inicializa el array con un valor por defecto (cero para arrays de elementos
enteros y reales (coma flotante) y carácter nulo para arrays de caracteres).
ARRAYS DE CARACTERES Y CADENAS DE TEXTO:
Una cadena de texto es un conjunto de caracteres, tales como "ABCDEFG".
C soporta cadenas de texto utilizando un array de caracteres que contenga una
secuencia de caracteres:
char cadena[ ] = "ABCDEFG";
Es importante comprender la diferencia entre un array de caracteres y una
cadena de caracteres. Las cadenas contienen un carácter nulo al final del array
de caracteres y también las cadenas se deben almacenar en arrays de
caracteres, pero no todos los arrays de caracteres contienen cadenas.
Las cadenas se señalan incluyendo un carácter al final de la cadena: el carácter
nulo (\0), cuyo valor en el código ASCII es 0. El medio más fácil de inicializar un
array de caracteres es hacer la inicialización en la declaración:

char Cadena[7] = "ABCDEF";

El compilador inserta automáticamente un carácter nulo al final de la cadena, de


modo que la secuencia real sería:
La asignación de valores a Cadena se puede hacer del modo siguiente:
Cadena[0] = ’A’;
Cadena[1] = ’B’;
Cadena[2] = ’C’;
Cadena[3] = ’D’;
Cadena[4] = ’E’;
Cadena[5] = ’F’;
Cadena[6] = ’\0’;
Sin embargo, no se puede asignar una cadena a un array del siguiente modo:
Cadena = "ABCDEF";
Para copiar una constante cadena o copiar una variable de cadena a otra variable
de cadena se debe utilizar la función de la biblioteca estándar —posteriormente
se estudiará— strcpy() («copiar cadenas»). strcpy() permite copiar una constante
de cadena en una cadena. Para copiar el nombre "Abracadabra" en el array
nombre, se puede escribir:
strcpy(nombre, "Abracadabra"); /* Copia Abracadabra en nombre */
strcpy() añade un carácter nulo al final de la cadena.A fin de que no se produzcan
errores en la sentencia anterior, se debe asegurar de que el array de caracteres
nombre tenga elementos suficientes para contener la cadena situada a su
derecha.
Arrays multidimensionales
Se conocen como arrays unidimensionales (una sola dimensión) y se caracterizan
por tener un solo subíndice. Estos arrays se conocen también por el término listas.
Los arrays multidimensionales son aquellos que tienen más de una dimensión y,
en consecuencia, más de un índice. Un array de dos dimensiones equivale a una
tabla con múltiples filas y múltiples columnas
Inicialización de arrays multidimensionales
Los arrays multidimensionales se pueden inicializar, al igual que los de una dimensión,
cuando se declaran. La inicialización consta de una lista de constantes separadas por
comas y encerradas entre llaves. Ejemplos
int tabla[2][3] = {51, 52, 53, 54, 55, 56};
o bien en los formatos más amigables:
int tabla[2][3]= { {51, 52, 53},
{54, 55, 56} }; int tabla[2][3]= {{51, 52, 53},
{54, 55, 56}};
int tabla[2][3]= { {51, 52, 53}, {54, 55, 56}
Acceso a los elementos de los arrays bidimensionales
Se puede acceder a los elementos de arrays bidimensionales de igual forma que a los elementos de un
array unidimensional. La diferencia reside en que en los elementos bidimensionales deben especificarse
los índices de la fila y la columna
El formato general para asignación directa de valores a los elementos es:

inserción de elementos

<nombre array> [indice fila] [indice columna] = valor elemento;

extracción de elementos

<variable> = <nombre array>[indice fila] [indice columna];


Algunos ejemplos de inserciones:

Tabla[2][3] = 4.5;

Resistencias[2][4] = 50;

AsientosLibres[5][12] = 5;

y de extracción de valores:

Ventas = Tabla[1][1]; Dia = Semana[3][6];


Lectura y escritura de elementos de arrays
bidimensionales
Las funciones de entrada o salida se aplican de igual forma a los elementos de un array bidimensional.
Por ejemplo:

int tabla[3][4];

double resistencias[4][5];

scanf("%d",&tabla[2][3]);

printf("%4d",tabla[1][1]);

scanf("%lf",&resistencias[2][4]);

if (asientosLibres[3][1]) puts("VERDADERO");

else

puts("FALSO");
Acceso a elementos mediante bucles
Se puede acceder a los elementos de arrays bidimensionales mediante bucles
anidados, el bucle externo para el acceso a las filas y el bucle interno para las
columnas. Su sintaxis es:

int IndiceFila, IndiceCol;

for (IndiceFila = 0; IndiceFila < NumFilas; ++IndiceFila)

for (IndiceCol = 0; IndiceCol < NumCol; ++IndiceCol)

Procesar elemento [IndiceFila][IndiceCol];


Arrays de más de dos dimensiones
C proporciona la posibilidad de almacenar varias dimensiones, aunque raramente
los datos del mundo real requieren más de dos o tres dimensiones. El medio más
fácil de dibujar un array de tres dimensiones es imaginar un cubo.

Un array tridimensional se puede considerar como un conjunto de arrays


bidimensionales combinados juntos para formar, en profundidad, una tercera.
Proceso de un array de tres dimensiones
El array libro tiene tres dimensiones [PAGINAS] [LÍNEAS] [COLUMNAS], que
definen el tamaño del array. El tipo de datos del array es char, ya que los
elementos son caracteres.

¿Cómo se puede acceder a la información del libro? El método más fácil es


mediante bucles anidados. Dado que el libro se compone de un conjunto de
páginas, el bucle más externo será el bucle de página; y el bucle de columnas el
bucle más interno. Esto significa que el bucle de filas se insertará entre los bucles
página y columna.
El código siguiente permite procesar el array.
int pagina, linea, columna;

for (pagina = 0; pagina < PAGINAS; ++pagina)

for (linea = 0; linea < LINEAS; ++linea)

for (columna = 0; columna < COLUMNAS; ++columna)

<procesar libro [página][línea][columna]>

También podría gustarte