Pascal - Matriz multidimensional
El lenguaje de programación Pascal permite matrices multidimensionales. Aquí está la forma general de una declaración de matriz multidimensional:
type
array-identifier = array [index-type1, index-type2, ...] of element-type;
var
a1, a2, ... : array-identifier;
Por ejemplo, la siguiente declaración crea un 5 tridimensional. 10. 4 matriz de enteros -
var
threedim: array[1..5, 1..10, 1..4] of integer;
Matrices bidimensionales
La forma más simple de la matriz multidimensional es la matriz bidimensional. Una matriz bidimensional es, en esencia, una lista de matrices unidimensionales. Para declarar una matriz de enteros bidimensionales de tamaño x, y, escribiría algo de la siguiente manera:
var
arrayName: array[1..x, 1..y] of element-type;
Dónde element-typepuede ser cualquier tipo de datos Pascal válido y arrayName será un identificador Pascal válido. Una matriz bidimensional se puede visualizar como una tabla, que tendrá x número de filas y y número de columnas. Una matriz bidimensional que contiene tres filas y cuatro columnas se puede mostrar a continuación:
Por lo tanto, cada elemento en la matriz a se identifica por un nombre de elemento de la forma a [i] [j], donde a es el nombre de la matriz, e i y j son los subíndices que identifican de forma única cada elemento en a.
Inicialización de matrices bidimensionales
Las matrices multidimensionales, como las matrices unidimensionales, se inicializan mediante asignación, ya sea especificando un subíndice en particular o utilizando un bucle for-do.
Por ejemplo,
var
a: array [0..3, 0..3] of integer;
i, j : integer;
begin
for i:= 0 to 3 do
for j:= 0 to 3 do
a[i,j]:= i * j;
...
end;
Acceso a elementos de matriz bidimensionales
Se accede a un elemento en una matriz bidimensional utilizando los subíndices, es decir, el índice de fila y el índice de columna de la matriz. Por ejemplo
var
val: integer;
val := a[2, 3];
La declaración anterior tomará el cuarto elemento de la tercera fila de la matriz. Puedes verificarlo en el diagrama anterior. Veamos el programa a continuación donde hemos usado un bucle anidado para manejar una matriz bidimensional:
program ex2dimarray;
var
a: array [0..3, 0..3] of integer;
i,j : integer;
begin
for i:=0 to 3 do
for j:=0 to 3 do
a[i,j]:= i * j;
for i:=0 to 3 do
begin
for j:=0 to 3 do
write(a[i,j]:2,' ');
writeln;
end;
end.
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
0 0 0 0
0 1 2 3
0 2 4 6
0 3 6 9
Como se explicó anteriormente, puede tener matrices con cualquier número de dimensiones, aunque es probable que la mayoría de las matrices que cree sean de una o dos dimensiones.