Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Непейвода Н.Н. -> "Основания программирования " -> 186

Основания программирования - Непейвода Н.Н.

Непейвода Н.Н., Скопин И.Н. Основания программирования — Институт компьютерных исследований , 2002. — 919 c.
Скачать (прямая ссылка): osnovanprogramm2002.pdf
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 316 >> Следующая

522
9.
когда данные налага тся, но не перекрва т друг на друга, есть объедине-ние.10 В этом случае имя COMMON-блока — это имя конструируемой структуры данных, имена общих данных в различных процедурах — поля-вариант объединения. Вопрос о выборе ну ного варианта да е не стоит, поскольку в каждой процедуре виден лишь один вариант COMMON-блока. Хотя синтаксически (и да е семантически, если иметь ввиду недисциплинированное использование COMMON-блоков) все это не выглядит как применение универсального конструктора, суть от этого не меняется.
Рассмотрим вариантные записи в сопоставлении с оператором выбора. Здесь, как и для ранее приведенной аналогии между записями и последова-тельнм совместным выполнением операторов мо но найти много обего и отметить расхождения.
(1). снова определения аналогии та е, что в предыдуем случае. обоих случаях есть тегирование для вбора варианта (в записях оно мо ет отсутствовать, но это непринципиально, так как в таком случае считается, что вычисление отсутствуего тега выполнено статически, а потому тег ликвидирован).
(2). Последовательность операторов как синтаксическая единица аналогична списку полей записи, конкретизируих список компонент универсального набора.
(3). Исполнение последовательности операторов, входящих в состав одного из вариантов оператора выбора, искл чает выполнение остальных (в С/С++ приходится это моделировать). менно так осуествляется выбор поля объединения, т. е. с гарантиями единственности варианта доступа к совмещенным полям записи.
(4). Именование в обоих случаях возможно через метку варианта, но для записей допускаются еще и имена полей, что соответствует именам процедур (вместе с сигнатурами, если возможен их полиморфизм).
(5). бой переход к оператору для его вполнения аналогичен вычислению селектора.
10 Например, при обсуждении массивов мы увидим, что за счет наложения векторов на матрицы можно добиться повышения эффективности работы с разреженными массивами.
9.3.
523
(6). Соответствие между временем жизни оператора и временем жизни вариантной записи то же, что и в предыдущем случае (простых записей): расхождение полное.
(7). То е про активность оператора во время его изни (при исполнении) и ее противоположность пассивности полей записи.
(8). Как и в предыдущем случае, имеется асимметрия: данные используются оператором, а оператор невозможно использовать в вариантной записи. Однако расхождение здесь сильнее, т. к. нет аналога объектно-ориентированному расирени понятия вариантной записи.
Если говорить о восходящем построении структур данных, то понятно, что, наряду с перечислениями, записи и объединения — это саме просте конструкторы структур данных. На это указывал еще Хоор в статье «Структурная организация данных» [29]. При условии, что компонента записей и объединений элементарны, справедливо следуее:
a) каждый элемент данных занимает фиксированный и, как правило, очень небольой объем памяти, который линейно зависит от длины определения;
b) необходимая память может быть выделена экономно, без использования сло нх механизмов распределения памяти;
c) наиболее частые операции достаточно просто и естественно реализуются с помоь команд вычислительнх маин или их последовательностей;
d) для представления этих структур не требуются указатели (ссылки, адреса), а потому облегчается реение задач обмена меду вненей и оперативной память ;
e) выбор естественного представления прост.
о больинство из указаннх преимуеств рассыпается, когда базой для этих конструкторов явля тся другие, возмо но, более сло ные типы.
524
9.
9.3.4. Массивы
порядоченнй набор компонент одного и того е типа, для которых не определяются имена, называется массивом (одномерным). Сейчас стало правилом не говорить специально о многомернх массивах, поскольку это понятие можно представлять как массив, компонентами которого являются массивы (рекурсивное определение). Для массива как конструктора структуры определяющими являются:
• однородность (однотипность) компонент,
• упорядоченность компонент, и как следствие,
• селектирование с помощью порядкового номера компонента — индексирование.
ругой взгляд на массивы — порядковй номер рассматривается как часть (атрибут) компоненты, который вычисляется при селектировании. н несколько абстрактнее и позволяет переносить понятие массива на случаи, когда в качестве индекса использу тся не целые, а какие-либо ине значения, например:
• еречисление, в частности, их отрезки (Pascal).
• трезок лбого линейно упорядоченного типа, причем не обязательно перечисления (т. е. операции succ и pred могут отсутствовать). Реально используются строки, даты и т. п. Это называется ассоциативными массивами.
• Абстрактное индексирование: любая совокупность попарно различных значений (именно это стоило б называть ассоциативнми массивами).
Нужно только, чтобы существовало отображение из множества атрибутов в отрезок целых.
бычное обозначение конструктора массива вкл чает в себя:
• имя определяемой структур (имя типа массив),
• область изменения индексов (тип индексов, нижняя и верхняя граница, т. е. отрезок типа) и
Предыдущая << 1 .. 180 181 182 183 184 185 < 186 > 187 188 189 190 191 192 .. 316 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100