Главная » Basic » ТРЕБУЕМАЯ ДЛЯ ХРАНЕНИЯ МАССИВОВ ПАМЯТЬ

0

В стандарте Бейсика (в минимальном подмножестве) предполагается, что индексы начинаются с 0, и это соглашение принято для большинства систем. В этом случае оператор DIM P(4) зарезервирует 5 ячеек:

Р(0),Р(1),Р(2),Р(3),Р(4)

а оператор DIM A(2, 3) 12 ячеек:

А(0,0),А(0, 1), А(0,2), А(0,3) А(1,0), А(1,1), А(1,2), А(1,3)

А(2,0), А(2,1), А(2,2), А(2,3)

Так как для одномерного массива по умолчанию максимальный индекс равен (10), то для него будет зарезервировано 11  ячеек  и   индексы  могут  принимать  значения от  0  до  10.  Аналогично для двумерного массива по умолчанию  максимальный индекс равен (10,10) и  для индекса будет зарезервирована 121 ячейка.

В тех системах, в которых начальный индекс равен 1, оператор DIM P(4) зарезервирует 4 ячейки:

Р(1),Р(2),Р(3),Р(4) а оператор DIM A (2, 3) 6 ячеек:

А(1,1),А(1,2),А(1,3)

А (2, 1),А(2, 2),А(2, 3)

В  большинстве систем (кроме  ВВС)  имеется оператор  OPTION  BASE,  позволяющий изменять устанавливаемое по умолчанию начальное значение индекса. Так, в системе, где начальное значение индекса первоначально равно 0, оператор

10  OPTION BASE 1

уменьшит объем памяти, резервируемый оператором DIM A (2, 3), с 12 до 6 ячеек.

Оператор OPTION

Общая форма записи:

OPTION BASE N где N равно либо 0, либо 1.

Устанавливает начальное значение индекса для всех используемых в программе массивов равным 0

или 1. В программе может быть не более одного оператора OPTION.

Выбор  между  0  и   1  в  качестве  начального  значения индекса должен  определяться  характером решаемой задачи. Скажем, в приведенном выше приме-

ре с разноской молока дни недели естественнее идентифицировать числами от 1 до 7, нежели от 0 до

6. Поэтому в этой задаче выбор 1 в качестве начального значения индекса вполне оправдан.

Если Вы не хотите задумываться над выбором начального значения индекса и, работая с системой, где это значение равно 0, используете только значения индекса от 1 до максимального, то тем самым впустую тратите часть памяти ЭВМ. Например, для массива вещественных чисел, описанного  оператором DIM A (100, 100) , требуется по 4 байт (в Бейсике ВВС — по 5 байт) на каждый элемент массива, т. е. всего 4*101*101 =40 804 байт при начальном значении индекса, равном 0 (в Бейсике ВВС 51 005 байт). Если же работать с индексами от 1 до максимального, то реально используется память объемом в 4 * 100 * 100 = 40 000 байт (в Бейсике ВВС 50 000 байт). Таким образом, 804 байт (в Бейсике ВВС 1005 байт) никогда не будут использоваться и окажутся недоступными и для других нужд, например для хранения команд программы или  строк символов.  В этом случае указание в начале программы оператора OPTION BASE 1 сбережет немалый объем памяти.

В некоторых системах предусмотрены специальные  функции для работы с матрицами; имена этих функций начинаются с  МАТ,  например MAT  INPUT.  Все  эти функции  оперируют элементами массива, индексы которых изменяются от 1 до максимального,  независимо от того, существуют ли элементы с нулевыми индексами (см. гл. 7) .

Источник: Уолш Б.    Программирование на Бейсике: Пер. с англ. М.: Радио и связь, 1988. 336 с: ил.

По теме:

  • Комментарии