

 
 
 
- Aroperacioj 
 - Genera programpeco en Ada 
 
 
Estu VAR A,B,C: ARO EL entjera; n,x: entjera; tiam oni povas 
fari jenan tabelon: 
 
  
GENERIC --komenciĝas la interfaca peco 
   TYPE universo IS (<>);--formala parametro: numerebla tipo 
 
PACKAGE aroj IS -- sekvas specifoj de la eksportataj objektoj 
 
   TYPE ara IS PRIVATE; -- la uzulo ne atentu la realigon 
   vakuo: CONSTANT ara; -- eksporto de kostanto artipa 
 
   FUNCTION anas(x: universo; a: ara) RETURN BOOLEAN; -- x EN a 
   FUNCTION "<="(a,b: ara) RETURN BOOLEAN; -- a partas en b 
   FUNCTION "<"(a,b: ara) RETURN BOOLEAN;  -- a rigore partas en b 
   FUNCTION "+"(a,b: ara) RETURN ara; -- kunaĵo de 2 aroj 
   FUNCTION "-"(a,b: ara) RETURN ara; -- komplemento 
   FUNCTION "+"(a: ara; x: universo) RETURN ara; -- anigo, arkremento 
   FUNCTION "-"(a: ara; x: universo) RETURN ara; -- eksigu anon 
   FUNCTION "*"(a,b: ara) RETURN ara; -- komunaĵo de 2 aroj 
 
   ---- kaj tiel plu ... 
 
PRIVATE        -- sufloro por la tradukilo: -- 
 
   TYPE ara IS ARRAY (universo) OF BOOLEAN;  -- bitvektoro 
   vakuo: CONSTANT ara := ara'(OTHERS =› FALSE);  -- plena nulo 
 
END aroj; ----------- finiĝis la interfaco 
 
 
 
PACKAGE aroj IS -- makroa skemo pri realigo de la funkcioj: 
 
   FUNCTION anas(x: universo; a: ara) RETURN BOOLEAN IS 
      BEGIN RETURN a(x); 
      END anas; 
 
   FUNCTION "+"(a,b: ara) RETURN ara IS 
      BEGIN RETURN a OR b; 
      END "+"; 
 
   FUNCTION "+"(a: ara; x: universo) RETURN ara IS 
         lab: ara := a; -- loka labora variablo, komencvalorizo 
      BEGIN lab(x):=TRUE; RETURN lab; 
      END "+"; 
 
   FUNCTION "-"(a,b: ara) RETURN ara IS 
      BEGIN RETURN a AND (NOT b); 
      END "-"; 
 
   FUNCTION "-"(a: ara; x: universo) RETURN ara IS 
         lab: ara := a; 
      BEGIN a(x):=FALSE; RETURN lab; 
      END "-"; 
 
   FUNCTION "*"(a,b: ara) RETURN ara IS 
      BEGIN RETURN a AND b; 
      END "*"; 
 
   FUNCTION "<="(a,b: ara) RETURN BOLEAN IS 
      BEGIN RETURN (a AND b)=a;      -- a<=b SSE a+b=a 
      END "<="; 
 
   FUNCTION "<"(a,b: ara) RETURN BOOLEAN IS 
         lab: ara := (a AND b);      --  a<b SSE (a+b=a)&a≠b): 
      BEGIN RETURN (lab = a) AND (lab /= b); 
      END "<"; 
 
   ---- kaj tiel plu ... 
 
END aroj;   --  finiĝis la realigo