Персональная страничка
Диканева Тараса
Викторовича

Главная \ Преподавательское \ Программирование для начинающих

11. Процедуры и функции

Предыдущий раздел:

Следующий раздел:

11.7. Открытые массивы

Отличие среды Borland Pascal

Открытые массивы отсутствуют в языке PascalABC. Они есть только в Borland Pacal и Delphi. Если вы пользуетесь этими языками, то стоит ознакомится с нижеприведенным материалом, чтобы не путать их с динамическими массивами. Иначе можете переходить к следующему разделу.

 

Требование всегда описывать тип-массив для передачи параметра-массива затрудняет разработку универсальных процедур. Например, хотелось бы иметь процедуру, которая может находить сумму элементов произвольного массива, а не только массива из 10 элементов типа integer. Для этого в Паскале предусмотрены так называемые открытые массивы.

Открытым массивом называется формальный параметр-массив, для которого указан тип элементов, но не указана его длина. Например:

  procedure P5(var a: array of integer);

В качестве фактического параметра можно передавать целочисленный массив любой длины. Формальный параметр a при этом будет массивом, индексы которого начинаются с нуля. Максимальный индекс в открытом массиве можно получить с помощью стандартной функции High(a). Длину фактически переданного массива можно таким образом подсчитать как High(a) + 1.

Пример: Универсальная процедура, подсчитывающая сумму элементов массива.

  var
    x: array [-5..5] of integer;
    i, sum: integer;

  procedure ArraySum(var a: array of integer; var s:integer);
  var
    i: integer;
  begin
    s:=0;
    for i:=0 to High(a) do
      s:=s+a[i];
  end;

  begin
    for i:=-5 to 5 do
      readln(x[i]);
    ArraySum (x, sum);
    writeln(sum);
  end.

Не смотря на то, что в качестве фактического параметра использован массив со значениями индексов от -5 до 5, формальный параметр есть массив, индексы которого начинаются с нуля. Функция High(a) вернет в данном примере значение 10.

Следующий раздел:

Предыдущий раздел:

Добавить комментарий