Codificación aprenderaprogramar.com: CU00129A
ARRAYS (ARREGLOS) MULTIDIMENSIONALES.
Supongamos una academia en la que se imparten cuatro asignaturas de idiomas con tres niveles: básico, medio y perfeccionamiento. Para el tratamiento informático de datos podemos recurrir a un array de dos localizadores. Trasladaremos siempre la realidad a forma matemática. En este caso, podríamos decir:
La definición como variables normales sería algo así:
Clave: N = nivel Función de variable: indicar el número de alumnos en un grupo dado I = idioma
N1I1, N1I2, N1I3, N1I4, N2I1, N2I2, N2I3, N2I4, N3I1, N3I2, N3I3, N3I4. |
La definición como matriz sería algo así:
Normalmente no nos interesa representar la matriz indicando la posición de las variables, sino su contenido. Así podríamos tener:
La matriz anterior nos informaría de que en el nivel 2 (nivel medio), idioma 3 (alemán), hay 7 alumnos.
El tratamiento de datos, al igual que indicáramos para el caso de arrays de un localizador, resulta muy ventajoso usando matrices en vez de variables normales. Así para calcular el número de alumnos totales podríamos:
a) Con variables normales efectuar un sumatorio del tipo:
TOTAL = N1I1 + N1I2 + N1I3 + N1I4 + N2I1 + N2I2 + N2I3 + N2I4 + + N3I1 + N3I2 + N3I3 + N3I4 |
b) Con variables con índice usar una instrucción del tipo:
TOTAL = TOTAL + NI (i,j) para i enteros entre 1 y 3, y j enteros entre 1 y 4 |
Aunque las variables con uno o dos localizadores son las más usadas, podremos recurrir a tantos localizadores como estimemos necesarios. La representación matemática o visual ya no es tan sencilla. Para interpretarlos o saber cuándo usarlos, recurriremos a pensar que cada uno de los localizadores representa una característica, condicionante, o parámetro definidor del elemento.
Volvamos al ejemplo del conteo de coches. El tipo de variable a usar depende de qué queramos hacer. Así podríamos plantear:
Duración del conteo |
Tipo de variables a emplear |
Ejemplo |
Un día
|
Array de un localizador (hora) |
Nc(1), Nc(2),Nc(3),... |
Varios días |
Array de dos localizadores (hora y día) |
Nc(1,1), Nc(2,1), Nc(3,1),... Nc(1,2), Nc(2,2), Nc(3,2),...
|
Varios meses |
Array de tres localizadores (hora, día y mes)
|
Nc(1,1,1), Nc(2,1,1),.... |
Varios años |
Array de cuatro localizadores (hora, día, mes y año) |
Nc(1,1,1,2005), Nc(2,1,1,2005),...
|
La interpretación de cada variable pasaría por interpretar el significado de cada localizador. Así:
Nc(1) equivaldría a “Número de coches en la hora 1” Nc(3,2) equivaldría a “Número de coches en la hora 3 del día 2” Nc(2,1,4) equivaldría a “Número de coches en la hora 2 del día 1 del mes 4” Nc(15,3,4,2005) equivaldría a “Número de coches en la hora 15 del día 3 del mes 4 del año 2005” |
Nos hemos referido hasta ahora a arrays de contenido numérico: número de coches, número de alumnos, etc. Éstos serán quizás los que más usemos, pero igualmente podemos usar arrays con contenido alfanumérico.
Por ejemplo en un array que definiera el curso de un alumno y el número que tiene asignado podríamos disponer de información del tipo:
A(3,24) = “Pedro Hernández González" |
Esto vendría a ser equivalente a: “El alumno número 24 del curso tercero se llama Pedro Hernández González”.
Repetiremos en relación a los arrays lo que ya hemos dicho para las variables: podemos crear arrays de tipo numérico o de tipo alfanumérico, pero una vez creados evitaremos modificar el tipo de información que contienen. Es decir:
Por otro lado, evitaremos tener variables de distinta condición (numérica– alfanumérica) dentro de un array. Todos los elementos del array serán del mismo tipo:
Muchas veces necesitaremos mantener relacionada información numérica con alfanumérica, por ejemplo nombre del cliente con importe de una compra, o color de una superficie con metros cuadrados de extensión. En algunas ocasiones nos dará igual sustituir la variable alfanumérica por una clave numérica (p. ej. 1 = amarillo, 2 = verde, 3 = rojo) pero en otras preferiremos conservar la información alfanumérica tal cual. En este caso usaremos distintas variables a las que consideraremos “asociadas”.
Obviamente no todas las variables con el mismo localizador se considerarán “asociadas”. Es el programador quien decide cuáles considera asociadas y cuáles no.
Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link: Ver curso completo.
Para hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.