-- put et get
with Ada.Text_Io;
use Ada.Text_Io;
procedure Exo02a is
-- exo 2a
subtype T_Couleur_Primaire is Natural range 0..255;
type T_Couleur is record
Red : T_Couleur_Primaire;
Green : T_Couleur_Primaire;
Blue : T_Couleur_Primaire;
end record;
-- exo 2b
White : constant T_Couleur := (Red => 255, Green => 255, Blue => 255);
Black : constant T_Couleur := (0, 0, 0);
Red : constant T_Couleur := (255, 0, 0);
Green : constant T_Couleur := (0, 255, 0);
Blue : constant T_Couleur := (0, 0, 255);
Orange: constant T_Couleur := (255, 128, 0);
-- exo 2c
function "<"(C1, C2 : T_Couleur) return boolean is
begin
return (C1.Red < C2.Red)
or (C1.Red = C2.Red and C1.Green < C2.Green)
or (C1.Red = C2.Red and C1.Green = C2.Green and C1.Red < C2.Red);
end;
-- exo 2d
type T_Compare is (Less, Equal, Greater);
function Compare(C1, C2 : T_Couleur) return T_Compare is
begin
if C1 = C2 then
return Equal;
elsif C1 < C2 then
return Less;
else
return Greater;
end if;
end;
begin
Put("Red < Red : ");
Put_Line(Boolean'Image ( Red < Red));
Put("Red < White : ");
Put_Line(Boolean'Image ( Red < White));
Put("White < Red : ");
Put_Line(Boolean'Image ( White < Red));
----------------------------------------------
Put("White ");
Put(T_Compare'Image(Compare(White, White)));
Put_Line(" White");
Put("Red ");
Put(T_Compare'Image(Compare(Red, White)));
Put_Line(" White");
Put("White ");
Put(T_Compare'Image(Compare(White, Red)));
Put_Line(" Red");
end;