Типичные ошибки

 
const
  k = 5;                     { Это - "именованная" константа }
  m : integer = 5;           { Это не константа, это - "статическая" переменная }
 
var 
  n  : integer;              { Это - просто переменная } 
 
  Ak : array [1..k] of ... ; { Так - можно }
  Am : array [1..m] of ... ; { Так - нельзя. Значения переменные получают только после распределения памяти }  
  An : array [1..n] of ... ; { Так - тоже. По той же причине }  
 
...

Примечание. Паскаль и другие универсальные языки программирования позволяют создавать массивы уже после начала выполнения программы через механизм «динамической памяти».

var 
  gd, gm : integer;
  initgraph(gd, gm, ''); { В разделе описаний Паскаля - только описания }
 
...
var 
  i,j : integer;
 
begin  
var 
  gd, gm : integer;      { Обратная ситуация - в Паскале нельзя включать описания в раздел кода }
  initgraph(gd, gm, ''); 
...
var
  i, j : integer;
  A, B : array [1...10] of integer;   {Много точек!}
  ...
 
begin
  ...
 
  {Это - верно}
  i    := j;       
  A    := B;  
 
  {Верно при правильных значения i и j}     
  A[i] := B[j]; 
  A[i] := j;
  i    := B[j];   
 
  {А вот так - всегда неверно.}
  A    := i;                     // Нельзя заполнить массив одним числом (увы!)
  j    := B;                     // Непонятно, как запихать в одно число целый набор
  ...
end.  
writeln(x:integer); {Описание переменной должно быть в блоке var}
writeln(x := 2);    {Нельзя присваивать переменной значение в аргументе функции}
readln(2);          {В качестве аргумента должна быть переменная}