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;


 

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

22576. Мозочок 36.5 KB
  Оскільки основною функцією мозочка є координація рухів то він добре розвинутий у риб і птахів адже динаміка рухів у водному і повітряному середовищах вимагає чіткої праці м'язів для швидкого маневрування при літанні і плаванні. У амфібій і рептилій які пересуваються по замлі і мають як правило низько розташований центр тяжіння відбувається певна редукція мозочка. У людини з її вертикальним положенням тіла розміри і значення мозочка значо зростають. Взаємодія мозочка з іншими структурами мозку здійснюється за допомогою трьох пар ніжок.
22577. Порушення функціонування мозочка 27.5 KB
  Перш за все наслідки уражень мозочка залежать від еволюційного положення виду тварини. Видалення мозочка у амфібій рептилій і птахів викликає складніші розладнання рухової функції. У ссавців видалення мозочка крім вищезазначених симптомів порушення рівноваги і тонусу скелетної мускулатури призводить до розладнання регуляції також довільних рухів.
22578. Середній мозок 32 KB
  Об єм функцій середнього мозку різний у різних класів хребетних тварин. Цим середній мозок істотно відрізняється від заднього мозку функція якого приблизно однакова у всіх хребетних тварин і змінюється в процесі еволюції скоріш кількісно ніж якісно.Провідникова функція СМ визначаеться наявністтю в ньому висхідних і низхідних провідних шляхів багато з яких проходять через ніжки мозку.
22579. Проміжний мозок 35 KB
  У таламусі налічують до 40 різноманітних ядер об'єднаних у цілісний морфофункціональний комплекс який складним чином взаємодіє з неокортексом базальними гангліями і структурами лімбічної системи. Звичайно розрізняють шість груп ядер таламуса: передню ядра середньої лінії медіальну вентролате ральну задню і претектальну. Проекційні або перемикальні ядра відносяться до специфічних ядер які організовані за топічним принципом. Серед основних проекційних ядер таламуса слід виділити вентробазальне ядро яке є специфічним ядром...
22580. Базальні ганглії 30.5 KB
  Це свідчить про те що функції неостріатума не можна звести лише до регуляції рухів. Та все ж таки базальні ганглії перш за все пов'язані з регуляцією рухової функції організму особливо початку і припинення повільних рухів. Акінезія або дефіцит рухів. Цей симптом виявляється у скованості рухів нерухомій позі та маскоподібному обличчі з немигаючим виразом очей.
22581. Лімбічна система мозку 29 KB
  Найважливішими структурами лімбічної системи є мигдалевидний комплекс МК гіпокамп і прозора перетинка септум . Для лімбічної системи дуже характерні численні нервові ланцюги наприклад коло Папеца які об'єднують у замкнену мережу різні її утвори що полегшує виконання ними складних інтегративних функцій рис. Інтегративні функції лімбічної системи . Вона забезпечується численними зв'язками різних утворів лімбічної системи з іншими відділами мозку.
22582. Принципи організації аналізаторів 20 KB
  топічний кіркові проекції побудовані таким чином що площа цієї проекції пропорційна щільності рецепторів; багаторівневості можливость спеціалізації різних рівнів ЦНС на переробці окремих видів І що забезпечує більш швидке реагування на прості сигнали що аналізуються на проміжних рівнях; багатоканльності.
22583. Механізм збудження рецепторів 24 KB
  до первинночутливих відносяться тканинні рецептори пропріорецептори терморецептори і нюхові клітини. Первинночутливі рецептори є універсальним типом рецепторних елементів у безхребетних. Вторинночутл є зоровий слуховий вестибулярний рецептори.
22584. Принцип кодування інформації в нервовій системі 26 KB
  На рівні рецепторів відбувається важливі етапи переробки інформації: отримання прийом сигналів трансформація цих різнорідних по своїй природі сигналів в єдиний по своїй природі процес нервовий імпульс. Ця автономність дає змогу організму що володіє спеціальними механізмами відбору запамятовування збереження і відтворення інформації знову звертатись до зафіксоваої а памяті інформації відновлювати минулі подіїзовнішнього світу у вигляді нервових імпульсів і знову практично в будь який відрізок часу використати в переробці нову...