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.