![[Indekso]](bildoj/indekso.gif)
VAR
A,B,C: ARO EL entjera; n,x: entjera
---------------+------------------
Nocio | Paskale
---------------+------------------
vakuo ! A := []
unuelementa aro! A := [x+5]
arkonstruilo !B := [1..n,15,x-4]
aparteno ! x+5 EN A
subaro ! A<B A<=C
superaro ! B>A C>=A
komunaĵo ! C := A*B
kunaĵo ! C := A+B
diferenco ! C := A-B
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 strikte 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
![[Indekso]](bildoj/indekso.gif)
![[Instrukcio]](bildoj/kovrilo.gif)