Н. Джехани - Язык Ада (1988) (1160771), страница 90
Текст из файла (страница 90)
6.7. СОВИЕЩЕНИЕ ОПЕРАЦИЙ Описание функции, обозначение которой является знаком операции, используется для совмещения операций. Последовательность символов в знаке операции должна быть обозначением операции: логической, отношения, бинарной аддитивной, унарной аддитивной, мультипликативной или высшего приоритета (см. 4.5). В качестве обозначения функции не допускаются никакие проверки вхождения, ни формы управления с промежуточной проверкой. ч Имеетоя е виду, что обе подпрограммы имеют разные зоны описания. — Прим.
ред. 376 Глава 8 Спецификация подпрограммы унарной операции должна иметь один. единственный пара. метр. Спецификация подпрограммы бинарной операции должна иметь два параметра; при каждом использовании этой операции левый операнд берется в качестве первого фактического параметра, правый операнд — в качеотве второго параметра; конкретизация настройки функции, которая обозначена знаком операции, допускается, только если спецификация настраиваемой функции имеет соответствующее число параметров. Выражения по умолчанию для параметров операции недопустимы (описана ли операция явно спецификацией подпро.
граммы или конкретизацией настройки). Операции + и — допускают как унарную, так и бинарную совмещенную операцию. Явное описание функции, которая совмещает операцию =, отличное от описания переименования, допустимо, только если оба параметра являются параметрами одного и того же лимитируемого типа. Совмещение равенства должно давать результат предопределенного типа ВОО).ЕАН; операция неравенства 1=, дающая результат, дополнительный к результату операции равенства, совмещается неявно при задании операции равенства. Явное совмещение операции неравенства недопустимо. Описание переименования, обозначение которого — операция равенства, допустимо только для переименования другой операции равенства.
(Например, такое описание переименования может быть использовано, когда равенство видимо по имени, но не непосредственно.) Примечание. Совмещение операций отношения не нарушает соотношении, таких как проверка вхождения в диапазон или выборы в операторе выбора. Примеры: Гоооеоо "+" 1ЬЕЗТ, й16НТ: МАТЯ1Х! гоаоя МАТЯ1Х; головая "~-" (ьеят. я16нт: чйстОЙ! гоеоо честся; — в предположении, что А, В и с типа честоя — три следующих присваивания эквивалентны А: 8+6; А:= "~-"18, С); А: "~ Ц.ЕЕТ => 8, Я16НТ => С); Ссылки: бинарная аддитивная операция 4.5, 4.5.3, видимый по именованию 8.3, выражение по умолчанию для формального параметра 6.1, дополнительный результат 4.5.2, допустимо 1.6, знак операции 6.1, лимитируемый тип 7.4.4, логическая операция 4.5, 4.5.1, логический предопределенный тип 3.5.3, мультипликативная операция 4.5, 4.5.5, непосредственно видимо 8.3, неявное описание 3.1, обозначение 6.1, операция 4.5, операция высшего приоритета 4.5, 4.6.6, операция наравенства 4.5.2, операция отношения 4.5, 4.5.2, операция равенства 4.5, описание 3.1, описание функции 6.1, определение типа 3.3.1, проверка вхождения 4.5, 4.5.2, символ 2.1, совмещение 6.6, 8.7, унарная аддитивная операция 4.5, 4.5.4, фактический параметр 6.4.1, форма управления с промежуточной проверкой 4.5, 4.5.1, формальный параметр 6.1.
Глава 7 ПАКЕты Пакеты — это одна из четырех форм программных модулей, из которых составляются программы. Другие формы — это подпрограммы, задачные модули и настраиваемые модули. Пакеты допускают спецификацию групп логически связанных понятий. Простейшие формы пакета специфицируют совокупность общих объектов и описании типов. Вообще пакеты могут использоваться для спецификации групп взаимосвязанных понятий, включающих также подпрограммы, которые могут быть вызваны извне пакета, тогда как действие внутри пакета остается скрытым и защищенным от внешних пользователей. Ссылки: звдачный модуль 9, настраиваемый модуль 12, описание типа 3.3.1, подпрОграм. ма 6, программный модуль 6.
7.1. СТРУКТУРА ПАКЕТА Пакет обычно представлен двумя частями: спецификацией пакета и телом пакета. Спецификация имеется у каждого пакета, а тело имеют не все пакеты. описание пакета::= спецификация пакета; спецификация пакета;: = расйайе идентификатор )в (основной элемент описания! [РИуа(е (основной элемент описания)] епб [простое имя пакета] тело пакета;:= расвайе бобу простое имя пакета (в [раздел описаний] [бей!и последовательность операторов [ехсербоп обработчик исключения (обработчик исключения)]] епб [простое имя пакета]; Простое имя в начале тела пакета должно совпадать с идентификатором этого пакета.
Аналогично если простое имя помещено в конце спецификации или тела пакета, то оно должно совпадать с идентификатором этого пакета. Если описание подпрограммы, описание пакета, описание задачи или описание настройки являются элементами описания в спецификации пакета, то тело (если оно существует) про. граммного модуля, описанного этим элементом описания, само должно быть элементом описания в разделе описаний тела того же самого пакета.
Примечание. Для простой формы пакета, специфицирующей совокупность объектов и типов, тело не обязательно. Одной из возможностей использования последовательности операторов тела пакета является инициализация таких объектов. Для каждого описания подпрограммы должно существовать соответствующее тело (за исключением подпрограмм, написанных на другом языке, см. 13.9]. Если тело программного модуля является следом тела, то для этого программного модуля требуется раздельно компилируемый субмодуль, содержащий со. ответствующее тело (см.
10.2). Тело не является основным элементом описания и, таким образом, не может присутствовать в спецификации пакета. Описание пакета — это либо библиотечный пакет (см. 10.2), либо элемент описания внутри другого программного модуля. Ссылки: библиотечный модуль 10.1, идентификатор 2.3, настраиваемое тело 12.2, обрвбот. чик исключения 11.2, объект 3.2, описание задачи 9.1, описание настройки 12.1, описание под- Главе 7 программы 6.1, основной элемент описания 3.9, последовательность операторов 5.1, программный модуль 6, простое имя 4.1, раздел описаний 3.8, след тела 10.2, соответствующее тело 3.9, субмодуль 10.2, тело задачи 9.1, тело пакета 7.3, тело подпрограммы 6.3, тип 3.3, элемент опи. сания 3.9.
72. СПЕЦИФИКАЦИИ И ОПИСАНИЯ ПАКЕТОВ Первый список элементов описания в спецификации пакета называется видимым разделом пакета. Необязательный список элементов описания после зарезервированного слова рбча(е называется личным разделом пакета. Понятие, описанное в личном разделе пакета, невидимо внв этого пакета(имя, обозначающее такое понятие, доступно только в пакете).
В противоположность этому расширенные имэ на, обозначающие описанные в видимом разделе понятия, могут быть использованы даже вне этого пакета; прямую видимость этих понятий можно получить также с помощью специфика. тора использования (см. 4.1.3 и 8.4). Предвыполнение описания пакета состоит в предвыполнении его основных элементов описания в порядке их следования. Примечание. Видимый раздел пакета содержит всю информацию, доступную для другого программного модуля.
Пакет, состоящий только из спецификации пакета (т. е. без тела пакета), может быть использован для представления группы общих констант или переменных или сб. щей совокупности объектов и типов, как показано ниже в примерах. Пример пакета, описывающего группу общих переменных: Рееыше РЬОТТ(МО ОАТА Ь РЕМ ОР: ВООЬЕАМ1 сбмчейзгбм РАСТОя, Х ОРРЗЕТ. У ОРРЗЕТ, Х М(й, У М(й, Х МАХ. У МАХ: йЕАЫ вЂ” см. 3.5.7 Х ЧАШЕ: епеу (1 ..
600) е( ЯЕАЫ У ЧАШЕ: элэт (1 .. 600) е( ЯЕАЩ епа РЬОТТ(МО ОАТА; Пример пакета, описывающего общую совокупность объектов и типовг Реемьзе ЧЧОЯК ОАТА Ь эусе ОАУ Ь (МОМ. ТОЕ, ЧЧЕО, ТНО, РЯ1, ЗАТ, Змй); этре НООЯЗ ЗРЕМТ Ь аеша 0.26 гаазе 0.0 .. 24.01 эуре Т(МЕ ТАВ(Е Ь апеу (ОАУ) е( НООйЗ ЗРЕМТ: ЪЧОЯК НООЯЗ: Т(МЕ ТАВЬЕ1 МОЯМА~ НООЯЗ: аеяэ1еяэ Т1МЕ ТАВЬЕ (МОМ .. ТНО => 8.26, РЯ( => 7.0, ЗАТ ) ЗОМ > 0.01; ела ЬЧОЯК ОАТА; Ссылки: идентификатор пакета 7.1, имя 4.1, константа 3.2.1, область действия 8.2, описание объекта 3.2.1, описание пакета 7.1, описание типа 3.3.1, описание числа 3.2.2, основной элемент описания 3.9, пакет 7, переменная 3.2.1, предвыполнение 3.9, простое имя 4.1, прямая видимость 8.3, расширенное имя 4.1.3, спецификатор использования 8.4, спецификация паке.
та 7.1, элемент описания 3.9. 7.3. ТЕПА ПАКЕТОВ В отличие от понятий, описанных в видимом разделе спецификации пакета, понятия, опи. санные в теле пакета, видимы только внутри самого тела пакета. Поэтому пакет с телом пакета может быть использован для создания группы взаимосвязанных подпрограмм (пакет прикладных программ в обычном смысле), в которой доступные пользователям операции явно изолированы от внутренних понятий. При предвыполнении тела пакета сначала предвыполняется его раздел описаний, а затем выполняется его последовательность операторов (если она имеется). Необязательно присутствующие в конце тела пакета обработчики исключений обслуживают исключения, возбуждаемые при выполнении последовательности операторов тела пакета. 379 Пакеты Примечание. Переменная, описанная в теле пакета, видима только внутри этого тела, и, следовательно, ее значение может быть изменено только внутри этого тела пакета.