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;


 

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

34096. Общая совместная собственность на земельные участки 26.5 KB
  Общая совместная собственность на земельные участки. Общая собственность на земельные участки Существует 2 вида: долевая; общая совместная. Общая долевая собственность возникает при попадании двум и более лицам неделимого участка в случаях предусмотренных в законе или договоре. Совместная собственность возникает в следующих случаях прямо предусмотренных законами: общая собственность супругов если брачным контрактом не предусмотрено иное; возникает собственность крестьянскофермерских хозяйств если соглашением между членами...
34097. Изъятие (выкуп) земельных участков для государственных и муниципальных нужд: основания, порядок 62.5 KB
  Следует иметь в виду что предполагаемое назначение объекта должно соответствовать полномочиям органа принимающего решение об изъятии земельного участка. Например решение об изъятии земельного участка для целей связанных с защитой Государственной границы России может быть принято только органами государственной власти Российской Федерации согласно п. Данное обстоятельство по сути означает что в случае возникновения судебного спора орган принявший решение об изъятии земельного участка должен будет представить суду убедительные...
34098. Право ограниченного пользования чужим земельным участком (сервитут). Обременения земельного участка 33 KB
  Обременения земельного участка. Однако возможно рассмотрение сервитута в качестве обременения земельного участка.С точки зрения собственника земельного участка который соседи используют для прохода к водоему сервитут является ограничением его права. Публичные сервитуты могут устанавливаться для:1 прохода или проезда через земельный участок;2 использования земельного участка для ремонта коммунальных инженерных электрических и других линий и сетей а также транспортной инфраструктуры;3 размещения на участке межевых и геодезических знаков...
34099. Право пользования земельным участком собственником недвижимости. Последствия утраты собственником недвижимости права пользования земельным участком 93 KB
  В случае когда земельные участки находящиеся в государственной или муниципальной собственности предоставляются за плату наряду с решением органа государственной власти или местного самоуправления о предоставлении земельного участка юридический состав образует также договор куплипродажи земельного участка. При наследовании земельного участка по наследству переходят также находящиеся в границах этого земельного участка поверхностный почвенный слой замкнутые водоемы находящиеся на нем лес и растения. Раздел земельного участка...
34100. Права и обязанности субъектов, использующих землю. Защита их прав 52.5 KB
  Взаимосвязанные между собой права и обязанности субъектов земельных правоотношений составляют суть содержания любого правоотношения. Права субъектов земельных правоотношений можно классифицировать на две основные группы: 1. Право на действия субъектов земельных правоотношений можно подразделить на: а виды действий. Право на бездействие субъектов земельных правоотношений можно подразделить на: а полное бездействие.
34101. онятие и особенности ответственности в области использования и охраны земель 25.5 KB
  Ответственность за земельные правонарушения. Ответственность нужно понимать в двояком смысле: юридическая ответственность как правовой институт в объективном смысле это совокупность юридических норм устанавливающих неблагоприятные последствия за совершение правонарушения в области использования и охраны земель и порядок их возложения на правонарушителя; в субъективном смысле юридическая ответственность это обязанность лица виновного в совершении правонарушения претерпеть неблагоприятные последствия предусмотренные законом...
34102. Земельно-правовая ответственность. Дисциплинарная ответственность в области использования и охраны земель 29 KB
  Специфической санкцией земельноправовой ответственности является земельного участка у собственника либо принудительное прекращение прав на земельный участок. 45 и 47 ЗК орган государственного земельного контроля налагает административное взыскание и одновременно выносит предупреждение о необходимости устранения нарушения; в этом предупреждении указывается допущенное правонарушение его содержание суть устанавливается срок для устранения допущенного правонарушения; разъясняются права земледельца землепользователя в случае...
34103. Гражданско-правовая ответственность за правонарушения в области использования и охраны земель 31.5 KB
  И хотя в настоящее время имущественная ответственность еще не нашла своего подобающего места среди других форм юридической ответственности будущее за ней неоспоримо так как ухудшение качества земель и всей окружающей среды влечет как правило имущественные последствия предполагающие возможность возмещения вреда восстановления земель и нарушенных экологических систем. Гражданским законодательством предусматривается ряд правил выработанных за тысячелетия: вред причиненный личности организации или имуществу подлежит возмещению в...
34104. Административная ответственность за правонарушения в области использования и охраны земель 37 KB
  АДМИНИСТРАТИВНАЯ ОТВЕТСТВЕННОСТЬ Согласно Кодексу РФ об административных правонарушениях КоАП от 30 декабря 2001 г. Кроме того в официальных кругах стала преобладать концепция отмирания социалистического государства и уменьшения административных принудительных средств воздействия на правонарушителей необходимости перехода к добровольному исполнению своих обязанностей перед обществом повышения моральных стимулов. Основным органом наложения административных взысканий стала административная комиссия при исполнительных комитетах...