Cтраница 4
Составлено описание глобальных переменных и констант. Описания переменных соответствуют спецификациям - на глобальные модули данных и выполняются на одном из языков программирования. [46]
Модули всех типов ( локальные, глобальные и программные) могут импортировать объекты из других модулей. Все объекты, описанные в разделе определений глобального модуля, автоматически экспортируются. Явный экспорт для локальных модулей ограничен. Экспорт запрещен совсем в программном модуле и в разделе реализации глобального модуля. [47]
Перечисленные ниже функции встроены во все компиляторы с Модулы-2. Список стандартных средств, реализованных в виде обычных глобальных модулей, приведен в гл. [48]
Второй вариант быстрой сортировки более общий. В примере 15.10 процедура быстрой сортировки заключена в глобальный модуль. Он взаимодействует с подлежащей сортировке структурой данных с помощью двух процедур, одна из которых осуществляет сравнение двух элементов структуры, а другая - обмен элементов. Этот вариант - шаг вперед, но его общность все еще недостаточна. [49]
Модуль реализации является скрытой частью глобального модуля. Это место, где происходит действительное выполнение функций глобального модуля, в отличие от модуля определений, который их объявляет. В остальном модуль реализаций конструируется подобно программному модулю. [50]
Вместо них есть процедуры ввода / вывода, содержащиеся в глобальном модуле InOut, который обеспечивается любой системой Модулы-2. Если вам не нравятся стандартные средства ввода / вывода, вы можете написать их сами. Стандартные модули ввода / вывода написаны в расчете на конкретную систему, но во всех системах аналогичные модули выполняют в точности такие же функции. Поэтому программы, опирающиеся только на стандартные модули ввода / вывода, легко могут быть перенесены с одной системы на другую. [51]
Если используется предложение FROM, то каждое предложение IMPORT импортирует объекты какого-нибудь одного глобального модуля, и каждый импортируемый объект должен быть явно указан в списке. Заметим, что модуль Ветчина может импортировать только один неквалифицируемый идентификатор Яйца из двух существующих в нашем примере. Но если они оба должны быть импортированы, то по крайней мере на одну из двух переменных мы обязаны ссылаться с использованием квалифицируемого идентификатора. Использование предложения FROM обязывает вас удостовериться, что не возникает коллизии имен. [52]
Большинство зерсий Модулы-2 содержит следующие процедуры для работы с сопрограммами. В некоторых реализациях эти средства импортируются из модуля SYSTEM, в других они содержатся в обычном глобальном модуле. В некоторых версиях Модулы-2 имеется специальный тип PROCESS для дескрипторов сопрограмм. [53]
Модуль реализации должен разрабатываться в соответствии с его модулем определений. Константы, переменные и прозрачные типы, объявленные в модуле определений, становятся автоматически доступны в соответствующем модуле реализаций глобального модуля. [54]