Введение в программирование - Учебное пособие (Корочкин А. В.)

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