TYPE (* регистры машины *)
Register* = RECORD
ind1* : SHORTINT;
ind2* : SHORTINT;
int* : LONGINT;
result* : LONGINT;
END;
TYPE (* процедурные типы для переключателей процедур *)
ProcType1* = PROCEDURE (i: SHORTINT; j: SHORTINT):
LONGINT;
ProcType2* = PROCEDURE (i: SHORTINT): LONGINT;
VAR (* абстрактные процедуры для разных вариантов *)
PascalTriangle* : ProcType1;
Fibonacci* : ProcType2;
CONST
MaxPasINDEX = 31; (* 0..31 *)
MaxFibINDEX = 45; (* 0..45 *)
MaxFactINDEX = 12; (* 0..12 *)
PasCOUNT = ((MaxPasINDEX DIV 2)-1) * ((MaxPasINDEX-1)
DIV 2); (* 210 *)
FibCOUNT = 32;
VAR
r* : Register;
primeDesc: PrimeDesc;
isPrime : POINTER TO ARRAY OF SET;
pas : ARRAY PasCOUNT OF LONGINT;
fib : ARRAY FibCOUNT OF LONGINT;