Los arreglos son parte imprescindible para la realización de programas en cualquier lenguaje y para la resolución de casi todo tipo de problemas. Un arreglo es una colección de posiciones de almacenamiento de datos, donde cada una tiene el mismo tipo de dato y el mismo nombre. Cada posición de almacenamiento en un arreglo es llamada un elemento del arreglo. Los arreglos nos sirven para almacenar datos.
En esencia, un arreglo es una colección de datos del mismo tipo. Son estructuras de datos homogéneas que permiten almacenar un determinado número de datos bajo un mismo identificador, para luego referirse a los mismos utilizando uno o más subíndices. Los arreglos pueden pensarse como vectores o matrices. Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo.
Un vector, también llamado array unidimensional, es una estructura de datos que permite agrupar elementos del mismo tipo y almacenarlos en un solo bloque de memoria juntos, uno después de otro. A este grupo de elementos se les identifica por un mismo nombre y la posición en la que se encuentran. La primera posición del array es la posición 0 (cero).
Declaración y Dimensionamiento de Arreglos
Para poder utilizar un arreglo, primero es obligatorio su dimensionamiento; es decir, declarar los rangos de sus subíndices, lo cual determina cuántos elementos se almacenarán y cómo se accederá a los mismos.
Es importante tomar en cuenta que:
Lea también: IVA 21% Excel
- Todo vector debe tener definido un tipo de dato.
- Todo vector necesita de una dimensión o tamaño.
Crear un vector en C++ es sencillo, siguiendo la siguiente sintaxis:
Tipo nombre[tamaño];
Podríamos también inicializar el vector en la declaración. Por ejemplo, si hay 5 elementos en un array, automáticamente se le asignará 5 espacios de memoria a cada vector. Un ejemplo de declaración e inicialización de una matriz (arreglo de dos dimensiones) sería: int myMatriz1[2][2] = {{1,2},{3,4}}; Aquí hemos declarado una matriz de tipo int de dos filas y dos columnas y la hemos inicializado con diferentes valores. El valor inicial corresponde a la casilla 0,0 (fila cero, columna cero) y tiene el valor de 1, en la fila cero columna uno tenemos el valor de 2, en la fila uno columna cero el valor de 3 y finalmente en la fila uno columna uno el valor de 4. Es importante notar que tanto la fila como la columna comienzan desde cero y no desde uno.
La instrucción Dimension permite declarar un arreglo, indicando sus dimensiones: Dimension <identificador> (<maxl>,...,<maxN>); Esta instrucción define un arreglo con el nombre indicado en <identificador> y N dimensiones. Si se utilizan arreglos en base 0, al declarar un arreglo de, por ejemplo 15 elementos, los índices de elementos válidos van de 0 a 14; mientras que si se utilizan arreglos en base 1 los índices válidos van de 1 a 15.
Asignación y Acceso a Elementos de un Arreglo
En cuanto tenemos declarado un arreglo o matriz, es posible asignarle valores a cada una de sus casillas, evidentemente estos valores deben coincidir con el tipo de dato que le asignamos a dicha matriz. Por lo general, es más práctico asignar valores al arreglo utilizando un ciclo for. Aquí consideramos que el arreglo se llama grupo y que tiene capacidad para 10 elementos. Entonces el primer elemento está en la ubicación 0 y el último elemento en la ubicación 9.
Lea también: Guía IVA reducido
Para asignar valores a los elementos de un vector, se indica su posición. Por ejemplo, en un escenario el sistema muestra el mensaje «Escriba el valor 0», y el usuario tecleará el valor y éste se guardará en la ubicación 0.
Para llenar, recorrer e imprimir un vector podemos utilizar un bucle for. Vamos a mostrar el contenido de todo el arreglo, un valor en su propia línea. En este ejemplo notará que utilizamos i<10 para recorrer el arreglo. La salida del programa podría mostrar: 0 10 20 30 40 50 60 70 80 90. Esto ayuda mucho a ir desarrollando la lógica de cómo interactuar con los elementos del arreglo.
Declaración y Uso de Funciones con Arreglos
Las funciones se utilizan en el pseudocódigo y lenguajes de programación de forma similar, colocando su nombre seguido de los argumentos encerrados entre paréntesis. Los parámetros de una función pueden ser de tipo Int, Char, Float, etc.
Es común y muy eficiente utilizar funciones para procesar o manipular arreglos.
Paso de Arreglos a Funciones
Por default, los arreglos en C se pasan a una función como referencia y no como valor. Para llamar a una función que recibe un arreglo, se pone como primer argumento el nombre del arreglo (sin corchetes) y como segundo argumento el número de elementos del arreglo.
Lea también: ¿Cómo localizar tus XML del SAT?
Veamos algunos ejemplos de cómo se declaran y utilizan funciones con arreglos:
- El programa puede utilizar una función llamada BuscaNumero que recibe como parámetros el arreglo con los 10 números capturados, el número de elementos del arreglo (en este caso 10) y el número del cual se desea saber su posición dentro del arreglo.
- Otra función es MuestraArreglo, la cual no regresa valor alguno, sólo recibe como parámetros el arreglo y el número de elementos para mostrarlos en pantalla.
- Para arreglos de dos dimensiones, el siguiente programa le pide al usuario que introduzca 9 números y los almacena en una matriz de 3×3; posteriormente utiliza una función llamada ImprimeMatriz para mostrar cómo quedaron almacenados los números en la matriz.
Como podemos observar, el parámetro de la función (ej. "arreglo") y la variable que le pasamos desde la función principal (ej. "arre") son compatibles, permitiendo a la función operar sobre los datos del arreglo.
Operaciones Típicas con Arreglos en Funciones
Por lo general, necesitaremos utilizar los valores del arreglo en operaciones. Podemos utilizar instrucciones condicionales usando los valores de un arreglo. Por ejemplo, podemos comparar -usando un if- si el valor de la posición actual del arreglo es mayor que un valor guardado.
El cálculo de la desviación estándar es un ejemplo del uso de arreglos que requiere un procesamiento dentro de una función. Se necesita acceder a los datos 2 veces: la primera para obtener la media. Teniendo ese dato listo, lo siguiente es crear un for que recorra los diez elementos del arreglo. Guardará la diferencia entre cada dato grupo[i] y su media (media). Esa diferencia se eleva al cuadrado. Después de cerrar ese ciclo, se divide el total entre 10 (el número de elementos).
Un enfoque común es elaborar dos funciones: una donde se cree y cargue el arreglo, y otra que sume todos sus elementos y retorne dicho valor a la función principal (main) donde se lo imprima. Estas funciones ilustran cómo se puede modularizar el trabajo con arreglos.
Ejecución de Funciones desde Elementos de un Arreglo
ATENCIÓN: Los conceptos a continuación requieren de conocimiento previo en fundamentos de programación.
Además de pasar arreglos a funciones, es posible ejecutar funciones desde el contenido de un arreglo; es decir, desde sus elementos. Si definimos un arreglo con elementos clave-valor, y luego una función con parámetros en forma de variable (que representarán a futuro el papel de una clave y de un valor de cada elemento del arreglo); y finalmente aplicamos una función como array_walk(nombreArreglo, nombreFuncion), el resultado será la activación del contenido de la función para cada elemento del arreglo. Así mismo, para elementos únicos de arreglo, sin la dupla clave/valor, este recurso ejecutará el contenido de la función para cada elemento del arreglo. Es importante recordar que, aunque los elementos de un arreglo no contengan la dualidad clave/valor explícita, un elemento por sí mismo ya tiene su clave, que es su índice natural desde el cero en adelante.
