Главная  Терминология Хоора 

1 2 3 4 5 6 [ 7 ] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

1.5. ограниченные типы

Часто бывает, что переменная принимает значения неко-пого типа только в определенном интервале. Это можно шазить, определив переменную ограниченного типа, который описывается так:

type Т - tnin ... max

(1.9)

где tnin и max - границы интервала. Примеры:

type год= 1900 .. 1999

type буквамА'..Z

type цифра = О'.. 9

type офицер - лейтенант .. генерал

Пусть даны переменные:

var у: год varL: буква

тогда присваивания t/:= 1973 и L:=W разрешены, а у :- :== 1291 и L:=9 не разрешены. Транслятор может проверять законность таких присваиваний только в том случае, если присваиваемое значение суть константа или переменная того же типа. Допустимость присваиваний вида

y:=i и L:-c

где / - типа integer, а с - типа char, можно проверить только во время выполнения программы. Системы, выполняющие такие проверки, оказались на практике чрезвычайно полезными для разработки программ. Использование ими избыточной информации для выявления возможных ошибок также является одной из основных причин применения языков высокого уровня.

6. массивы

Массив -это, по-видимому, наиболее широко известная Структура данных, так как во многих языках, включая Ал-ГОЛ-60 и Фортран, это единственная структура, которая существует в явном виде. Массив-это регулярная структура: се его компоненты - одного типа, называемого базовым типом. Массив - также структура с так называемым слу-о.йным доступом, все его компоненты могут выбираться произвольно и являются одинаково доступными. Для обозначения отдельной компоненты к имени всего массива



добавляется так называемый индекс, позволяющий выбрат] компоненту. Индекс должен иметь значение типа, определе, ного как тип индексов массива. Описание регулярного тик Т задает, таким образом, не только базовый тип Го, но и тц индексов /:

type7 = array[/]of7o

Примеры:

type Row - arrayll.. 5] of гея/ type Card = arrayll,. 80] of dxar type aifa - arrayfl.. 10] of chat

Конкретное значение переменной--

\u.rx:Row

если каждая компонента удовлетворяет равенству xi = 2-* может иметь вид, как показано на рис. 1.2.

0,25

0,125

0,0625

0,03125

Рис. 1.2. Массив типа

Составное значение х

типа Т со

Си .... Сп может задаваться с помощью конструктора* мае сива и оператора присваивания:

x:=T(ci, .... с„) (1.11

Операция, обратная конструктору, - селектор. Он позвс ляет выбрать из массива отдельную компоненту. Если в кз честве переменной х рассматривать массив, то селектор мае сива обозначается с помощью имени массива, дополненног соответствующим индексом компоненты i:

(1.15

При работе с массивами, особенно большими, обычно вЫ борочно изменяют отдельные компоненты, а не строят зано£

) В языке Паскаль такие консгрукторы отсутствуют.-Ярил, ред.



составное значение. При этом переменная-массив расг матривается как массив составляющих переменных и допускается присваивание значения отдельным компонентам.

пример: . .

л;И:=0.125

Хотя при вьиборочном нрнсваи&ании меняется только значение отдельной компоненты, с точки зрения построения концепции следует считать, что изменилось все составное значение.

То, что индексы массива, т. е. имена его компонент, должны быть определенного (скалярного) типа, имеет весьма важные следствия. Индексы могут вычисляться, вместо индексной константы можно использовать индексное выражение. Значение этого выражения вычисляется, и результат определяет выбираемую компоненту. Такая общность дает не только одно из важнейших и мощных средств программирования, но и приводит к одной из самых частых ошибок, так как полученное значение выражения может не попасть в интервал, заданный в качестве диапазона для индексов данного массива. Мы будем считать, что в случае такого ошибочного обращения к несуществующей компоненте массива адекватная вычислительная система выдает предупреждение.

Обычно тип индексов должен быть скалярным, т. е. не-;труктурированным, типом, на котором определено отнощение Фрядка. Если базовый тип массива также упорядоченный, о на таком регулярном типе имеется естественное отно-иение порядка. Для двух массивов упорядочение опреде-1яется с помощью сравнения компонент с наименьшими ин-нексами. Формально это можно описать следующим образом:

Если имеются два массива х я у, го отношение х < у ыполняется в том и только том случае, если существует индекс k такой, что

x[k]<y[k] и x[i] = y[i] для всякого/< А. (1.13) )1апример,

(2, 3, 5, 7, 9)<(2, 3, 5, 7, 11) LABEL<LIBEL

Однако обычно считается, что массивы никак не упоря-Рчены.

-Кардинальное число составного типа равно произведению ординальных чисел типов его компонент. Поскольку все ком-Ненты регулярного типа А принадлежат к одному и тому




1 2 3 4 5 6 [ 7 ] 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133