Статические массивы в Паскаль
В предыдущих уроках рассматривались переменные простых типов данных. В языке Паскаль из элементов простых типов можно образовывать структурированные типы данных. Примером подобной структуры является массив.
Массив – это структурированный тип данных, образованный из элементов одного и того же типа.
Структура упорядочивается по индексу (номеру), который определяет положение элемента в массиве и предоставляет доступ к отдельным элементам. Тип индекса в зависимости от задачи может быть одним из порядковых типов.
В 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;
Внимание: выход за границы изменения индекса массива является ошибкой.