Está en la página 1de 18

Estructuras de Datos Grupo 01, Ciclo 02-2020

Arreglos (arrays)
❖ Introducción
❖ Argumentos de funciones
❖ Matrices (tablas)

1
Objetivo
Aprender a declarar arreglos y procesarlos.

2
Arreglos
• Un arreglo (array) es una secuencia de datos del mismo tipo. Los
datos se llaman elementos del arreglo y se numeran
consecutivamente 0, 1, 2, 3, … Estos números se denominan índices
(o subíndices, dependiendo del autor) del arreglo.

• Para acceder a un elemento del arreglo, se escribe el nombre del


arreglo seguido del índice entre corchetes. En general, el n-ésimo
elemento de un array está en la posición n-1. Ejemplos:

a[0] accede al elemento en la posición 0 del array a (1er. elemento)


a[5] accede al elemento en la posición 5 del array a (6to. elemento)
3
Arreglos
c[0] -45 • Los elementos de un array se
Nombre del arreglo almacenan en bloques
(note que todos los c[1] 6
elementos de este contiguos de memoria
arreglo tienen el
mismo nombre: c)
c[2] 0

c[3] 72
• Todos los índices de un array
con n elementos comienzan
c[4] 1543 en 0 y terminan en n-1
c[5] 89
• El nombre del array es un
c[6] -3 puntero al primer elemento
(más información en breve)
El número de posición del elemento dentro del arreglo c
4
Declaración de arreglos
• Un arreglo se declara así:
tipo_dato nombre_arreglo[numero_elementos];

• Ejemplos de declaraciones de arreglos:


int c[10]; /* Arreglo de 10 enteros */
float d[3284]; /* Arreglo de 3284 floats */

• Es posible declarar múltiples arreglos del mismo tipo, usando una


lista separada por comas, como las variables normales:
int b[100], x[27];

5
Inicialización de arreglos
• Con un bucle for, para establecer el valor de cada elemento

• Lista de inicialización. Especificar cada elemento, en una lista entre


llaves y separada por comas, al declarar el array:
float temperaturas[4] = {24.2, 34.1, 25.3, 28.7};

• Si hay muy pocos valores en la lista, los elementos de más a la


derecha se rellenan con ceros. Si hay muchos, error de sintaxis.

• Si el tamaño se omite, los inicializadores lo determinan:


int n[] = {1, 2, 3, 4, 5}; /* 5 elementos */
6
Declaración e inicialización de arreglos

7
Declaración e inicialización de arreglos

8
Validación de límites de arreglo
C++, al contrario que otros lenguajes de programación, no verifica el
índice de los elementos. Por ejemplo, si se declara el arreglo:

int a[5]; /* Array con 5 elementos */

La siguiente sentencia no produce un error en tiempo de ejecución:


a[7] = 3 /* La posición 7 no existe en el array */

Moraleja: Valide siempre los índices de un array..

9
Declaración de arreglos
• Además de la sintaxis tradicional para declarar arreglos
tipo_dato nombre_arreglo[numero_elementos];

C++ provee la biblioteca <array>, que permite declarar arreglos de


forma más robusta que con los arreglos tradicionales. Para usarla,
coloque la siguiente línea al principio de su programa:

# include <array>

10
Uso de la biblioteca array

11
Arreglos como argumentos de funciones
• Prototipo de la función:

float promedio(float a[], int n);


float promedio(float[], int);

• Nombres de variables son opcionales, ignorados por el compilador

• No se necesita colocar el tamaño del array entre los corchetes

• Si el parámetro se declara como const no se puede modificar

12
Arreglos como argumentos de funciones
Pasar arreglo junto con el
número de elementos del
arreglo como parámetro a la
función

13
Matrices
• Múltiples subíndices: a[i][j]

• Tablas con filas y columnas: especifique la fila, luego la columna

• Arreglos de arreglos: a[0] es un array de 4 elementos, a[0][0]


es el primer elemento de ese arreglo:
Columna 0 Columna 1 Columna 2 Columna 3
Fila 0 a[ 0 ][ 0 ] a[ 0 ][ 1 ] a[ 0 ][ 2 ] a[ 0 ][ 3 ]
int a[3][4] Fila 1 a[ 1 ][ 0 ] a[ 1 ][ 1 ] a[ 1 ][ 2 ] a[ 1 ][ 3 ]

Fila 2 a[ 2 ][ 0 ] a[ 2 ][ 1 ] a[ 2 ][ 2 ] a[ 2 ][ 3 ]

Subíndice de columna

Nombre del array


Subíndice de fila
14
Matrices
Para inicializar:
• Por defecto se inicializan con 0
• Inicializadores agrupados por fila entre llaves:
1 2
int b[ 2 ][ 2 ] = { { 1, 2 }, { 3, 4 } };
3 4
Fila 0 Fila 1

1 0
int b[ 2 ][ 2 ] = { { 1 }, { 3, 4 } };
3 4

15
Matrices
Prototipos de funciones deben especificar el tamaño de los subíndices:
• El primer subíndice no es necesario
• El resto de las dimensiones deben indicarse explícitamente
Ejemplo:
void imprimirArreglo(int[][3]);

Arreglos multidimensionales son sólo una abstracción para


programadores, internamente C++ los representa como arreglos
unidimensionales: int arr[3][5]; equivale a int arr[15];
• Arreglo: arr[filas][columnas] -> arr[filas * columnas]
• Elemento: arr[i][j] -> arr[i * columnas + j]

16
Imprimir un arreglo

17
Imprimir un arreglo

18

También podría gustarte