|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
ПРИМЕЧАНИЕ. Пометку in разрешается не указывать (она подразумевается по умолчанию), поэтому в спецификации функции вид параметра отсутствует
Пометку in разрешается не указывать (она подразумевается по умолчанию), поэтому в спецификации функции вид параметра отсутствует. Для формального параметра вида in разрешается задавать начальное значение, присваиваемое по умолчанию.
Пример спецификации: procedure Sum (Opl: in Integer:= 0; Op2: in Integer:= 0; Op3: in Integer:= 0: Res: out Integer); Тело процедуры в общем случае имеет вид procedure <ИмяПроцедуры> (<СписокФормальныхПараметров>) is <объявления локальных переменных и констант> begin <операторы> end <ИмяПроцедуры>; Пример тела: procedure Sum (Opl: in Integer:= 0; Op2: in Integer:= 0; Op3: in Integer:= 0: Res: out Integer) is begin Res:= Opl + Op2; Res:= Res + Op3; end Sum; В данной процедуре три формальных параметра имеют значения по умолчанию. Это дает интересные возможности. Обращаются к процедуре с помощью оператора вызова, он имеет вид <ИмяПроцедуры> (<СписокФактическихПараметров>); Примеры операторов вызова: Sum (4. 8, 12. d); -- переменная d получит значение 24 Sum (4. 8. Res => d); -- переменная d получит значение 12 ПРИМЕЧАНИЕ В первом операторе вызова задано 4 фактических параметра, во втором операторе — 3 фактических параметра. Во втором операторе использованы как традиционная (позиционная) схема, так и именная схема сопоставления формального и фактического параметров. Пакеты Пакет — основное средство для поддержки многократности использования программного текста. При проектировании программ пакеты позволяют применить подход клиент-сервер. Пакет действует как сервер, который предоставляет своим клиентам (программам и другим пакетам) набор услуг. Спецификация пакета объявляет предлагаемые услуги, а тело содержит реализацию этих услуг. Спецификация пакета записывается в виде package <ИмяПакета> is <объявления типов, переменных, констант> <спецификации процедур и функций> end <ИмяПакета>; Пример спецификации: package Рисование is type Точка is array (1.. 2) of Integer; -- описание точки в прямоугольной системе координат procedure Переход (из: in Точка; в: in Точка); -- переход из одной точки в другую точку procedure Рисовать_Линию (от: in Точка; до: in Точка); -- рисуется сплошная линия между заданными точками procedure Рисовать_Пунктирную_Линию (от: in Точка: до; in Точка); -- рисуется пунктирная линия end Рисование; Данная спецификация предлагает клиентам один тип данных и три процедуры. Тело пакета представляется в виде package body <ИмяПакета> is <объявления локальных переменных, констант. типов> <тела процедур и функций> end <ИмяПакета>; Еще раз отметим, что содержание тела пакета клиентам недоступно. Пример тела: package body Рисование is -- локальные объявления procedure Переход (из: in Точка: в: in Точка) is -- локальные объявления begin -- операторы end Переход; procedure Рисовать_Линию(от: in Точка: до; in Точка) is -- локальные объявления begin -- операторы end Рисовать_Линию; procedure Рисовать_Пунктирную_Линию (от: in Точка; до: in Точка) is -- локальные объявления begin -- операторы end Рисовать_Пунктирную_Линию; end Рисование: В спецификации пакета может быть полузакрытая (приватная) часть. Эта часть отделяется от обычной (открытой) части служебным словом private. Содержимое приватной части пользователю (клиенту) недоступно. В эту часть помещают скрываемые от пользователя операции и детали описания типов данных. Заметим, что из тела пакета доступно содержание как открытой, так и приватной части спецификации. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |