home *** CD-ROM | disk | FTP | other *** search
- -- Chapter 28 - Program 4
- -- Constrained array generic element
- generic
- type SUBSCRIPT is (<>);
- type FLOAT_TYPE is digits <>;
- type CONSTRAINED_ARRAY is array (SUBSCRIPT) of FLOAT_TYPE;
- procedure SumArray(Input_Array : CONSTRAINED_ARRAY;
- Sum_Of_Elements : in out FLOAT_TYPE);
-
- procedure SumArray(Input_Array : CONSTRAINED_ARRAY;
- Sum_Of_Elements : in out FLOAT_TYPE) is
- begin
- Sum_Of_Elements := 0.0;
- for Index in Input_Array'FIRST..Input_Array'LAST loop
- Sum_Of_Elements := Sum_Of_Elements + Input_Array(Index);
- end loop;
- end SumArray;
-
-
-
- -- Unconstrained array generic element
- generic
- type MY_TYPE is range <>;
- type MY_ARRAY is array (POSITIVE range <>) of MY_TYPE;
- function AddArray(Input_Array : MY_ARRAY) return MY_TYPE;
-
- function AddArray(Input_Array : MY_ARRAY) return MY_TYPE is
- Sum_Of_Elements : MY_TYPE := 0;
- begin
- for Index in Input_Array'FIRST..Input_Array'LAST loop
- Sum_Of_Elements := Sum_Of_Elements + Input_Array(Index);
- end loop;
- return Sum_Of_Elements;
- end AddArray;
-
-
-
-
-
- with Text_IO, SumArray, AddArray;
- use Text_IO;
-
- procedure ArrayGen is
-
- type LIMIT_RANGE is new INTEGER range 1..5;
- type MY_FLOAT is new FLOAT digits 5;
- type LITTLE_FLOAT is array(LIMIT_RANGE) of MY_FLOAT;
-
- procedure Little_Sum is new
- SumArray(LIMIT_RANGE, MY_FLOAT, LITTLE_FLOAT);
-
- Total : MY_FLOAT;
- My_Data : LITTLE_FLOAT := (1.0, 2.2, 4.3, 3.1, 5.4);
-
- type FLEX_ARRAY is array(POSITIVE range <>) of INTEGER;
- Big_Data : FLEX_ARRAY(1..5) := (13, 12, 17, 33, 41);
- More_Data : FLEX_ARRAY(12..14) := (34, 101, 56);
- Result : INTEGER;
-
- function My_Add is new AddArray(INTEGER, FLEX_ARRAY);
-
- begin
-
- Little_Sum(My_Data,Total);
- Little_Sum((2.4, 1.3, 5.2, 4.7, 0.1),Total);
-
- Result := My_Add(Big_Data);
- Result := My_Add(More_Data);
-
- end ArrayGen;
-
-
-
-
- -- Result of execution
-
- -- (No output from this program)
-
-