6.3 примерыП Пример подпрограммы: procedure Sum_Complex (А, В : in Complex ; С : out Complex); - - спецификация procedure Sum_Complex (А, В : in Complex ; С : out Complex) is - - тело begin C.x:=A.x+B.x; C.y:=A.y+B.y; end Sum _Complex; П Пример функции : function Mult_Complex (А, В : Complex) return Complex; - - спецификация - - тело function Mult_Complex (А, В : Complex ) return Complex is Z: Complex; begin Z.x:=A.x*B.x-A.y*B.y; Z . у:=A.x*B.у +А.у * В . x; return Z; end Mult_Complex; D Пример пакета : package Complex_Numbers is - - спецификация пакета type Compex is record x: float; у: float; end record; function "+" (A , В : Complex) return Complex ; function "/" (A , В : Complex) return Complex ; function "-" (A, В : Complex) return Complex ; function "*" (A, В : Complex) return Complex ; end Complex_Numbers; package body Complex_Numbers is -- тело пакета function "+" (A, В : Complex) return Complex is end "+"; function 7" (A , В : Complex) return Complex is end "/"; function "-" (A , В : Complex) return Complex is end"-"; function "*" (A , В : Complex) return Complex is end "*"; end Complex_Numbers; D Пример настраиваемого пакета : Глава 6. Модули Ада 95. Введение в программирование 59 58
generic type Elem is digits <> ; - - параметр настройки package ComplexJM umbers is - - спецификация настройки type Complex is private; - - приватный тип function "+" (A , В : Complex) return Complex ; function 7" (A , В : Complex) return Complex ;; function "-" (A , В : Complex) return Complex ; function "*" (A , В : Complex) return Complex; private - - приватная часть спецификации type Complex is record x: Elem; у: Elem; end record ; end Complex_Numbers; package body ComplexJMumbers is ... - - тело настраиваемого пакета end Complex_N umbers; D Пример задачи : task Stack is entry Pop ( X : out Elem ); - - спецификация задачи entry Push (X : in Elem ); end Stack; task body Stack is - - тело задачи Pool: Elem; begin loop accept Pop (X : out Elem ) do Pool: = X ; end Pop; accept Push ( X : in Elem ) do X : = Pool; end Push; end loop; end Stack; D Пример защищенного модуля : protected Data is - - спецификация function Read (X : out integer); entry Write (X : in integer); private Share_Elem : integer; Tag : boolean : = false ; end Data; - - тело protected body Data is begin function Read ( X : out integer) is begin Tag : = True ; return Share_Elem; end Read; entry Write (X: in integer) when Tag = True is Tag : = fals ; Share_Elem: = X; end Write; end Data; 60 Ада 95. Введение в программирование Глава 7. Подпрограммы 61
|
| Оглавление| |