Читаем Описание языка PascalABC.NET полностью

<p>Массивы</p>

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

Массивы в PascalABC.NET делятся на статические и динамические.

При выходе за границы изменения индекса в PascalABC.NET всегда генерируется исключение.

<p>Статические массивы</p>Описание статического массива

Статические массивы в отличие от динамических задают свой размер непосредственно в типе. Память под такие массивы выделяется сразу при описании.

Тип статического массива конструируется следующим образом:

array [тип индекса1, ..., тип индексаN] of базовый тип

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

type

MyEnum = (w1,w2,w3,w4,w5);

Arr = array [1..10] of integer;

var

a1,a2: Arr;

b: array ['a'..'z',w2..w4] of string;

c: array [1..3] of array [1..4] of real;

Инициализация статического массива

При описании можно также задавать инициализацию массива значениями:

var

a: Arr := (1,2,3,4,5,6,7,8,9,0);

cc: array [1..3,1..4] of real := ((1,2,3,4), (5,6,7,8), (9,0,1,2));

Присваивание статического массива

Статические массивы одного типа можно присваивать друг другу, при этом будет производиться копирование содержимого одного массива в другой:

a1 := a2;

Вывод статического массива

Процедура write выводит статический массив, заключая элементы в квадратные скобки и разделяя их запятыми:

var a: Arr := (1,2,3,4,5,6,7,8,9,0);

var m := array [1..3,1..3] of integer := ((1,2,3),(4,5,6),(7,8,9));

writeln(a); // [1,2,3,4,5]

writeln(m); // [[1,2,3],[4,5,6],[7,8,9]]

Передача статического массива в подпрограмму

При передаче статического массива в подпрограмму по значению также производится копирование содержимого массива - фактического параметра в массив - формальный параметр:

procedure p(a: Arr); // передавать статический массив по значению - плохо!

...

p(a1);

Это крайне расточительно, поэтому статические массивы рекомендуется передавать по ссылке. Если массив не меняется внутри подпрограммы, то его следует передавать как ссылку на константу, если меняется - как ссылку на переменную:

type Arr = array [2..10] of integer;

procedure Squares(var a: Arr);

begin

for var i:= Low(a) to High(a) do

a[i] := Sqr(a[i]);

end;

procedure PrintArray(const a: Arr);

begin

for var i:= Low(a) to High(a) do

Print(a[i])

end;

var a: Arr := (1,3,5,7,9,2,4,6,8);

begin

Squares(a);

PrintArray(a);

end.

Для доступа к нижней и верхней границам размерности одномерного массива используются функции Low и High.

<p>Динамические массивы</p>Описание динамического массива

Тип динамического массива конструируется следующим образом:

arrayofтип элементов (одномерный массив)

array [,] of тип элементов (двумерный массив)

и т.д.

Переменная типа динамический массив представляет собой ссылку. Поэтому динамический массив нуждается в инициализации (выделении памяти под элементы).

Выделение памяти под динамический массив

Для выделения памяти под динамический массив используется два способа. Первый способ использует операцию new в стиле вызова конструктора класса:

var

a: array of integer;

b: array [,] of real;

begin

a := new integer[5];

b := new real[4,3];

end.

Данный способ хорош тем, что позволяет совместить описание массива и выделение под него памяти:

var

a: array of integer := new integer[5];

b: array [,] of real := new real[4,3];

Описание типа можно при этом опускать - тип автовыводится:

var

a := new integer[5];

b := new real[4,3];

Второй способ выделения памяти под динамический массив использует стандартную процедуру SetLength:

SetLength(a,10);

SetLength(b,5,3);

Элементы массива при этом заполняются значениями по умолчанию.

Процедура SetLength обладает тем преимуществом, что при ее повторном вызове старое содержимое массива сохраняется.

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных