EL TIPO COMPUESTO BASICO: Los Arrays CONTENIDOS
1. Introduccin al tipo de dato ARRAY. Definicin, Caractersticas, Declaracin, Acceso e Inicializacin. 2. Arrays multidimensionales Definicin, Declaracin, Acceso e Inicializacin.
EL TIPO COMPUESTO BASICO: Los Arrays
1
Introduccin al tipo de dato ARRAY
EL TIPO COMPUESTO BASICO: Los Arrays Introduccin
Hasta ahora hemos visto los tipos de datos simples de C++, y sus caractersticas .
int ( Nmeros enteros ) float, double ( Nmeros reales ) bool ( Valores lgicos ) char ( Caracteres y cualquier cantidad de 8 bits ) void ( Nada. Sirve para indicar que una funcin no devuelve valores )
Tambin se ha visto cmo declarar y utilizar constantes utilizando const y el tipo enumerado enum . Ahora vamos a introducir un tipo de dato definido por el programador:
el tipo array
3
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Definicin
z Un Array es un conjunto finito de valores del mismo tipo. z Un Array es una estructura de datos que almacena bajo el mismo nombre (variable) a una coleccin de datos del mismo tipo. z Un Array es un conjunto de variables del mismo tipo que tienen el mismo nombre y se diferencian en el ndice.
Letras = a z r j
A cada dato almacenado se le denomina elemento del array o tem. Cada elemento del array est numerado, y a ste nmero se le denomina ndice.
4
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Caractersticas
Los elementos del array se numeran consecutivamente comenzando con 0, 1, 2,
letras = a 0 z 1 r 2 j 3 ndice
Estos nmeros, los ndices, permiten localizar cada elemento del array.
letras[0] es el elemento que est en la posicin 0, letras[1] es el elemento que est en la posicin 1, etc array de 4 elementos
Los elementos almacenados en el array pueden ser de cualquier tipo: tipos simples como: int, char, bool, float tipos definidos por el programador como por ejemplo estructuras (hablaremos de ellas ms tarde).
5
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Declaracin de un array
Se declara de forma similar a cualquier otro tipo de datos, solo que hay que indicarle al compilador el nmero de elementos que forma el array: tamao longitud del array.
<tipo_de_dato> <nombre_de_variable> [numero_de_elementos];
Sintaxis
Tipo de dato
Nombre_de_variable
Num_elementos
Ejemplos:
char letras[4]; int edades[10];
// variable letras de tipo array de 4 elementos de tipo char // variable edades de tipo array de 10 elementos de tipo entero.
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Declaracin de un array
El compilador reserva espacio en memoria en posiciones contiguas.
char letras[4]; int edades[10];
letras[0] letras[1] letras[2] letras[3]
El array letras ocupa 4 bytes de memoria.
...
... ...
Cuando declaramos el array edades lo que hacemos es reservar un espacio de memoria para 10 variables de tipo int.
1 2
...
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
El array edades ocupa 20 bytes consecutivos de memoria (2 bytes por elemento).
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Declaracin de un array
Si queremos saber el nmero de bytes que necesitamos para almacenar un array en memoria, podemos utilizar la funcin sizeof(). En nuestro caso, sizeof (edades) = 20.
Cabecera stdio.h
int edades[10];
1 2
...
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9]
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Acceso a los elementos de un array
Para acceder a los elementos de un array hay que poner el nombre y el ndice del elemento al que queremos acceder referenciar.
int primera = 1, k = 3; char letras[4]; cout << letras[0]; //visualiza la letra a cout << letras[2]; //visualiza la letra r cin >> letras[0]; letras[2] = R; letras[0] = letras[primera+2]; cout << letras[k-2]; //visualiza la letra z .. letras =
a z r 0 1 2
j 3
Podemos visualizar el valor de los elementos de un array
Modificar el valor de los elementos de un array Acceder a los elementos utilizando frmulas
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Acceso a los elementos de un array
Si necesitamos acceder a todos los elementos, utilizaremos un bucle de tipo for:
Sintaxis for ( int j = 0; j < num_elementos ; j++ ) procesar_elemento [j]; Variable de control j para recorrer cada uno de los elementos
char letras[4];
for ( int j = 0 ; j < 4 ; j++ ) { cout << Introduzca el elemento : << j+1 ; cin >> letras[j]; cout << endl; }
...
Pasada 1 2 3 4
j 0 1 2 3
Salida por pantalla Introduzca el elemento: 1 Introduzca el elemento: 2 Introduzca el elemento: 3 Introduzca el elemento: 4
10
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Acceso a los elementos de un array
C++ no comprueba que los ndices del array estn dentro del rango permitido. Si escribimos cout << letras[4]; no tendremos error de compilacin, pero el programa no funcionar correctamente. El cdigo ASCII del carcter + es 43
letras[2] letras[0] letras[1]
letras[3]
107
97
122
114 74
43
63
78
...
...
... letras =
a z r 0 1 2
j 3
11
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Inicializacin de un array
Antes de empezar a utilizar una variable de tipo array hay que asignar valores a cada uno de sus elementos. Tenemos varias formas de inicializar un array: 1. Inicializacin en la declaracin:
char letras[4] = { a, z, t, j }; int edades[] = { 10, 20, 30, 40, 50, 60 }; char saludo[] = { h, o, l, a }; char saludo[] = { hola }; ...
Los valores se encierran entre llaves y se separan por comas. C++ permite omitir el tamao del array cuando se inicializa. El compilador reserva memoria para un array de enteros de tamao 6.
Los array de caracteres se pueden inicializar de stas dos formas.
12
EL TIPO COMPUESTO BASICO: Los Arrays El tipo Array: Inicializacin de un array
2. Inicializacin elemento a elemento en el cuerpo del programa:
letras[0] = a; letras[1] = z; letras[2] = r; letras[3] = j;
Este mtodo no es muy prctico cuando tenemos muchos elementos.
3. Inicializacin mediante una sentencia FOR:
int edades[ 6 ]; int valor = 10; for (int i = 0; i<6 ; i++ ) { edades[i] = 10; valor = valor + 10 ; } int temperatura[ 10 ]; for (int i = 0; i<10; i++) edades[i] = 0;
Temperatura = 0 0 0 0 0 0 0 0 0 0
edades =
13
10 20 30 40 50 60
EL TIPO COMPUESTO BASICO: Los Arrays
2
ARRAYS multidimensionales
14
EL TIPO COMPUESTO BASICO: Los Arrays Arrays multidimensionales: Definicin
Los arrays que hemos visto anteriormente se conocen como arrays unidimensionales y se caracterizan por tener un solo ndice. Tambin se conocen como listas de elementos y se corresponden con el concepto de vector. Los arrays multidimensionales son aquellos que tienen ms de una dimensin y por tanto tienen ms de un ndice. Los ms utilizados son los de dos dimensiones, conocidos con el nombre de tablas. Se corresponden con el concepto de matriz. C++ permite trabajar con arrays de de tantas dimensiones como requieran las aplicaciones ( 3, 4 ms dimensiones).
15
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Definicin
Un array de dos dimensiones se corresponde con una tabla con varias filas y varias columnas.
0 ndice para las filas 0 1 2 1 4 3 1 2 1 2 2 3 2 1 3 4 3 4 ndice para las columnas
Cada elemento almacenado en el array est identificado por dos ndices, sus coordenadas, la fila y la columna en la que se encuentra dicho elemento. Ambos ndices se numeran consecutivamente comenzando con 0, 1, 2,
16
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Declaracin
Se declara de forma similar al tipo de dato array de una dimensin, solo que hay que indicarle al compilador el tamao de cada uno de los ndices, es decir, el nmero de filas y el nmero de columnas.
<tipo_de_dato> <nombre_de_variable> [num_filas] [num_columnas];
Sintaxis
Tipo de dato
Nombre_de variable
Num_filas
Num_columnas
Ejemplos:
char tablero[8][8]; // variable llamada tablero de tipo array de dos dimensiones (8 filas y
8 columnas). Alamacena 64 elementos de tipo char.
int matriz[3][4];
// variable llamada matriz de tipo array de dos dimensiones (3 filas y 4 columnas). Almacena 12 elementos de tipo entero.
17
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Declaracin
Al igual que en los arrays de una dimensin, el compilador reserva espacio en memoria en posiciones contiguas. Primero se almacenan los datos de la primera fila, luego los de la segunda, ...
int matriz[3][4];
0 1 2
0 1 4 3
1 2 1 2
2 3 2 1
3 4 3 4
El array matriz ocupa 24 bytes consecutivos de memoria.
Cuando declaramos el array matriz lo que hacemos es reservar un espacio de memoria para 12 variables de tipo int.
...
[0][0] [0][1] [0][2] [0][3] [1][0]
... .
Primera fila
18
Segunda fila
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Acceso a los elementos
Se puede acceder a los elementos de un array bidimensional de forma similar a como lo hacamos para arrays de una dimensin. Hay que poner el nombre y los ndices (fila y columna) del elemento al que queremos acceder referenciar.
int j = 0; char valor ;
int matriz[3][4]; char cuadro[3][3]; cout <<matriz[0][3];
Podemos visualizar el valor de los elementos de un array
cin >> matriz[1][ j+1 ]; cuadro[2][2] = R;
Modificar el valor de los elementos de un array Acceder a los elementos para extraer valores
valor = cuadro[2][1];
...
19
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Acceso a los elementos
Si necesitamos acceder a todos los elementos de un array bidimensional, utilizaremos un doble bucle for.
for ( int i = 0; i < num_filas ; i++ ) for ( int j = 0 ; j < num_columnas ; j ++ ) procesar_elemento [i][j]; Variable de control i para recorrer las filas Variable de control j para recorrer las columnas
Sintaxis
int matriz[3][4];
for ( int i = 0 ; i < 3 ; i++ ) for ( int j = 0 ; j < 4 ; j++ ) { cout << El elemento << i+1 << j+1 << es: ; cout << matriz [i] [j] << endl; }
...
20
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Inicializacin
Al igual que los arrays de una dimensin, tenemos varias formas de inicializar un array: 1. Inicializacin en la declaracin:
Los valores se encierran entre llaves y se separan por comas. 0 1 2 0 1 4 3 1 2 1 2 2 3 2 1 3 4 3 4 2 30 2
int matriz[3][4] = { 1, 2, 3, 4, 4,1,2, 3, 3, 2,1,4 }; int valores[2][3] = { {10, 20, 30}, {0,1,2} }; char cuadro[3][3] = { { B, N, N }, { N, N, N }, { B, B, B } }; ...
21
0 0 1 2
B N B
1
N N B
0 1 2
N N B
0 1 10 20 0 1
EL TIPO COMPUESTO BASICO: Los Arrays Arrays bidimensionales: Inicializacin
2. Inicializacin elemento a elemento en el cuerpo del programa:
matriz[0][0] = 1; matriz[0][1] = 2; matriz[0][2] = 3; ... matriz[2][3] = 4;
Poco prctico como ocurra en arrays de una dimensin.
3. Inicializacin mediante una doble sentencia FOR:
int valores[2][3] int dato = 10; for (int i = 0; i<2 ; i++ ) for (int j = 0; j<3 ; j++ ) { valores[i][j] = dato; dato = dato + 10 ; }
Variable de control i para recorrer las filas 0 1 Variable de control j para recorrer las columnas
0 1 10 20 40 50
2 30 60
22
EL TIPO COMPUESTO BASICO: Los Arrays Ms sobre inicializacin de Arrays:
Si un array se declara globalmente, y no se inicializa en dicha declaracin, el compilador se encarga de inicializarlo automticamente con un valor por defecto. Si no declaran globalmente, pero se inicializan uno o ms elementos pero no todos, el compilador inicializa automticamente el resto de elementos con un valor por defecto. Si el array almacena elementos de tipo entero o real: El valor por defecto es 0.
23
Si el array almacena elementos de tipo carcter: El valor por defecto es el carcter nulo \0.
EL TIPO COMPUESTO BASICO: Los Arrays Ms sobre inicializacin de Arrays: Ejemplo:
#include <iostream.h> int matriz[3][4]; char cuadro[3][3];
0 1 2
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
0 0 1 2
\0 \0 \0
1
\0 \0 \0
2
\0 \0 \0
matriz ventas 3.2 0 1 6 0 0 0 1 2 0 0 0 0 2
cuadro 0 3
void main() { float ventas[4] = {3.2}; int otrocuadro[3][3] = { 7, 6 }; ... }
24
0 1 2
0 7 0 0
otrocuadro