Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ПРИМЕЧАНИЕ. Пометку 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. Содержимое приватной части пользователю (клиенту) недоступно. В эту часть помещают скрываемые от пользователя операции и детали описания типов данных. Заметим, что из тела пакета доступно содержание как открытой, так и приватной части спецификации.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.