===== Типичные ошибки =====
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); {В качестве аргумента должна быть переменная}