Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 2).doc
Скачиваний:
96
Добавлен:
15.04.2015
Размер:
2.24 Mб
Скачать

Обращение к элементу массива. Хранение элементов массива. Доступ к элементам массива

ОПИСАНИЕ СИНТАКСИСА: Обращение к элементу массива

имя_массива [индекс]

Пример.

a: array [1..5] of byte;

b: array [1..3, 1..5] of byte;

увеличение адреса

A1

a2

a3

a4

A5

A[3]

b11

b12

b13

b14

b15

b21

b22

b23

b24

b25

b31

b32

b33

b34

b35

B[3,2]

Элемент массива

B[3,2] - byte;

B[1] - array [1..5] of byte;

Подмассив (первая строка массива)

Интерпретация: Индекс должен представлять собой выражение, совместимое по присваиванию с типом индекса, указанным в описании массива. Если это выражение окажется неверного типа данных, будет зафиксирована синтаксическая ошибка Index type is not compatible with declaration. Если значение выражения окажется за пределами диапазона при включенном (с помощью директивы {$R+}) контроле диапазонов, будет зафиксирована ошибка времени выполнения Range check error.

Индекс - порядковый номер элемента массива.

Особенностями хранения массива в памяти является следующее:

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

  2. Компоненты в памяти располагаются так, что занимают в памяти непрерывную область.

  3. В случае многомерных массивов их элементы располагаются в памяти таким образом, что наиболее быстро увеличивается самый правый индекс.

Число размерностей массива не ограничено, однако размер массива как любой статической переменной в памяти ограничен 64 Кб.

Действия над массивами

  1. Присваивание содержимое одного массива другому

Но это действие можно выполнить не всегда. Вы можете присвоить содержимое только таких массивов, у которых эквивалентны типы согласно объявлению.

Вы не можете сравнивать массивы.

If a = b then ... - нельзя.

Если нужно сравнить 2 массива, то нужно их сравнивать по элементам (кроме символьных массивов, которые в Паскале эквивалентны строкам).

  1. Инициализация массивов

  1. Первый путь – использование цикла.

Var

A : array [1..5] of byte;

I : byte;

begin

for i := 1 to 5 do

a[i] := i; { или a[i] := random(100);}

end.

2. Второй путь – использование процедуры

FillChar(var X: Count: Word; Value: <порядковый тип>); Заполняет Count смежных байтов переменной Х значением Value.

Х – переменная любого типа, которая заполняется заданным значением;

Count – число заполняемых байтов.

Пример. FillChar (a, 5, 0);

  1. Элементы массива можно использовать везде, где можно использовать обычные скалярные переменные (в операторах присваивания и процедурах ввода-вывода и т.д.)

  2. Обмен значениями между подмассивом и массивом

  • обмен между подмассивами

  • Обмен между подмассивом и массивом

  1. Сдвиг значений внутри массива

Сдвиг элементов одномерного массива вправо

Задача: необходимо выполнить сдвиг заданной части массива M (начиная с позиции i1 и заканчивая позицией i2) на заданное число позиций вправо.

1 2 3 4 5 6 7 8 9 10 11

m[9]:=m[7]

Обобщенная запись:

M[i] := M[j]

m[8]:=m[6]

m[7]:=m[5]

m[6]:=m[4]

m[5]:=m[3]

1 2 3 4 5 6 7 8 9 10 11

i j

Надо в общем случае выразить зависимость i от j .

В общем виде эта зависимость линейная и имеет вид:

j := a*i + b

Для нахождения a и b надо составить систему уравнений:

7

A=1; b=-2;

J=i-2

Обобщенная запись:

M[i]:=M[i-2];

= a*9 + b

6= a*8 + b

For i:=9 downto 5 do

M[i] := m[i-2];

Соседние файлы в папке WORD