42552

Параллельные и распределённые вычисления

Лабораторная работа

Информатика, кибернетика и программирование

Разделить пакет из лабораторной работы № 2 на четыре пакета, поместив в первый пакет реализацию функций Func1 и типа Vector, во второй – реализацию функции Func2 и тип Matrix, в третий – реализацию функции Func3, а в последний - реализацию дополнительных процедур ввода-вывода Vector_Input, Vector_Output, Matrix_Input, Matrix_Output). Установить между пакетами отношения иерархии, выбрав первый пакет в качестве р о д и т е л ь с к о г о , а остальные пакеты реализовав через д о ч е р н и е модули ( п р и в а т н ы е и п у б л и ч н ы е).

Русский

2013-10-30

97.5 KB

6 чел.

Лабораторная работа №2  

по курсу:

«Параллельные и распределённые вычисления»

Выполнил: студент группы ИВ-83

НТУУ «КПИ» ФИВТ

Воробйов Виталий

ЗАДАНИЕ

Разделить пакет из  лабораторной работы № 2 на четыре пакета, поместив в первый пакет реализацию функций  Func1 и типа Vector, во второйреализацию функции Func2 и тип Matrix,  в третий – реализацию функции Func3, а в последний -  реализацию дополнительных процедур ввода-вывода Vector_Input, Vector_Output, Matrix_Input, Matrix_Output).  Установить между пакетами отношения иерархии, выбрав первый пакет в качестве р о д и т е л ь с к о г о ,  а остальные пакеты реализовав через    д о ч е р н и е  модули   ( п р и в а т н ы е    и    п у б л и ч н ы е).

Организовать  р а з д е л ь н у ю  компиляцию пакета и одной  из подпрограмм из лаб.работы N 2.(спецификации и тела).

  Рассмотреть три варианта раздельной компиляции:

  •  пакет является библиотечным модулем (отдельный файл);
  •  спецификация и тело пакета размещены в отдельных файлах;
  •  спецификация пакета вложена в пользовательскую программу, тело находится в отдельном файле.

   

Реализовать обработку   и с к л ю ч и т е л ь н ы х ситуаций, связанных с вводов/выводом (ввод неправильного символа) и счетом (деление на 0 или переполнение).

КОД ОТКОМПИЛИРОВАННОЙ ПРОГРАММЫ

  1.  Пакет являеться библиотечным модулем.

Source file: ..\package1-f1.adb   Wed Sep 15 20:08:25 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #2--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11 package Package1_F1 is

  12

  13    N:Integer:=2;

  14    type vector is private;

  15

  16    procedure Func1(a, b, c, d: in Vector; e:out integer);

  17

  18    private

  19                 --Multiplying vectors--

  20                 --c = A * B--

  21                 function VectorMult(a, b: Vector) return integer;

  22         type Vector is array (1..N) of Integer;

  23 end Package1_F1;

  24

  25         

  26 package body Package1_F1 is

  27

  28    --Multiplying vectors--

  29    --c = A * B--

  30    function VectorMult(a, b: Vector) return integer is

  31       sum: integer := 0;

  32    begin

  33       for i in A'range loop

  34          sum := sum + a(i) * b(i);

  35       end loop;

  36       return sum;

  37    end VectorMult;

  38

  39    procedure Func1(a, b, c, d: in Vector; e:out integer) is

  40    begin

  41       e := VectorMult(a, b) - VectorMult(c, d);

  42         exception

  43                 when Constraint_Error =>

  44                 Put("Constraint error in Func1.");

  45    end Func1;

  46

  47 end Package1_F1;

Source file: ..\package2-f2.adb   Wed Sep 15 20:08:26 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11

  12 package Package1_F1.F2 is       

  13                 type Matrix is private;

  14

  15                 procedure Func2(MA, MB: in Matrix; MZ: out Matrix);

  16

  17         private

  18                 function MatrixSub(MA, MB: Matrix) return Matrix;

  19

  20                 function MatrixScale(MA: Matrix; b: Integer) return Matrix;

  21

  22                 function MAX(MA: Matrix) return Integer;

  23

  24                 function MIN(MA: Matrix) return Integer;

  25         type Matrix is array (1..N) of Vector;

  26 end Package1_F1.F2;

  27         

  28 package body Package1_F1.F2 is

  29

  30         --MATRIX-SUB function--

  31         --MC = MA - MB--

  32         function MatrixSub(MA, MB: Matrix) return Matrix is

  33                 MC: Matrix;

  34         begin

  35           for i in MA'Range loop

  36          for j in MB'Range loop

  37             MC(i)(j) := MA(i)(j) - MB(i)(j);

  38          end loop;

  39       end loop;

  40       return MC;

  41         end MatrixSub;

  42

  43         --Multiplying matrix and scallar--

  44         --MC = MA * b--

  45         function MatrixScale(MA: Matrix; b: Integer) return Matrix is

  46                 MC: Matrix;

  47         begin

  48           for i in MA'Range loop

  49          for j in MA'range loop

  50             MC(i)(j) := MA(i)(j) * B;

  51          end loop;

  52       end loop;

  53       return MC;

  54         end MatrixScale;

  55

  56         --Finding maximum of input matrix--

  57         --MAX(MA)--

  58         function MAX(MA: Matrix) return Integer is

  59                 Sum: Integer := 0;

  60         begin

  61           for i in MA'Range loop

  62          for j in MA'range loop

  63             if MA(i)(j) > Sum then

  64                                 Sum := MA(I)(J);

  65                         end if;

  66          end loop;

  67       end loop;

  68       return Sum;

  69         end MAX;

  70

  71         --Finding minimum of input matrix--

  72         --MIN(MA)--

  73         function MIN(MA: Matrix) return Integer is

  74                 Sum: Integer := Integer'Last;

  75         begin

  76           for i in MA'Range loop

  77          for j in MA'range loop

  78             if MA(i)(j) < Sum then

  79                                 Sum := MA(I)(J);

  80                         end if;

  81          end loop;

  82       end loop;

  83       return Sum;

  84         end MIN;

  85         

  86

  87    ---MZ = MIN(MA)*MB - MAX(MB)*MA

  88    procedure Func2(MA, MB: in Matrix; MZ: out Matrix) is

  89    begin

  90       MZ := MatrixSub(MatrixScale(MB,MIN(MA)),MatrixScale(MA,MAX(MB)));

  91           exception

  92               when Constraint_Error =>

  93                  Put("Constraint error in Func2");

  94    end Func2;

  95 end Package1_F1.F2;

Source file: ..\package3-f3.adb   Wed Sep 15 20:08:26 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11

  12 package Package1_F1.F2.F3 is

  13

  14         function Func3(MB: Matrix; C: Vector) return Vector;

  15         procedure VectorSort(a: in out Vector);

  16         procedure MatrixSort(mA: in out Matrix);

  17         function MatrixMulVector(a: Vector; MB: Matrix) return Vector;

  18

  19 end Package1_F1.F2.F3;  

  20         

  21 package body Package1_F1.F2.F3 is

  22         

  23         procedure VectorSort(a: in out Vector) is separate;

  24

  25    --Matrix Sorting--

  26    --SORT(MA)--

  27    procedure MatrixSort(mA: in out Matrix) is

  28    begin

  29       for i in MA'range loop

  30          VectorSort(mA(i));

  31       end loop;

  32    end MatrixSort;

  33    

  34    --Multiplying matrix with vector--

  35    -- C = A * MB--

  36    function MatrixMulVector(a: Vector; MB: Matrix) return Vector is

  37           C: Vector;

  38           MD: matrix;

  39           Sum: Integer := 0;

  40    begin

  41           for j in MB'range loop

  42                 for i in MB'range loop

  43                         Sum := Sum + MB(i)(j) * A(I);

  44                 end loop;

  45                 C(j) := Sum;

  46                 Sum := 0;

  47           end loop;

  48       return C;

  49    end MatrixMulVector;

  50         

  51    function Func3(MB: Matrix; C: Vector) return Vector is

  52           MG: Matrix; A: Vector;

  53    begin

  54       MG := MB;

  55       MatrixSort(MG);

  56       A := MatrixMulVector(C,mG);

  57    return A;

  58    exception

  59               when Constraint_Error =>

  60                  Put("Constraint error in Func3");

  61                          return A;

  62    end Func3;

  1.  

end Package1_F1.F2.F3;

Source file: ..\package4-io.adb   Wed Sep 15 20:08:26 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10         with Ada.Text_IO; use Ada.Text_IO;

  11         with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

  12         with Ada.IO_Exceptions; use Ada.IO_Exceptions;

  13

  14 package Package1_F1.F2.IO is

  15            --I/O operations

  16    --Vector outpur--

  17    procedure VectorOutput(a: Vector);

  18

  19    ---Matrix output--

  20    procedure MatrixOutput(a: Matrix);

  21

  22    ---Vector input--

  23    procedure VectorInput(a: in out Vector);

  24

  25    ---Matrix input--

  26    procedure MatrixInput(m: in out Matrix);

  27 end Package1_F1.F2.IO;

  28

  29 package body Package1_F1.F2.IO is

  30         --Vector outpur--

  31    procedure VectorOutput(a: Vector) is

  32    begin

 33       for i in A'range loop

  34          Put(a(i), 5);

  35       end loop;

  36       New_line;

  37    end VectorOutput;

  38

  39    ---Matrix output--

  40    procedure MatrixOutput(a: Matrix) is

  41    begin

  42       for i in A'range loop

  43          for j in A'range loop

  44             Ada.Integer_Text_IO.Put(a(i)(j), 4);

  45          end loop;

  46          New_Line;

  47       end loop;

  48    end MatrixOutput;

  49

 50    ---Vector input--

  51    procedure VectorInput(a: in out Vector) is

  52    begin

  53      for i in A'range loop

  54          loop

  55             begin

  56                     Ada.Integer_Text_IO.Get(a(i));

  57                     exit;

  58                     exception

  59                        when Ada.IO_Exceptions.Data_Error =>

  60                           Put("Input error. Please, try again:");

  61                       Skip_Line;

  62             end;

  63          end loop;

  64       end loop;

  65    end VectorInput;

  66

  67    ---Matrix input--

  68    procedure MatrixInput(m: in out Matrix) is

  69    begin

  70       for i in M'range loop

  71          VectorInput(m(i));

  72       end loop;

  73    end;

74 end Package1_F1.F2.IO;

 

Source file: ..\packagevectorsort.adb   Wed Sep 15 20:08:26 2010

   1 separate (package1_f1.F2.F3)

   2 procedure VectorSort(a: in out Vector) is

   3    flag: boolean := true;

   4    help: integer;

   5 begin

   6    while flag loop

   7       flag := false;

   8       for i in 2..N loop

   9          if a(i-1) < a(i) then

  10             help := a(i-1);

  11             a(i-1) := a(i);

  12             a(i) := help;

  13             flag := true;

  14          end if;

  15       end loop;

  16    end loop;

  17 end VectorSort;

Source file: ..\usee   Wed Sep 15 20:08:26 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10

  11         with package1_f1,

  12                  package1_f1.F2,        

  13              package1_f1.F2.IO,

  14                  package1_f1.F2.F3;

  15     use package1_f1,

  16                  package1_f1.F2,        

  17              package1_f1.F2.IO,

  18                  package1_f1.F2.F3;

  19         with Ada.Text_IO; use Ada.Text_IO;

  20         with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

  21         

  22 procedure Begnn is

  23    A, B, C, D, F: Vector;

  24    MA, MB, MZ, MS: Matrix;

  25    e:integer;

  26 begin

  27    --Func 1

  28    Put_Line("Func 1");

  29    Put_Line("Input vector A");

  30    VectorInput(A);

  31    Put_Line("Input vector B");

  32    VectorInput(B);

  33    Put_Line("Input vector C");

  34    VectorInput(C);

  35    Put_Line("Input vector D");

  36    VectorInput(D);

  37    Func1(A, B, C, D, e);

  38    Put_Line("Func 1 result");

  39    Ada.Integer_Text_IO.Put(e);

  40    New_Line;

  41

  42    --Func 2

  43    Put_Line("Func2");

  44    Put_Line("Input matrix MA");

  45    MatrixInput(MA);

  46    Put_Line("Input matrix MB");

  47    MatrixInput(MB);

  48    Func2(MA, MB, MZ);

  49    Put_Line("Func 2 result");

  50    MatrixOutput(MZ);

  51

  52    --Func 3

  53    Put_Line("Func3");

  54    Put_Line("Input matrix MB");

  55    MatrixInput(MS);

  56    Put_Line("Input vector C");

  57    VectorInput(F);

  58    A := Func3(MS, F);

  59    Put_Line("Func3 result");

  60    VectorOutput(A);

  61 end Begnn;

  1.   Спецификация и тело пакета размещены в отдельных файлах.

Source file: ..\package1-f1.ads   Wed Sep 15 20:15:59 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #2--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 package Package1_F1 is

  11

  12         N: INteger:=2;

  13    type vector is private;

  14

  15    procedure Func1(a, b, c, d: in Vector; e:out integer);

  16

  17    private

  18                 --Multiplying vectors--

  19                 --c = A * B--

  20                 function VectorMult(a, b: Vector) return integer;

  21         type Vector is array (1..N) of Integer;

  22 end Package1_F1;

Source file: ..\package1-f1.adb   Wed Sep 15 20:15:59 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #2--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11 package body Package1_F1 is

  12

  13    --Multiplying vectors--

  14    --c = A * B--

  15    function VectorMult(a, b: Vector) return integer is

  16       sum: integer := 0;

  17    begin

  18       for i in A'range loop

  19          sum := sum + a(i) * b(i);

  20       end loop;

  21       return sum;

  22    end VectorMult;

  23

  24    procedure Func1(a, b, c, d: in Vector; e:out integer) is

  25    begin

  26       e := VectorMult(a, b) - VectorMult(c, d);

  27         exception

  28                 when Constraint_Error =>

  29                 Put("Constraint error in Func1.");

  30    end Func1;

  31

  32 end Package1_F1;

Source file: ..\package2-f2.ads   Wed Sep 15 20:15:59 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 package Package1_F1.F2 is       

  11                 type Matrix is private;

  12

  13                 procedure Func2(MA, MB: in Matrix; MZ: out Matrix);

  14

  15         private

  16                 function MatrixSub(MA, MB: Matrix) return Matrix;

  17

  18                 function MatrixScale(MA: Matrix; b: Integer) return Matrix;

  19

  20                 function MAX(MA: Matrix) return Integer;

  21

  22                 function MIN(MA: Matrix) return Integer;

  23         type Matrix is array (1..N) of Vector;

  24 end Package1_F1.F2;

  25

Source file: ..\package2-f2.adb   Wed Sep 15 20:15:59 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11 package body Package1_F1.F2 is

  12

  13         --MATRIX-SUB function--

  14         --MC = MA - MB--

  15         function MatrixSub(MA, MB: Matrix) return Matrix is

  16                 MC: Matrix;

  17         begin

  18           for i in MA'Range loop

  19          for j in MB'Range loop

  20             MC(i)(j) := MA(i)(j) - MB(i)(j);

  21          end loop;

  22       end loop;

  23       return MC;

  24         end MatrixSub;

  25

  26         --Multiplying matrix and scallar--

  27         --MC = MA * b--

  28         function MatrixScale(MA: Matrix; b: Integer) return Matrix is

  29                 MC: Matrix;

  30         begin

  31           for i in MA'Range loop

  32          for j in MA'range loop

  33             MC(i)(j) := MA(i)(j) * B;

  34          end loop;

  35       end loop;

  36       return MC;

  37         end MatrixScale;

  38

  39         --Finding maximum of input matrix--

  40         --MAX(MA)--

  41         function MAX(MA: Matrix) return Integer is

  42                 Sum: Integer := 0;

  43         begin

  44           for i in MA'Range loop

  45          for j in MA'range loop

  46             if MA(i)(j) > Sum then

  47                                 Sum := MA(I)(J);

  48                         end if;

  49          end loop;

  50       end loop;

  51       return Sum;

  52         end MAX;

  53

  54         --Finding minimum of input matrix--

  55         --MIN(MA)--

  56         function MIN(MA: Matrix) return Integer is

  57                 Sum: Integer := Integer'Last;

  58         begin

  59           for i in MA'Range loop

  60          for j in MA'range loop

  61             if MA(i)(j) < Sum then

  62                                 Sum := MA(I)(J);

  63                         end if;

  64          end loop;

  65       end loop;

  66       return Sum;

  67         end MIN;

  68         

  69

  70    ---MZ = MIN(MA)*MB - MAX(MB)*MA

  71    procedure Func2(MA, MB: in Matrix; MZ: out Matrix) is

  72    begin

  73       MZ := MatrixSub(MatrixScale(MB,MIN(MA)),MatrixScale(MA,MAX(MB)));

  74           exception

  75               when Constraint_Error =>

  76                  Put("Constraint error in Func2");

  77    end Func2;

  78 end Package1_F1.F2;

Source file: ..\package3-f3.ads   Wed Sep 15 20:16:00 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 package Package1_F1.F2.F3 is

  11

  12         function Func3(MB: Matrix; C: Vector) return Vector;

  13         procedure VectorSort(a: in out Vector);

  14         procedure MatrixSort(mA: in out Matrix);

  15         function MatrixMulVector(a: Vector; MB: Matrix) return Vector;

  16

  17 end Package1_F1.F2.F3;

Source file: ..\package3-f3.adb   Wed Sep 15 20:16:00 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 with Ada.Text_IO; use Ada.Text_IO;

  11 package body Package1_F1.F2.F3 is

  12         

  13         procedure VectorSort(a: in out Vector) is separate;

  14

  15    --Matrix Sorting--

  16    --SORT(MA)--

  17    procedure MatrixSort(mA: in out Matrix) is

  18    begin

  19       for i in MA'range loop

  20          VectorSort(mA(i));

  21       end loop;

  22    end MatrixSort;

  23    

  24    --Multiplying matrix with vector--

  25    -- C = A * MB--

  26    function MatrixMulVector(a: Vector; MB: Matrix) return Vector is

  27           C: Vector;

  28           MD: matrix;

  29           Sum: Integer := 0;

  30    begin

  31           for j in MB'range loop

  32                 for i in MB'range loop

  33                         Sum := Sum + MB(i)(j) * A(I);

  34                 end loop;

  35                 C(j) := Sum;

  36                 Sum := 0;

  37           end loop;

  38       return C;

  39    end MatrixMulVector;

  40         

  41    function Func3(MB: Matrix; C: Vector) return Vector is

  42           MG: Matrix; A: Vector;

  43    begin

  44       MG := MB;

  45       MatrixSort(MG);

  46       A := MatrixMulVector(C,mG);

  47    return A;

  48    exception

  49               when Constraint_Error =>

  50                  Put("Constraint error in Func3");

  51                          return A;

  52    end Func3;

  53

  54 end Package1_F1.F2.F3;

Source file: ..\package4-io.ads   Wed Sep 15 20:16:00 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10 package Package1_F1.F2.IO is

  11            --I/O operations

  12    --Vector outpur--

  13    procedure VectorOutput(a: Vector);

  14

  15    ---Matrix output--

  16    procedure MatrixOutput(a: Matrix);

  17

  18    ---Vector input--

  19    procedure VectorInput(a: in out Vector);

  20

  21    ---Matrix input--

  22    procedure MatrixInput(m: in out Matrix);

  23 end Package1_F1.F2.IO;

  24

Source file: ..\package4-io.adb   Wed Sep 15 20:16:00 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10         with Ada.Text_IO; use Ada.Text_IO;

  11         with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

  12         with Ada.IO_Exceptions; use Ada.IO_Exceptions;

  13

  14 package body Package1_F1.F2.IO is

  15         --Vector outpur--

  16    procedure VectorOutput(a: Vector) is

  17    begin

  18       for i in A'range loop

  19          Put(a(i), 5);

  20       end loop;

  21       New_line;

  22    end VectorOutput;

  23

  24    ---Matrix output--

  25    procedure MatrixOutput(a: Matrix) is

  26    begin

  27       for i in A'range loop

  28          for j in A'range loop

  29             Ada.Integer_Text_IO.Put(a(i)(j), 4);

  30          end loop;

  31          New_Line;

  32       end loop;

  33    end MatrixOutput;

  34

  35    ---Vector input--

  36    procedure VectorInput(a: in out Vector) is

  37    begin

  38      for i in A'range loop

  39          loop

  40             begin

  41                     Ada.Integer_Text_IO.Get(a(i));

  42                     exit;

  43                     exception

  44                        when Ada.IO_Exceptions.Data_Error =>

  45                           Put("Input error. Please, try again:");

  46                       Skip_Line;

  47             end;

  48          end loop;

  49       end loop;

  50    end VectorInput;

  51

  52    ---Matrix input--

  53    procedure MatrixInput(m: in out Matrix) is

  54    begin

  55       for i in M'range loop

  56          VectorInput(m(i));

  57       end loop;

  58    end;

  59 end Package1_F1.F2.IO;

  1.  Спецификация пакета вложена в пользовательсую программу, тело находиться в отдельном файле.

Source file: ..\usee   Wed Sep 15 20:23:37 2010

   1 -------------------------------------------------

   2 ---Paralel and distributed computing-------------

   3 -----------Laboratory work #1--------------------

   4 ------Votobyev Vitaliy--IO-83--------------------

   5 --Variant: 1.27, 2.14, 3.18----------------------

   6 --Func1: e = (A*B) - (C*D);----------------------

   7 --Func2: MZ = MIN(MA)*MB - MAX(MB)*MA------------

   8 --Func3: A = SORT(MB) * C.-----------------------

   9 -------------------------------------------------

  10

  11 package Package1_F1 is

  12

  13         N: INteger:=2;

  14    type vector is private;

  15

  16    procedure Func1(a, b, c, d: in Vector; e:out integer);

  17

  18    private

  19                 --Multiplying vectors--

  20                 --c = A * B--

  21                 function VectorMult(a, b: Vector) return integer;

  22         type Vector is array (1..N) of Integer;

  23 end Package1_F1;

  24

  25         with package1_f1,

  26                  package1_f1.F2,        

  27              package1_f1.F2.IO,

  28                  package1_f1.F2.F3;

  29         use package1_f1,

  30                  package1_f1.F2,        

  31              package1_f1.F2.IO,

  32                  package1_f1.F2.F3;

  33         with Ada.Text_IO; use Ada.Text_IO;

  34         with Ada.Integer_Text_IO; use Ada.Integer_Text_IO;

  35         

  36 procedure Begnn is

  37    A, B, C, D, F: Vector;

  38    MA, MB, MZ, MS: Matrix;

  39    e:integer;

  40 begin

  41    --Func 1

  42    Put_Line("Func 1");

  43    Put_Line("Input vector A");

  44    VectorInput(A);

  45    Put_Line("Input vector B");

  46    VectorInput(B);

  47    Put_Line("Input vector C");

  48    VectorInput(C);

  49    Put_Line("Input vector D");

  50    VectorInput(D);

  51    Func1(A, B, C, D, e);

  52    Put_Line("Func 1 result");

  53    Ada.Integer_Text_IO.Put(e);

  54    New_Line;

  55

  56    --Func 2

  57    Put_Line("Func2");

  58    Put_Line("Input matrix MA");

  59    MatrixInput(MA);

  60    Put_Line("Input matrix MB");

  61    MatrixInput(MB);

  62    Func2(MA, MB, MZ);

  63    Put_Line("Func 2 result");

  64    MatrixOutput(MZ);

  65

  66    --Func 3

  67    Put_Line("Func3");

  68    Put_Line("Input matrix MB");

  69    MatrixInput(MS);

  70    Put_Line("Input vector C");

  71    VectorInput(F);

  72    A := Func3(MS, F);

  73    Put_Line("Func3 result");

  74    VectorOutput(A);

  75 end Begnn;


 

А также другие работы, которые могут Вас заинтересовать

29787. Принцип формирования линейного спектра сигналов аппаратуры П-327-2 по структурной схеме 72 KB
  Эксплуатационные измерения основных параметров кабелей. Измерение параметров полевых линий связи по постоянному и переменному току Эксплуатационные измерения линий связи проводятся с целью установления соответствия их параметров нормам а так же определения характера и места повреждения в случае аварии на линии. Эксплуатационные измерения производятся при:...
29788. Назначение и ТТХ основных средств механизации прокладки полевых кабелей связи 250.5 KB
  К ним относятся катушки кабельные барабаны станки комплект П280 для намотки кабеля шесты для подвески кабеля шанцевый инструмент.8 предназначены для прокладки кабелей дальней связи П296 и П270 а также кабеля П272 по поверхности земли и в грунт с барабанов; заглубления в грунт кабеля предварительно проложенного по поверхности земли; извлечения кабеля из грунта или снятия кабеля проложенного по поверхности земли. Глубина прокладки кабеля до 50 см от поверхности земли.; скорость прокладки кабеля 4 6 км ч; скорость снятия...
29789. Назначение и ТТХ измерительного прибора П-321М 103.5 KB
  Сигнал с передающего телеграфного аппарата ПЕР. В передатчике имеются генератор средняя несущая частота которого выбрана равной 3150 Гц и модулятор изменяющий частоту этого генератора на 55 гц или минус 55 Гц в зависимости от полярности сигнала на входе передатчика. Модулированный по частоте сигнал с уровнем 0 Нп подается на разделительные гнезда ТГФ блока фильтров. сигнал подается на полосовой фильтр передачи ПФ ПЕР.
29790. Классификация систем передачи информации (СПИ) по среде распространения сигналов. Структурная схема многоканальной системы передачи информации 61.5 KB
  Классификация систем передачи информации СПИ по среде распространения сигналов. Структурная схема многоканальной системы передачи информации. Классификация систем передачи информации по среде распространения сигналов. Многоканальная система передачи представляет собой сложный комплекс включающий линейные и станционные устройства предназначенные для получения определенного числа каналов на заданную дальность.
29791. Линейные методы разделения каналов. Принцип формирования линейного спектра в аппаратуре с частотным разделением каналов (ЧРК). Структурная схема 8.31 MB
  Отличительными признаками канальных сигналов в этой системе передачи являются разные неперекрывающиеся полосы частот которые занимают эти сигналы. Такое различие позволяет разделить канальные сигналы в приемной части аппаратуры с помощью электрических фильтров. Первичные информационные сигналы Cit могут быть различного вида. Другие сигналы характеризуются более широким спектром.
29792. Основные характеристики телефонного канала (канала тональной частоты) 446 KB
  Основные характеристики телефонного канала канала тональной частоты.1718 Остаточное затухание канала ТЧ r разность между уровнем сигнала измерительного генератора p0 с Rr = 600 Ом в согласованной нагрузке и уровнем и уровнем сигнала на выходе канала p2 нагруженного на сопротивление Rн = 600 Ом. Частотная характеристика остаточного затухания канала ТЧ измеряется или встроенными приборами или с помощью комплектов П321 П322 и П326.2 Амплитудная характеристика канала ТЧ называется зависимость его остаточного затухания от уровня...
29793. Классификация телефонных аппаратов и их схем. Мостовая противоместная схема 229 KB
  Тактикотехнические характеристики Аппаратура Азур–1 является двухпроводной двухполосной системой передачи с ЧРК обеспечивающей получение одного канала ТЧ в диапазоне частот 43 – 117 кГц. В режиме А в линию передается нижняя полоса частот линейного спектра 43 – 74 кГц а принимается верхняя полоса частот линейного спектра 86 – 117 кГц. В режиме Б в линию передается верхняя полоса частот линейного спектра а принимается нижняя. Наименование характеристики Значение Диапазон передаваемых частот кГц 412 Уровень передачи канала на выходе...
29794. Классификация полевых телефонных аппаратов. Назначение и ТТХ телефонного аппарата ТА-57. Варианты включения ТА-57 в линию 122 KB
  Общая структурная схема оконечной аппаратуры Тракт передачи На входе тракта передачи установлен электронный ключ Кл1 обеспечивающий подключение к тракту тока частоты 21 кГц при получении соответствующего сигнала. Он при помощи тока несущей частоты 136 кГц осуществляет перенос спектра тональной частоты 03 34 кГц в спектр 1363 1394 кГц. выделяющий полосу частот 1363 1394 кГц. В зависимости от режима работы станции А или Б с помощью токов несущих частот 132 кГц или 148 кГц соответственно осуществляется формирование линейного...
29795. Цепи посылки и приема вызова в режимах МБ и ЦБ в ТА-57 по принципиальной схеме. 886.5 KB
  Цепи посылки и приема вызова в режимах МБ и ЦБ в ТА57 по принципиальной схеме. Прием вызова Прием вызова производится на звонок НА который как при работе в системе МБ так и при работе в системе ЦБ постоянно включен в линию по следующей цепи: Рис. Цепь посылки вызова на РТС ЦБ. Источник индукторного вызова провод линии клемма Л1 вывод индуктора GJ в шунтирующий контакт индуктора GJ ШК21 вывод индуктора GJ обмотка звонка НА конденсатор С11 клемма Л2 провод линии в источник индукторного вызова.