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;


 

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

22255. Черепно-мозговая травма (ЧМТ) 48 KB
  Изучение расстройств дыхания при тяжелой ЧМТ важно прежде всего потому что развиваясь в остром периоде травмы дыхательная недостаточность ДН не только усугубляет тяжесть состояния больных но и является одной из причин летального исхода. Велико социальное значение ЧМТ. Оно обусловлено: преимущественным поражением лиц в возрасте до 50ти лет наиболее активных в социальном и трудовом отношении; как причина смертности и инвалидности у лиц молодого возраста ЧМТ опережает сердечнососудистые и онкологические заболевания; 3 полное...
22256. АНАТОМИЯ, КЛИНИЧЕСКАЯ ФИЗИОЛОГИЯ ЦНС 51 KB
  Содержимое супратенториальной части представлено большими полушариями головного мозга которые функционально чрезвычайно важны. Важную роль во вторичном повреждении головного мозга отводят фальксу и вырезке тенториума что связано с дислокацией и вклинением структур мозга более подробно. даление при увеличении лобной доли вклинение под фалькс результат: cingulate gyrus ишемия в бассейне ПМА вырезка намета мозжечка стволовые отделы сознание ножки мозга с чувствительными и двигательными путями глазодвигательный нерв проксимальный...
22257. АНЕСТЕЗИОЛОГИЧЕСКОЕ ОБЕСПЕЧЕНИЕ У БОЛЬНЫХ С ЦЕРЕБРАЛЬНЫМИ АРТЕРИАЛЬНЫМИ АНЕВРИЗМАМИ 115.5 KB
  Эта патология имеет врожденную этиологию однако аневризмы могут возникать и как приобретенная патология развиваясь вторично при дегенеративных процессах; часто встречаются у гипертоников [II] 21 больных с церебральными артериальными аневризмами АА имеют более чем одну аневризму [7]. Примерно 1 3 больных погибают или остаются глубокими инвалидами после первого же кровоизлияния а из оставшихся больных только 1 3 остаются функционально полноценными [9]. предложили клиническую систему градации состояния больных с САК.
22258. ПРИНЦИПЫ ИНТЕНСИВНОЙ ТЕРАПИИ ПРИ ОСТРЫХ СУБАРАХНОИДАЛЬНЫХ КРОВОИЗЛИЯНИЯХ НЕТРАВМАТИЧЕСКОЙ ЭТИОЛОГИИ 127 KB
  Cerebral arterial spasm: a controlled trial of nimodipine in patients with subarachnoid hemorrhage. Clinical vasospasm after subarachnoid hemorrhage: response to hypervolemic hemodilution and arterial hypertension. Intracerebral hemorrhage more than twice as common as subarachnoid hemorrhage. Aspects of the medical management in aneurysmal subarachnoid hemorrhage.
22259. КОРРЕКЦИЯ АРТЕРИАЛЬНОЙ ГИПЕРТЕНЗИИ В ПРАКТИКЕ ИНТЕНСИВНОЙ ТЕРАПИИ БОЛЬНЫХ С ЧЕРЕПНО-МОЗГОВОЙ ТРАВМОЙ И СОСУДИСТЫМИ ЗАБОЛЕВАНИЯМИ ГОЛОВНОГО МОЗГА 73.5 KB
  Повышенное АД традиционно считается неблагоприятным фактором для прогноза заболеваний головного мозга что объясняется несколькими причинами. Кроме того ряд авторов рассматривают артериальную гипертензию как пусковой фактор вазогенного отека мозга изза развития феномена роскошной перфузии . Эти исследователи предполагают что избыточный кровоток в церебральных сосудах может приводить к транскапиллярному переходу жидкой части крови в интерстициальное пространство развитию отека и дислокации мозга [2122].
22260. Лечение постперфузионной энцефалопатии 26 KB
  У каждого больного после искусственного кровообращения страдает церебральная ауторегуляция и происходит ишемия и отек головного мозга.В первые пять суток после развития потери сознания или судорог терапия должна быть направлена на поддержание нормального давления крайне нежелательна и даже губительна гипертензия и на максимально возможное подавление функциональной активности головного мозга. Падение ликворного давления на 34 сутки может являться результатом вклинения ствола мозга и декомпенсации отека.
22261. МОЗГОВОЙ КРОВОТОК 66.5 KB
  Торакальная и люмбальная порции спинного мозга не имеют в такой степени расширенного кровотока. Цереброваскулярное сосудистое русло постоянно находится под влиянием определенного количества физических и химических стимулов которые алаптируют калибр мозговых сосудов потребностям различных отделов головного мозга в зависимости от их функциональной активности. Конечной целью присходящих процессов яваляется: поддержание и быстрое изменение локального МК в зависимости от метаболической потребности различных отделов головного мозга; обеспечение...
22262. ИНФЕКЦИОННЫЕ БОЛЕЗНИ (ИБ) 43.5 KB
  Легкая форма гриппа характеризуется острым катаром верхних дыхательных путей. Эта форма длится несколько дней и завершается полным выздоровлением. Тяжелая форма гриппа имеет две разновидности: первая связана с резкой интоксикацией вторая – легочными осложнениями при присоединении вторичной инфекции. Папулопустулезная форма характеризуется появлением на коже сыпи в виде узелков папула и гнойничков пустула на лице голове шее груди спине.
22263. КИШЕЧНЫЕ ИНФЕКЦИИ (КИ) 40.5 KB
  ДИЗЕНТЕРИЯ ШИГЕЛЛЕЗ – острое кишечное инфекционное заболевание с поражением толстой кишки и признаками интоксикации антропоноз. Шигеллы размножаются в энтероцитах толстой кишки что ведет к некрозу клеток. Местные изменения развиваются в слизистой толстой кишки в основном в прямой и сигмовидной что проявляется дизентерийным колитом. Просвет кишки сужен.