Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichka_po_Pascal_2_chast.doc
Скачиваний:
107
Добавлен:
18.02.2016
Размер:
5.11 Mб
Скачать

Массивы Описание массива

Массив объединяет элементы одного типа данных.

Массив характеризуется:

  • фиксированным набором элементов одного и того же типа;

  • каждый элемент имеет уникальный набор значений индексов;

  • количество индексов определяют размерность массива, например, два индекса — двумерный массив, три индекса — трёхмерный массив, один индекс — одномерный массив или вектор;

  • обращение к элементу массива выполняется по имени массива и значениям индексов для данного элемента.

В языках программирования вектор представляется одномерным массивом с син­таксисом описания вида (Pascal):

< Имя >: array [minInd..maxInd] of < тип >;

где minInd - номер первого элемента, maxInd - номер последнего элемента. Для описания двумерного массива используют следующий синтаксис:

<Имя>: array [minInd1..maxInd1, minInd2..maxInd2] of <тип>

<Имя>: array [minInd1..maxInd1] of array [minInd2..maxInd2] of <тип>

Для работы с массивами чаще всего используются циклы.

Плюсовиспользования массива всего два, но зато больших:

- доступ за константное время к любому элементу;

- память тратится только на данные.

Минус - один, но тоже большой: статичность, неизменность структуры.

Одномерный массив иногда называют вектором.

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

Представление массивов в памяти

Элементы вектора размещаются в памяти в подряд расположенных ячейках памяти. Под элемент вектора выделяется количество байт памяти, определяемое базовым типом элемента этого вектора. Размер памяти для хранения вектора определяется произведением количества элементов на число байт для хранения одного элемента.

Представление в памяти вектора будет такое, как показано на рис.1.

@имя

+0

+Sizeof(тип)

+(k-n)* Sizeof(тип)

Имя[n]

Имя[n+1]

Имя[k-1]

Имя[k]

Рис 1. Представление вектора в памяти

где

@ Имя - адрес вектора или, что тоже самое, адрес первого элемента вектора,

Sizeof(тип) - количество байтов памяти для записи одного элемента вектора,

(k-n)*Sizeof(тип) - относительный адрес элемента с номером k, или, что тоже са­мое, смещение элемента с номером к.

Например:

var ml : array [-2..2] of real;

представление данного вектора в памяти будет как на рис.2.

Смещение элемента относительно адреса m1 (байт)

+0

+6

+12

+18

+24

Значения элементов массива

m1[-2]

m1[-1]

m1[0]

m1[1]

m1[2]

Рис 2. Представление вектора ml в памяти

В языках, где память распределяется до выполнения программы на этапе компиляции (С, Pascal, Fortran), при описании типа вектора граничные значения индексов должны определены. В языках, где память может распределяться динамически (Algol, PL/1), значения индексов могут быть заданы во время выполнения программы.

Многомерные массивы хранятся в непрерывной области памяти. Принцип распределения элементов массива в памяти определен языком программирования. Так в Pascal элементы распределяются - по строкам - изменение индексов выполняется в направлении справа налево.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]