http://www.adaconcept.com/programs/osszetett_tipusok.adb
--Rotter Gyorgy
--Nehagy tomb es rekord tipus bemutatasa. A kesobbi programok soran ezeket az ismereteket meg bovitjuk. Ezek csak az alapok.
with Ada.Text_IO;
procedure osszetett_tipusok is
------------------------------[alap tipuskonstrukcio]-----------------------
type DefinitTombTipus is array(1..10) of integer; -- 1-tol 10-ig indexelt egeszeket tartalmazo tomb tipus (definit, mert ismerjuk az indexhatart (es azt a tipust is, amit tartalaz))
type IndefinitTombTipus is array(integer range <>) of integer; -- indefinit, mert nem ismerjuk a pontos indexhatarokat, csak azt, hogy egeszekkel van indexelve, a pontos hatarokat deklaralaskor kell megadni!
type KetDimenziosTombTipus is array(integer range <>) of IndefinitTombTipus(1..7); --(olyan indefinit tombtipus, melynek minden eleme 7-elemu tomb)
type MatrixTipus is array(integer range <>,integer range <>) of integer;
--A rekordok a nyelv kiemelkedoen fontos tipusai!
--ket egesz tipusu valtozot tartalmazo rekord tipus
--A rekordok hasznalatat kesobb reszletezzuk.
type KoordinataTipus is record
x:integer;
y:integer;
end record;
type DiszkriminansosRekord(meret:natural) is record
ertekek:IndefinitTombTipus(1..meret);
mutato:natural:=0;
end record;
---------------------------------[valtozok]-------------------------------
t:DefinitTombTipus:=(others=>7); --ertekadas minden tombelembek (aggregatumok...)
hetelemutomb:IndefinitTombTipus(1..7):=(1|3=>1, 2=>2, 4..5=>4, others=>7); --ertekek: (1,2,1,4,4,7,7)
--indexek: 1 2 3 4 5 6 7
tomboktombje:KetDimenziosTombTipus(1..7):=(others=>(others=>77));
matrix:MatrixTipus(1..7,1..7):=(4=>(others=>3), others=>(others=>7));
pont:KoordinataTipus:=(1,2);
-- tomb:DiszkriminansosRekord(5); --deklaracio
szam:integer;
begin
Ada.Text_IO.Put_Line("Program indul");
for i in matrix'range(1) loop --matrix'range(1) = matrix'range = matrix'first..matrix'last
for j in matrix'first(2)..matrix'last(2) loop
Ada.Text_IO.put(integer'Image( matrix(i,j) )); --figyeljuk meg az indexelest!
end loop;
Ada.Text_IO.new_line;
end loop;
szam:=matrix(3,4); --figyeljuk meg az indexelest!
szam:=tomboktombje(3)(4); --figyeljuk meg az indexelest! a tomboktombje(3) az egy tomb
--Megjegyzés: azonos hosszusagu tombok is ertekul adhatoak egymasnak a := -vel (gondoljunk a stringekre = karaktertomb) hasonloan a &...
Ada.Text_IO.Put_Line("Program vege");
end osszetett_tipusok;