Статические массивы в Паскаль

В предыдущих уроках рассматривались переменные простых типов данных. В языке Паскаль из элементов простых типов можно образовывать структурированные типы данных. Примером подобной структуры является массив.

Массив – это структурированный тип данных, образованный из элементов одного и того же типа.

Структура упорядочивается по индексу (номеру), который определяет положение элемента в массиве и предоставляет доступ к отдельным элементам. Тип индекса в зависимости от задачи может быть одним из порядковых типов.

В PascalABC.NET массивы подразделяются на статические и динамические.

Статические массивы

В языке программирования Паскаль существует возможность описать тип статического массива. Память под такую структуру выделяется при описании, поэтому размер массива задается непосредственно в типе:

type <имя типа> = array [тип индекса] of <тип элемента>

Тип индекса в зависимости от задачи должен быть одним из порядковых. Обычно для описания индекса используется диапазонный тип, который представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа.

Чтобы использовать заданный тип статического массива, достаточно описать обычным образом переменные этого типа в разделе описаний, например:

  • type
  • klass = (k9, k10, k11);
  • masInt = array[1..100] of integer;
  • var
  • sch: array[1..3] of klass;
  • dig, num: masInt;

Массив также можно описать непосредственно в разделе описания переменных, например:

  • var
  • s1: array[1..10] of integer;
  • met: array[1..31] of real;

Элементам массива можно присвоить значения до начала выполнения программы. Это делается при описании путем инициализации массива значениями, например:

  • var
  • even: array[1..5] of integer := (2, 4, 6, 8, 10);

При обращении к массиву как к единому целому используется идентификатор массива. Статические массивы в Паскале можно присваивать друг другу. Для этого они должны иметь одинаковый тип индекса и одинаковые типы элементов, например:

  • type
  • masInt = array[1..5] of integer;
  • var
  • a: masInt := (2, 4, 6, 8, 10);
  • b: masInt;
  • begin
  • b := a;
  • writeln (b);
  • end.

Для доступа к элементу массива необходимо указать имя массива и индекс элемента в квадратных скобках. Например, запись even[4] позволяет обратится ко четвертому элементу массива even.

Задача. Дан массив размером n. Осуществите циклический сдвиг элементов массива влево ( т. е. a[n] становиться на место a[n - 1], a[n - 2] – a[n - 2], …, a[2] - a[1]. a[1] переходит на место a[n]).

Решение. Чтобы не потерять значение первого элемента массива, будем использовать переменную temp, в которой это значение будет хранится, до тех пор, пока не появится возможность присвоить его a[n]).

{Фрагмент кода программы}

  • temp := a[1];
  • for i := 1 to n - 1 do
  • a[i] := a[i + 1];
  • a[n] := temp;

Внимание: выход за границы изменения индекса массива является ошибкой.