Переменные могут быть описаны в разделе описаний, а также
непосредственно внутри любого блока begin/end.
Раздел описания переменных начинается
с ключевого слова var,
после которого следуют элементы описания вида
список имен:тип;
или
имя:тип:=выражение;
или
имя:тип=выражение;// для совместимости с Delphi
или
имя:=выражение;
Имена в списке перечисляются через запятую. Например:
var
a,b,c: integer;
d: real := 3.7;
s := 'PascalABC forever';
al := new List<integer>;
p1 := 1;
В последних трех случаях тип переменной автоматически определяется по типу правой части.
Переменные могут описываться непосредственно внутри блока. Такие описания называются внутриблочными и представляют собой оператор описания переменной.
Кроме того, переменные-параметры цикла могут описываться в заголовке
операторов for и
foreach.
Глобальные переменные инициализируются нулевыми значениями. Для локальных переменных это не гарантируется - их надо инициализировать явно.
Кортежное присваивание (распаковку кортежа в переменные) можно совмещать с описанием переменных:
var t := (1,2);
(var a, var b) := (1,2);
или
var (a,b) := (1,2);
Распаковка кортежа в переменные часто используется при возвращении функцией кортежа:
function SP(a,b: real) := (a*b,2*(a+b));
...
var (S,P) := SP(2,3);