Рассмотрим, как можно передавать массивы в подпрограмму. Как известно (см. прил. 1), чтобы объявить переменные в списке формальных параметров подпрограммы, необходимо указать их имена и типы.
Однако типом любого параметра в списке может быть только стандартный или ранее объявленный тип. Поэтому для того чтобы передать в подпрограмму массив, необходимо вначале описать его тип, а затем объявлять процедуру:
type тип_массива= array [список_индексов] of тип;
procedure имя_поцедуры(имя_массива: тип_массива);
…
Например:
type
vector=array [1..10] of byte;
matrica=array [1..3, 1..3] of real;
procedure proc(A:matrica;b:vector;var x:vector);
Понятно, что передача в подпрограмму строки вида
имя_переменной: string[длина_строки];
которая фактически является массивом63, должна осуществляться аналогично:
type тип_строки= string [длина_строки];
procedure имя_поцедуры(имя_строки: тип_ строки);
…
Массивы в подпрограмму можно передавать, используя понятие открытого массива. Открытый массив — это массив, при описании которого указывается тип составляющих его элементов, но не определяются границы изменения индексов:
|
|
имя_открытого_массива: array of array of … тип;
Распределение памяти и указание границ индексов по каждому измерению открытых массивов осуществляется в ходе выполнения программы с помощью функции SetLength:
SetLength(имя_массива, список_границ_индексов);
Для освобождения выделенной памяти нужно выполнить оператор:
имя_массива:=NIL;
Нижняя граница открытого массива (минимальное значение номера элемента) всегда равна нулю. Верхняя граница (максимальное значение номера элемента) возвращается стандартной функцией:
high(имя_массива)
Открытый массив можно использовать и при обычной обработке массивов в языке Free Pascal.
Открытый массив может быть формальным параметром подпрограммы:
procedure имя_поцедуры(имя_открытого_массива: array of тип;);