- 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