with Ada.Text_IO;
procedure Typen is
type ZIFFER is ('0', '1');
z: ZIFFER;
-- ganze Zahlen
-- typen können auf jeder Maschine andere größe haben
-- darum selbst definieren wie weit er gehen soll.
type SEITENZAHL is range 1..10000;
type ZWEI_ZIFFER is mod 100; -- von 0 bis 99, entspricht unsigned
s: SEITENZAHL;
-- information in welchem Wertebereich ist unbedingt notwendig
-- div ganzzahl ergebnis, /
--Gleitkommazahlen
-- vordefiniert SHORT_FLOAT, FLOAT und LONG_FLOAT
f: FLOAT;
type MY_FLOAT is digits 8 range -1.0..1.0E30;
-- Festkommazahlen
type SPANNUNG is delta 0.1 range 0.0..10000.0; -- es darf genauer gerechnet werden
type PREIS is delta 0.01 digits 5; -- so muss gerechnet werden!
-- c: CARDINAL;
type TAG is (MO, DI, SA, SO);
type VEKTOR is array (1..5) of INTEGER;
-- type MATRIX is array (1.. K*J, FUNC(N)..FUNC(N*M)) of FLOAT;
type STUNDENTAFEL is array (TAG range MO..SA, 1..8) of INTEGER;
-- grenzen nicht statisch bestimmbar!
-- MATRIX'FIRST(i) untere Grenze des i-ten Index
-- MATRIX'LAST(i) obere Grenze des i-ten Index
-- unspezifizierte Grenzen
-- <> Box, unspezifizierter Wert (offen)
type VECTOR is array (INTEGER range <>) of FLOAT;
-- A_VECTOR: VECTOR (1..20);
-- damit ist es möglich typenkompatible vectoren mit unterschiedlichen bereichen
-- zu machen.
-- Verbundtypen
type DATUM is record
TAG: INTEGER range 1.. 365;
JAHR: INTEGER range 1970..2200;
end RECORD;
begin
z:='0';
f:=20.0;
z:= ZIFFER'FIRST;
s:= 400;
-- FLOAT'DIGITS; -- anzahl genaue Dezimalstellen
-- c:= PREIS'BITS;
end Typen;