Cтраница 3
Оператор присваивания для размещаемой переменной интерпретируется так же, как и для компонента размещаемого массива: Целевая переменная размещается с правильной формой, если она еще не была размещена или размещается заново с правильной формой, если она была уже размещена, но с другой формой. [31]
Модификация адресов с помощью индексных регистров используется не только для работы с компонентами массивов, но и для других целей. Например, длина адресного поля в командах УМИР-1, равная двенадцати двоичным разрядам, позволяет непосредственно адресовать только 4096 ячеек. Однако при прямой адресации увеличение емкости памяти требует увеличения длины адресных полей в командах. Например, для емкости памяти в 256К адресные поля должны содержать по крайней мере по 18 двоичных разрядов, что приводит к значительным затратам памяти для хранения программы. [32]
В [ 1: 4 0: 5 ] указывает, что все компоненты массива с идентификатором В принимают значения типа вещественный. [33]
Многомерные массивы запоминаются в памяти ЭВМ в виде одномерных, при этом каждая компонента массива занимает одно поле ( ячейку) памяти. При работе с массивами целого и действительного типов такой способ расположения является эффективным. Использование других типов компонент приводит к неэкономному расходованию памяти ЭВМ. [34]
К сожалению, приведенная программа работает правильно только в том случае, если среди компонентов массива А есть такой, что он равен X. Напомним, что при нормальном завершении цикла FOR значение параметра цикла I становится неопределенным. [35]
Каждая переменная с индексами представляет одну из компонент некоторого массива, причем для значений каждой компоненты массива отводится своя ячейка памяти. Какую из компонент массива представляет переменная с индексами, а следовательно, и номер ячейки памяти, в которой хранится ее значение, определяется значениями индексных выражений, но так как в процессе выполнения программы эти значения могут, вообще говоря, изменяться, то в разные моменты времени данная переменная может представлять различные компоненты соответствующего массива. Поэтому и адресная часть команды, использующей переменную с индексами, должна изменяться с изменением значений индексов этой переменной - при каждом выполнении такой команды в ней должен быть указан адрес той компоненты массива, которую в данный момент представляет переменная с индексами. [36]
Рг, а в качестве xi и г / г f ( xi) берутся значения компонент массивов х [ 0: т ] и у [ 0: т ] соответственно. [37]
В простейшем случае подчинение можно реализовать с помощью массива: индекс является аргументом, относящиеся к нему компоненты массива - результатом. Этот метод произвольного доступа мы используем, начиная уже с урока 7 ( типичный пример: 7.5), поэтому задерживаться на нем здесь особо не будем. [38]
Чтобы наряду с базированием обеспечить использование индексных регистров и для эффективного управления переменными адресами при работе с компонентами массивов, обычно предусматривается возможность модификации адресов в команде одновременно по двум индексным регистрам. В этом случае при работе с массивами в одном регистре фиксируется база того сегмента памяти, в котором размещен массив, в поле адреса команды указывается постоянная составляющая переменного адреса, равная сдвигу начала массива относительно базы, а в другом регистре помещается переменная составляющая этого адреса. [39]
![]() |
Схема отображения объектов R на элементы памяти М.| Пара имя - значение. [40] |
Массиву соответствует набор последовательных элементов памяти ( рис. 1.7), каждый из которых предназначен для размещения одной компоненты массива. Количество необходимых элементов памяти определяется числом компонентов массива. [41]
Каждая 20-литерная строка массива name и соответствующий ей компонент массива оценок score составляют блок данных одного элемента списка; компонент массива link, имеющий такой же порядковый номер, как и номера компонента массива score и строки массива name, относящиеся к некоторому элементу, является звеном связи этого элемента. В качестве значения звена связи некоторого элемента может быть использовано допустимое значение индекса рассматриваемых массивов или значение null. Этот компонент служит указателем начала списка. В качестве указателя начала списка могла бы использоваться и отдельно объявленная переменная целочисленного типа, однако, как нам станет ясно впоследствии, некоторые операции над списками выполнять легче, когда доступ к началу списка осуществляется так же, как и к другим его элементам. [42]
Список с циклом позволяет задать вывод части массива ( например, одну строку матрицы), а также иной порядок вывода компонент массива по сравнению с порядком, определяемом простым списком. [43]
В связи с тем, что в процессе выполнения программы значения индексов у переменной с индексами изменяются, то изменяется и компонент массива, на который указывает переменная с индексами, а следовательно, изменяется и адрес ячейки, в которой записан этот компонент. Следовательно, если на языке машины записать команду для выполнения операции над переменной с индексами, то у такой команды адресная часть должна изменяться в зависимости от конкретных значений индексов у переменной с индексами, то есть команда будет переменной. [44]
Присваивание значения какой-нибудь компоненте массива обычно выполняется с помощью оператора присваивания путем вычисления значения переменной с индексами, указывающей на эту компоненту массива. [45]