Larik multi dimensi adalah larik yang bertipe larik, artinya ada pendeklarasian sebuah larik yang mempunyai tipe data larik juga.
  Dalam array multidimensi terdiri atas baris (row) dan kolom (column). Index pertama adalah baris dan yang kedua adalah kolom .
  BENTUK UMUM :
  Type nama_array =ARRAY[bawah..atas, bawah..atas] of tipe_data;
var variabel_array : nama_array;
  atau dengan menggunakan statemen var : 
  var variabel_array : ARRAY[bawah..atas, bawah..atas] of tipe_data;
   
  Pernyataan berikut membentuk suatu array integer dengan nama bilangan , 10 x 10 elemen (100). 
   
  type matriks = ARRAY [1..10, 1..10] of integer;
var AKU: matriks; 
  
untuk memasukkan tiap elemen maka, diperlukan suatu procedure dengan mempergunakan struktur pengulangan for ...do tersarang seperti berikut:
   
  procedure ISI_MATRIK(AKU:matriks; m,n:integer);
var 
  i,j: integer; {faktor pengulang}
begin
for i:=1 to m do 
  begin 
  for j:=1 to n do 
      begin 
  read(A[i,j]); 
   end;
 readln;{ini memungkinkan kita menulis tiap baris elemen} 
  end; 
   
  untuk menampilkan tiap elemen maka, digunakan struktur pengulangan for ...do tersarang seperti berikut
   
  procedure TULIS_MATRIK(AKU : matriks; m,n:integer);
var 
  i,j: integer; {faktor pengulang} 
  begin 
  for i:=1 to m do
begin 
  for j:=1 to n do
begin
    write(A[i,j]:6);
end;
writeln; {ini memungkinkan kita menulis elemen dalam baris dan kolom } 
  end; 
  end;
   
  MATRIK
  Sebagai perwujudan dari array dua dimensi, operasi aritmatika seperti penjumlahan, perkalian, dan pengurangan bisa dilakukan. 
   
  Contoh.
- Mendefinisikan Elemen
  Program OPERASI_MATRIK;
uses wincrt;
type matrik=array[1..100,1..100] of real;
var
    m,n, p, q: integer; {dimensi dari matrik}
    A,B,C: matrik; {matrik A, B sebagai input, C sebagai hasil} 
   
  - Membaca Elemen Matrik
  procedure bacamatrik(var A:matrik; m,n:integer);
var 
     i,j: integer; {faktor pengulang}
begin {read} 
  for i:=1 to m do
begin {do} 
  for j:=1 to n do
    read(A[i,j]);
    readln; 
  end; {do} 
  end; {read}
   
  - Menampilkan Elemen Matrik
  procedure tulismatrik(A:matrik; m,n:integer);
var
   i,j: integer; {faktor pengulang}
begin {write} 
  for i:=1 to m do
begin {tiap baris} 
  writeln;
for j:=1 to n do
    write(A[i,j]:6:2); 
  end; {tiap baris}
writeln; 
  end; {write}
   
  - Penjumlahkan Matrik
  procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j : integer;
begin 
  if (m=p) and (n=q) then
  begin 
  for i:=1 to m do 
  begin 
  for j:=1 to n do
begin 
  C[m,n]=A[m,n]+B[m,n])
end; 
  end; 
    end
else
    writeln('DIMENSI MATRIK TIDAK COCOK') 
  end;
   
  - Pengurangan Matrik
  procedure check_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j : integer;
begin 
  if (m=p) and (n=q) then 
  begin 
  for i:=1 to m do 
  begin 
  for j:=1 to n do
begin
    C[m,n]=A[m,n]- C[m,n])
end; 
  end; 
  end 
  else 
  writeln('DIMENSI MATRIK TIDAK COCOK') 
  end;
   
  - Perkalian Matrik
  procedure perkalian_matrik(A,B,C:matrik; m,n,p,q:integer);
var i,j, k : integer;
C1: matrik;
begin 
  if (n=p) then 
  begin
  for i:=1 to m do 
  begin 
  for j:=1 to p do
begin {inner product} 
  C1[i,j]:=0; 
  for k:=1 to n do
C1[i,j]:=C1[i,j]+A[i,k]*B[k,j]; 
  end; {inner product} 
  end;
n:=q;
for i:=1 to m do
for j:=1 to n do
    C[i,j]:=C1[i,j];
  end 
  else
    writeln('DIMENSI MATRIK TIDAK COCOK') 
  end;
   
  - Transpose Matrik
  procedure Transpose(A,B:matrik; m,n,p,q:integer);
var  i,j : integer;
begin 
  for i:=1 to n do 
  begin 
  for j:=1 to m do 
  begin 
  B[m,n]=A[n,m]
end; 
  end; 
  end;
   
  -. Mencari Elemen yang Kosong pada Matrik
  procedure CHECK_ZERO_ELEMEN(A,matrik; m,n:integer);
var i,j:integer;
begin
for i:=1 to m do 
  begin 
  for j:=1 to n do 
  begin 
  if B[m,n]= 0 then
      writeln (‘terdapat elemen yang kosong’)
else
      writeln (‘tidak terdapat elemen yang kosong’) 
  end; 
  end; 
  end;