Локальный модуль - Большая Энциклопедия Нефти и Газа, статья, страница 3
Ничто не хорошо настолько, чтобы где-то не нашелся кто-то, кто это ненавидит. Законы Мерфи (еще...)

Локальный модуль

Cтраница 3


Напомним, что, когда мы рассматривали списки экспорта в разделе модуля определения, экспорт с описанием QUALIFIED был обязателен для модулей определения и необязателен для локальных модулей. Локальный модуль А использует неуточненную форму экспорта для экспорта обеих своих переменных.  [31]

Таким образом, произвольное состояние проектируемой системы можно представить информационной схемой и формулами преобразования данных, что позволяет отделить класс проектных операций, связанных с построением информационно-логической структуры системы, от проектных операций разработки локальных модулей.  [32]

Локальные модули позволяют выделить в заключающем их модуле несколько кусков, избежав при этом неудобства, связанные с созданием нового глобального модуля. Локальные модули обычно в совокупности составляют большой глобальный модуль, поэтому привести здесь небольшой пример нереально. Локальные модули обсуждаются в гл.  [33]

Легко установить, что это - программный модуль, так как он начинается с ключевого слова MODULE. Локальные модули тоже начинаются с ключевого слова MODULE, но они всегда расположены внутри модуля или процедуры.  [34]

Локальные модули часто создаются со спрятанными ( скрытыми) переменными и экспортируемыми процедурами, использующими эти переменные. Экспорт процедур, оперирующих со скрытыми данными, обычно надежнее, чем разрешение доступа к данным отовсюду. В следующем примере экспортируются две процедуры из локального модуля Спрячь.  [35]

На списки импорта и экспорта накладывается одно ограни - ченне: они могут содержать только идентификаторы, использование КвалИдент не допускается. Локальный модуль, которому необходимо импортировать объект, объявленный в квалифицируемом экспорте другого локального модуля, должен либо импортировать весь этот модуль, либо использовать ключевое слово FROM в списке импорта.  [36]

Другое отличие состоит в том, что переменные внутри модуля создаются в начале выполнения окружения модуля. Локальные модули обычно, описываются внутри программного модуля или модулей реализации. Окружающим контекстом для таких локальных модулей является сама программа, которая ограничивает время существования нх локальных переменных временем своего выполнения. Отсюда переменные в модуле часто называют статическими ( в противоположность динамическим) потому, что они не создаются и не уничтожаются при каждом вызове процедуры.  [37]

Локальный модуль - это просто модуль, вложенный в другой или в процедуру. Модуль может управлять видимостью как снаружи внутрь, так и в обратном направлении. Внешние элементы должны импортироваться модулем, прежде чем они станут видимы внутри модуля. Аналогичным образом внутренние объекты должны экспортироваться, прежде чем они станут видимы за пределами модуля. Хотя процедуры могут выполнять эти последние функции управления, они не могут ограждать от внешних воздействий и сохранять данные между выполнениями процедуры.  [38]

Напомним, что, когда мы рассматривали списки экспорта в разделе модуля определения, экспорт с описанием QUALIFIED был обязателен для модулей определения и необязателен для локальных модулей. Локальный модуль А использует неуточненную форму экспорта для экспорта обеих своих переменных.  [39]

Локальный модуль - это модуль, вложенный внутрь другого. Иногда локальный модуль вложен внутрь процедуры. Использование локальных модулей позволяет улучшить организацию программы. Они также используются для защиты критических секций ( разд. Размещение нескольких связных процедур я структур данных в локальном модуле объединяет их и изолирует от внешнего модуля.  [40]

Приведенная ниже модифицированная версия модуля OnePBuffer использует локальный модуль для защиты манипуляций с переменной cnt и входа deposit. С этим локальным модулем связан приоритет 4, благодаря чему нам удается исключить прерывания 4-го и более низких приоритетов. Это гарантирует защиту наших критических областей. В DEFINITION MODULE OnePBuffer изменений не вносится, поэтому ниже приводится только новый раздел реализации.  [41]

Хотя модуль PageStuff, экспортируемый процедурой PageTop, не был основным в данной реализации, он иллюстрирует различные моменты. Во-первых, реализуется локальный модуль. Экспорт в локальном модуле не должен быть условным. Переменная модуля PageNmbr, устанавливаемая в нуль в основном теле модуля PageStuff при вызове процедуры FileOutput, увеличивается всякий раз, когда исполняется процедура Page-Top. Текущее значение PageNmbr запоминается после выхода из процедуры PageTop. Вновь прослеживается идея существования переменной модуля отдельно от самого модуля.  [42]

Операторы RETURN допускаются также в теле модуля. В глобальном или локальном модуле оператор RETURN просто прекращает выполнение тела модуля. Однако выполнение опера - тора RETURN в программном модуле заканчивает программу. Тела модулей выполняются так, как если бы они были обычными процедурами без параметров. Тело модуля автоматически вызывается, когда активируется окружение этого модуля. Этот момент будет рассмотрен более подробно в разд.  [43]

В части II разбираются модули - основное новшество Модулы-2. Первая глава этой части касается локальных модулей. Затем на протяжении двух глав рассматриваются две половины глобального модуля Модулы-2. Глобальные модули можно транслировать по отдельности, что обсуждается и демонстрируется в этих главах. Глава 4 части II описывает те свойства глобальных модулей, которые обеспечивают некоторые реализации Модулы-2. Последняя глава части II представляет собой самый длинный в этой книге пример: алгебраический калькулятор с переменными.  [44]

Итак, с импортом для библиотечного модуля может применяться либо один способ импорта ( и связанный с ним способ именования идентификаторов), либо другой. Как мы увидим, для локальных модулей это не так.  [45]



Страницы:      1    2    3    4