Cтраница 2
При описании типа array после слова array в квадратных скобках указываются нижняя и верхняя границы индексов. Для остальных агрегативных типов записываются не граничные значения индекса, а нижняя и верхняя границы числа элементов. [16]
В алгоритмическом языке таблицы изображаются так же, как массивы в схемах алгоритмов, но границы индексов и индексы элементов таблиц заключаются в квадратные скобки. [17]
Иногда от арифметического выражения требуется, чтобы оно вырабатывало целочисленный результат, например, если оно занимает позицию индекса переменной или границы индекса в описании массивов. В таких случаях, если вычисленное значение выражения оказывается не целым, оно округляется до ближайшего целого. [18]
В описании массива определяется, что один или несколько идентификаторов представляют многомерные массивы переменных с индексами, и задаются размерность этих массивов, границы индексов и типы переменных. [19]
Выполнение блока состоит в том, что создаются локальные объекты, представленные всеми описанными в начале блока идентификаторами ( в этот момент и определяются границы индексов массивов), а затем начинают выполняться внутренние операторы этого блока в том порядке, в каком они написаны. Некоторые операторы ( операторы перехода - см. § 7) могут изменить этот порядок. Выполнение блока завершается либо естественным путем, когда выполнен последний из его внутренних операторов, либо в результате перехода к одной из меток, расположенных вне блока. В обоих случаях все локальные объекты блока перестают существовать для программы. [20]
Выполнение блока состоит в том, что создаются локальные объекты, представленные всеми описанными в начале блока идентификаторами ( в этот момент и определяются границы индексов массивов), а затем начинают выполняться внутренние операторы этого блока в том порядке, в каком они написаны. Если эти операторы сами не заставят изменить этот порядок ( см. § 7), то выполнение блока завершится, когда будет выполнен последний из внутренних операторов. В этот момент все локальные объекты блока перестают существовать. [21]
При разработке программы внесение в нее изменений может потребовать соответствующего изменения границ массива. Верхняя и нижняя границы индекса обычно встречаются во многих местах в программе, и их иногда трудно обнаружить. Применение констант упрощает эту задачу. Границы массива должны быть присвоены константе, как рассматривалось в гл. Тогда, если нужно изменить границы, можно изменить их по всей программе, просто меняя объявление константы. [22]
Простые переменные и массивы могут относиться к целому, ве-щественному и логическому типам. Типы этих величин, а также границы индексов массивов указываются при их описании ( см. стр. Типы переменных с индексами определяются типами соответствующих массивов. [23]
Из определения следует, в частности, что спецификация массивов не содержит информации о границах индексов ( граничных парах), которая всегда имеется в обычных описаниях. И это вполне обосновано тем, что границы индексов должны быть заданы в числе параметров. [24]
Обращение к процедуре должно быть в области действия описания процедуры, и, кроме того, если процедура с параметрами, то обращение к процедуре должно быть в области действия описаний объектов, входящих в фактические параметры. Если, например, фактический параметр является идентификатором массива, то размерность и границы индексов рассматриваются в соответствии с описанием массива. [25]
Формальному параметру, используемому в теле процедуры в качестве идентификатора массива, может соответствовать в качестве фактического параметра только идентификатор массива той же размерности. Кроме того, если формальный параметр вызывается значением, то локальный массив, возникающий в теле процедуры во время обращения, получает те же границы индексов, что и фактический массив. Подобным же образом число, классы и типы параметров формального параметра-процедуры должны быть совместимы с числом, классами и типами параметров соответствующего фактического параметра. [26]
Отметим также следующую особенность модификации тела процедуры: формальному параметру, используемому в теле процедуры как идентификатор массива, может соответствовать в качестве фактического параметра только идентификатор массива той же размерности. Кроме того, если этот формальный параметр включен в список значений, то локальный массив, возникающий в теле процедуры во время обращения, получает те же границы индексов, что и фактический массив. [27]
Стандартные переменные могут иметь следующие типы: целый, вещественный, логический, битовый и строковый. Переменные всех типов, кроме строковых, могут быть простыми ( скалярными) или одно - дву - и трехмерными массивами. Границы индексов массивов могут задаваться или целыми числами, или значениями целых стандартных переменных. Значением строковой стандартной переменной является совокупность символов числом не более шести. Каноническое значение стандартной переменной - это такое, которое используется при решении прикладной задачи в МОПРовском пакете программ, если соответствующая величина участвует в расчетах, но не задается пользователем в исходной информации. Для стандартных переменных - массивов канонические значения есть нуль ( если тип - целый, вещественный или битовый) или истина ( для логических переменных), а для скаляров - задаются при включении переменных. [28]
Еще большее удивление вызывают правила применения формальных пределов индексов: они не являются ( так предписывает стандарт. Формальные границы индексов могут встречаться только в выражениях. С точки зрения синтаксиса они являются факторами. Они существуют для действительно описанных границ индексов соответствующих фактиче ских параметров. [29]
Пользуясь подобными индексами, необходимо помнить о следующем. Этот перевес в 5 % объясняется преобладанием бычьих настроений среди широкой публики. Таким образом, границы индекса также слегка сдвинуты вверх, отражая преобладающие бычьи настроения. [30]